public async Task <ActionResult <Token> > Register(RegisterUser newUser) { newUser.Email = newUser.Email.ToLower(); var emailExist = await _context.Users.Where(u => u.Email == newUser.Email).FirstOrDefaultAsync(); if (emailExist != null) { return(BadRequest(new { ErrorMessage = "That email is already taken" })); } var user = new User { FirstName = newUser.FirstName, LastName = newUser.LastName, Email = newUser.Email, PasswordHash = HashPassword(newUser.Password, BcryptWorkfactor) }; _context.Users.Add(user); await _context.SaveChangesAsync(); var jwtToken = new Token(); jwtToken.JWT = JWTUtilities.GenerateToken(user.FirstName, user.LastName, user.Email, user.UserId); return(Ok(new { user = user.UserId, token = jwtToken })); }
public async Task <ActionResult <Token> > Login(LoginUser login) { login.Email = login.Email.ToLower(); var user = await _context.Users.Where(u => u.Email == login.Email).FirstOrDefaultAsync(); if (user != null) { var validPassword = Verify(login.Password, user.PasswordHash); if (validPassword) { return(new Token() { JWT = JWTUtilities.GenerateToken(user.FirstName, user.LastName, user.Email, user.UserId) }); } } ModelState.AddModelError(string.Empty, "Wrong email or password"); return(BadRequest(ModelState)); }