Пример #1
0
        public User Authenticate(string email, string password)
        {
            try {
                string hashedPassword = PasswordEncryption.ComputeSha256Hash(password);

                var user = _context.User.SingleOrDefault(u => u.Email == email && u.Password == hashedPassword);

                if (user == null)
                {
                    return(null);
                }

                var tokenHandler    = new JwtSecurityTokenHandler();
                var key             = Encoding.ASCII.GetBytes(_appSettings.Secret);
                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new Claim[]
                    {
                        new Claim("Id", user.Id.ToString())
                    }),
                    Expires            = DateTime.UtcNow.AddDays(7),
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                };
                var token = tokenHandler.CreateToken(tokenDescriptor);
                user.Token = tokenHandler.WriteToken(token);

                user.Password = null;
                return(user);
            } catch (Exception e)
            {
                throw new DatabaseException("Database Error");
            }
        }
Пример #2
0
 public User CreateUser(User user)
 {
     user.Role = "user";
     try
     {
         user.Password = PasswordEncryption.ComputeSha256Hash(user.Password);
         _dbContext.Add(user);
         _dbContext.SaveChanges();
     }
     catch (Exception e)
     {
         if (e is DbUpdateException || e is DbUpdateConcurrencyException)
         {
             throw new UserServiceException();
         }
     }
     return(user);
 }