public async Task <ActionResult <TokenResponse> > Post(AuthRequest request) { var pHash = Sha256Manager.GetHash(Encoding.UTF8.GetBytes(request.Login + request.Password + "6998AD68-8F11-41B2-9627-CBC34C5E68C4")); var user = await _postgresDbContext.Users.FirstOrDefaultAsync(u => u.Login.Equals(request.Login)); if (user != null) { if (!user.Password.SequenceEqual(pHash)) { return(new ConflictResult()); } } else { user = new UserEntity { Login = request.Login, Password = pHash, Role = Roles.User }; await _postgresDbContext.Users.AddAsync(user); await _postgresDbContext.SaveChangesAsync(); } var jwtSettings = new JwtSettings(DateTime.UtcNow); _configuration.GetSection(nameof(JwtSettings)) .Bind(jwtSettings); var claims = new[] { new Claim(nameof(UserEntity.Id), user.Id.ToString()), new Claim(ClaimsIdentity.DefaultNameClaimType, user.Login), new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role.ToString()), new Claim(nameof(TokenResponse.Expires), jwtSettings.Expires.ToString()) }; var jwt = new JwtSecurityToken( jwtSettings.Issuer, jwtSettings.Audience, notBefore: jwtSettings.Now.UtcDateTime, claims: claims, expires: jwtSettings.Expires.UtcDateTime, signingCredentials: new SigningCredentials(jwtSettings.GetSymmetricSecurityKey(), SecurityAlgorithms.HmacSha256) ); var result = new TokenResponse { Token = new JwtSecurityTokenHandler().WriteToken(jwt), Expires = jwtSettings.Expires }; return(new JsonResult(result)); }
public Task <int> SaveAsync() { return(_context.SaveChangesAsync()); }