/
urmat
/
taskboardproject1
Обзор
Документация
Войти
/
urmat
/
taskboardproject1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
UserService
src/UserService.Business/Services/Auth/JwtService.cs
55 строк
2 KB
urmatgit
fix register and login methods
29 мар 2025, 22:31
29 мар 2025, 22:31
cb1cfa7
Код
Авторство
О чём код?
using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Runtime; using System.Security.Claims; using System.Text; using UserService.DataAccess.DTOs.Auth; using UserService.DataAccess.Entities; namespace UserService.Business.Services.Auth { public class JwtService : IJwtService { private readonly JwtSettings _settings; public JwtService(IOptions<JwtSettings> jwtOptions) { _settings = jwtOptions.Value; } public AuthResponse GenerateAuthResponse(User user) { var token = GeneratorToken(user); return new AuthResponse( token, DateTime.UtcNow.AddMinutes(_settings.ExpiryMinutes), user.UserName, user.Role.ToString()); } private string GeneratorToken(User user) { var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub, user.Id.ToString()), new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName), new Claim(JwtRegisteredClaimNames.Email, user.Email), new Claim(JwtRegisteredClaimNames.PhoneNumber, user.Phone), new Claim(ClaimTypes.Role, user.Role.ToString()) }; var creds = new SigningCredentials( new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_settings.Secret)), SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: _settings.Issuer, audience: _settings.Audience, claims: claims, expires: DateTime.UtcNow.AddMinutes(_settings.ExpiryMinutes), signingCredentials: creds ); return new JwtSecurityTokenHandler().WriteToken(token); } } }