public async Task <IActionResult> Login(AccountLoginRequest request) { if (request == null) { return(new BadRequestResult()); } try { var passwordHash = CryptoHelper.Guid(request.Password); var model = await _repository .GetByEmailPasswordAsync(request.Email, passwordHash); if (model == null) { return(new NotFoundResult()); } var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_appSettings.Security.Secret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, model.Name.ToString()), new Claim(ClaimTypes.Email, model.Email.ToString()), new Claim(ClaimTypes.Sid, model.PublicId.ToString()) }), Expires = DateTime.UtcNow.AddDays(_appSettings.Security.Expires), SigningCredentials = new SigningCredentials (new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var response = new AccountLoginResponse { Email = model.Email, Id = model.Id, Name = model.Name, PublicId = model.PublicId, Token = tokenHandler.WriteToken(token) }; return(new OkObjectResult(response)); } catch { return(new ConflictObjectResult(State)); } }