Facebook
From Sweltering Cassowary, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 139
  1.  public class UserService : IUserService
  2.     {
  3.         private List<User> _users = new List<User>
  4.         {
  5.             new User { Id = 1, FirstName = "Test", LastName = "User", Username = "test", Password = "test" }
  6.         };
  7.  
  8.         private readonly AppSettings _appSettings;
  9.  
  10.         public UserService(IOptions<AppSettings> appSettings)
  11.         {
  12.             _appSettings = appSettings.Value;
  13.         }
  14.  
  15.         public User Authenticate(string username, string password)
  16.         {
  17.             var user = _users.SingleOrDefault(x => x.Username == username && x.Password == password);
  18.  
  19.             // return null if user not found
  20.             if (user == null)
  21.                 return null;
  22.  
  23.             // authentication successful so generate jwt token
  24.             var tokenHandler = new JwtSecurityTokenHandler();
  25.             var key = Encoding.ASCII.GetBytes(_appSettings.Secret);
  26.             var tokenDescriptor = new SecurityTokenDescriptor
  27.             {
  28.                 Subject = new ClaimsIdentity(new Claim[]
  29.                 {
  30.                     new Claim(ClaimTypes.Name, user.Id.ToString()),
  31.                     new Claim("LastName", user.FirstName),
  32.                 }),
  33.                 Expires = DateTime.UtcNow.AddDays(7),
  34.                 SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
  35.             };
  36.             var token = tokenHandler.CreateToken(tokenDescriptor);
  37.             user.Token = tokenHandler.WriteToken(token);
  38.  
  39.             // remove password before returning
  40.             user.Password = null;
  41.  
  42.             return user;
  43.         }
  44.  
  45.         public IEnumerable<User> GetAll()
  46.         {
  47.             // return users without passwords
  48.             return _users.Select(x => {
  49.                 x.Password = null;
  50.                 return x;
  51.             });
  52.         }
  53.     }
  54.