public async Task <IActionResult> SignUp([FromBody] SignUp infoSignUp) { try { _logger.LogInformation(String.Format("Action: {0} | Status: {1}", "SignUp", "Begin - " + infoSignUp.Email ?? "")); if (!ModelState.IsValid) { _logger.LogWarning(String.Format("Action: {0} | Status: {1}", "SignUp", "Failure - Invalid payload")); return(BadRequest(ModelState)); } bool userAlreadyExist = await _userService.AnyByEmailAsync(infoSignUp.Email); if (userAlreadyExist) { _logger.LogWarning(String.Format("Action: {0} | Status: {1}", "SignUp", "Failure - Email already exists")); return(BadRequest(new ErrorMessage() { Message = ErrorMessage.Duplicated })); } byte[] passwordAsHash256 = _hashHelper.ComputeSha256FromString(infoSignUp.Password); User newUser = new User(infoSignUp.Name, infoSignUp.Email, passwordAsHash256, infoSignUp.Telephones); List <Claim> exampleClaims = new List <Claim>() { new Claim(_claimIdKey, newUser.Id.ToString()), new Claim(_claimLastLoginOnKey, newUser.LastLoginOn.ToString()) }; String jwtToken = JwtTokenHelper.WriteJwtToken(exampleClaims, _jwtSigningKey); newUser.Token = jwtToken; newUser.TokenHashed = _hashHelper.ComputeSha256FromString(_bearer + jwtToken); await _userService.AddAsync(newUser); _logger.LogInformation(String.Format("Action: {0} | Status: {1}", "SignUp", "Success")); return(Created( new UriBuilder(HttpContext.Request.Scheme, HttpContext.Request.Host.Host, HttpContext.Request.Host.Port ?? 80, HttpContext.Request.Path.Value).ToString(), newUser)); } catch (Exception ex) { _logger.LogError(String.Format("Action: {0} | Status: {1}", "SignUp", "Exception")); return(StatusCode((int)HttpStatusCode.InternalServerError, new ErrorMessage() { Message = ex.Message })); } }