public async Task <RegistrationResult> Register(string userName, string password, string confirmPassword, string email, UserType userType) { RegistrationResult result = RegistrationResult.Success; if (string.Equals(password, confirmPassword)) { using (UnitOfwork unitOfWork = _unitOfWorkFactory.CreateUnitOfWork()) { if (await unitOfWork.UserRepository.GetByUserName(userName) != null) { result = RegistrationResult.LoginAlreadyExists; } var passwordHashier = new SaltedHasher(password); User user = new User() { UserName = userName, HashedPassword = passwordHashier.Hash, Salt = passwordHashier.Salt, Email = email, UserType = userType }; if (result == RegistrationResult.Success) { unitOfWork.UserRepository.Create(user); await unitOfWork.SaveAsync(); } } } else { result = RegistrationResult.PasswordDoNotMatch; } return(result); }
public async Task <Profile> Login(string login, string password) { using (UnitOfwork unitOfWork = _unitOfWorkFactory.CreateUnitOfWork()) { User loginUser = await unitOfWork.UserRepository.GetByUserName(login); if (loginUser != null) { var passwordHashier = new SaltedHasher(password); if (!SaltedHasher.Verify(loginUser.Salt, loginUser.HashedPassword, password)) { return(null); } } else { return(null); } return(new Profile(loginUser.UserName, loginUser.UserType)); } }