private JwtSecurityToken generateJWT(BookwormUser user) { var claims = new List <Claim>(); claims.Add(new Claim(JwtRegisteredClaimNames.Sub, user.Email)); claims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())); claims.Add(new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName)); claims.Add(new Claim(Policies.USER, Policies.USER)); if (user.IsAdmin) { claims.Add(new Claim(Policies.ADMIN, Policies.ADMIN)); } var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Tokens:Key"])); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: _config["Tokens:Issuer"], audience: _config["Tokens:Audience"], claims: claims, expires: DateTime.UtcNow.AddDays(24), signingCredentials: creds ); return(token); }
public async Task <IActionResult> getToken([FromBody] LoginViewModel model) { if (!ModelState.IsValid) { return(BadRequest()); } BookwormUser user = await _userManager.FindByEmailAsync(model.Username); if (user == null) { return(Unauthorized()); } var result = await _signinManager.CheckPasswordSignInAsync(user, model.Password, false); if (!result.Succeeded) { return(Unauthorized()); } var token = generateJWT(user); var results = new { token = new JwtSecurityTokenHandler().WriteToken(token), expiration = token.ValidTo }; return(new ObjectResult(results)); }
public async Task <IActionResult> delete(string id) { BookwormUser user = await _userManager.FindByIdAsync(id); if (user == null) { return(NotFound()); } var result = await _userManager.DeleteAsync(user); if (!result.Succeeded) { return(StatusCode((int)HttpStatusCode.ServiceUnavailable)); } return(Ok()); }
public async Task <IActionResult> register([FromBody] RegisterViewModel model) { if (!ModelState.IsValid) { return(BadRequest()); } var user = new BookwormUser { UserName = model.Username, Email = model.Email, Address = model.Address }; var result = await _userManager.CreateAsync(user, model.Password); if (!result.Succeeded) { return(StatusCode((int)HttpStatusCode.Conflict)); } return(Ok()); }