public async Task <IActionResult> Register([FromBody] RegisterModel model) { if (!this.ModelState.IsValid) { return(BadRequest()); } var user = new StorefrontUser { UserName = model.Username, Email = model.Username }; var result = await this._userManager.CreateAsync(user, model.Password); if (!result.Errors.Any()) { return(await Authenticate(new LoginModel { Username = model.Username, Password = model.Password })); } foreach (var error in result.Errors) { this._logger.LogError($"Error updating user. {error.Code} : {error.Description}"); } return(BadRequest()); }
private object GenerateJwtToken(string username, StorefrontUser user) { List <Claim> claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.Sub, username), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), // This line makes UserName available off of the Identity object. new Claim(ClaimTypes.Name, username) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(this._key)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var expires = DateTime.Now.AddDays(Convert.ToDouble(30)); var token = new JwtSecurityToken(this._issuer, this._audience, claims, expires: expires, signingCredentials: creds ); return(new JwtSecurityTokenHandler().WriteToken(token)); }