public User Register(User user, string password) { if (string.IsNullOrWhiteSpace(password)) { throw new AppException("Password is required"); } if (_context.Users.Find(u => u.Username == user.Username.Trim()).FirstOrDefault() != null) { throw new AppException("Username '" + user.Username + "' is already taken"); } try { byte[] passwordHash, passwordSalt; PasswordHasher.CreatePasswordHash(password, out passwordHash, out passwordSalt); user.Roles = new List <Role> { new Role { Name = "User" } }; user.PasswordHash = passwordHash; user.PasswordSalt = passwordSalt; user.DateCreated = DateTime.Now; user.DateModified = DateTime.Now; user.Username = user.Username.Trim(); user.UserId = _tokeniser.CreateToken(user.FirstName, user.LastName); _context.Users.InsertOne(user); } catch (AppException) { //shout/catch/throw/log } return(user); }
public IActionResult Authenticate([FromBody] UserDto userDto) { try { var user = _userService.Authenticate(userDto.Username, userDto.Password); if (user == null) { return(BadRequest("Username or password is incorrect")); } var Token = _tokeniser.CreateToken(user.Id.ToString()); return(Ok(new { user.Id, user.Username, user.FirstName, user.LastName, Token })); } catch (AppException ex) { return(BadRequest(ex.Message));//shout/catch/throw/log } }