public async Task <IActionResult> RegisterAsync([FromBody] RegistrationRequest user) { if (user.Username.IsEmail()) { return(Json(new Exception("Username cannot be of email format"))); } if (!user.Email.IsEmail()) { return(Json(new Exception("Email must be of email format"))); } var usernameQuery = new GetUserByIdentifiersQuery(user.Username); if (queryBus.Execute(usernameQuery) != null) { return(Json(new Exception($"Username : {user.Username} already exists"))); } var emailQuery = new GetUserByIdentifiersQuery(user.Email); if (queryBus.Execute(emailQuery) != null) { return(Json(new Exception($"User with email : {user.Email} already exists"))); } var salt = _encrypter.GetSalt(); var passHash = _encrypter.GetHash(user.Password, salt); var command = new RegisterUserCommand(user.Username, user.Email, passHash, salt); await commandBus.ExecuteAsync(command); return(StatusCode(201)); }
public IActionResult Login([FromBody] LoginRequest user) { var query = new GetUserByIdentifiersQuery(user.Username); var queryResult = queryBus.Execute(query); if (queryResult == null) { return(Unauthorized()); } var passHash = _encrypter.GetHash(user.Password, queryResult.User.Salt); if (passHash != queryResult.User.HashPassword) { return(Unauthorized()); } var jwtToken = _jwtHandler.CreateTokenByUserObject(queryResult.User); return(Json(jwtToken)); }