public async Task <DbUserClient> Login(string emailAddress, string password) { var dbUser = await _context.DbUsers.Where(x => x.EmailAddress == emailAddress).ToListAsync(); if (dbUser != null && dbUser.Count > 0) { if (SaltedHash.VerifyPassword(password, dbUser[0].Hash, dbUser[0].Salt)) { return(CreateToken(dbUser[0])); } } return(null); }
public async Task <RegisterUserResult> RegisterUser(RegisterUser user) { var emailAlreadyRegisteredUser = await _context.DbUsers.Where(x => x.EmailAddress == user.EmailAddress).ToListAsync(); if (emailAlreadyRegisteredUser != null && emailAlreadyRegisteredUser.Count > 0) { return(new RegisterUserResult { UserCreated = false, Reason = $"User already registered with {user.EmailAddress}." }); } var saltedHash = SaltedHash.Generate(64, user.Password); var dbUserToCreate = new DbUser { ProviderId = user.EmailAddress, ProviderType = "EMAIL_PASSWORD", EmailAddress = user.EmailAddress, AccountEnabled = false, ConfirmEmailToken = Guid.NewGuid(), ConfirmEmailTokenExpiresAt = DateTime.UtcNow.AddMinutes(30), Hash = saltedHash.Hash, Salt = saltedHash.Salt, Roles = new List <DbUserRole>() { { new DbUserRole { Role = Roles.User } } } }; _context.DbUsers.Add(dbUserToCreate); await _context.SaveChangesAsync(); return(new RegisterUserResult { UserId = dbUserToCreate.Id, EmailAddress = dbUserToCreate.EmailAddress, ValidationToken = dbUserToCreate.ConfirmEmailToken, UserCreated = true, Reason = "" }); }