public User Create(CreateUserModal user) { if (string.IsNullOrWhiteSpace(user.password)) { throw new AppException("Password is required"); } if (_context.Users.Any(x => x.username == user.username)) { throw new AppException("Username " + user.username + " is already taken"); } byte[] passwordHash, passwordSalt; CreatePasswordHash(user.password, out passwordHash, out passwordSalt); User newUser = new User(); newUser.PasswordHash = passwordHash; newUser.PasswordSalt = passwordSalt; newUser.fullname = user.fullname; newUser.username = user.username; _context.Users.Add(newUser); _context.SaveChanges(); return(newUser); }
public IActionResult createUser([FromBody] CreateUserModal user) { try { _userRepository.Create(user); var userAuthen = _userRepository.Authenticate(user.username, user.password); if (userAuthen == null) { return(BadRequest(new { message = "Username or password is incorrect" })); } var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(Settings.privateKey); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, userAuthen.Result.userID.ToString()), }), Expires = DateTime.UtcNow.AddDays(1), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var tokenString = tokenHandler.WriteToken(token); var username = userAuthen.Result.username; var fullname = userAuthen.Result.fullname; return(Ok(new { user = new { username = username, fullname = fullname }, Token = tokenString })); } catch (AppException ex) { return(BadRequest(new { message = ex.Message })); } }