Deploy Promiscuity Auth API / deploy (push) Failing after 20s
Deploy Promiscuity Character API / deploy (push) Failing after 19s
Deploy Promiscuity Crafting API / deploy (push) Failing after 20s
Deploy Promiscuity Inventory API / deploy (push) Failing after 19s
Deploy Promiscuity Locations API / deploy (push) Failing after 19s
Deploy Promiscuity Mail API / deploy (push) Failing after 20s
Deploy Promiscuity World API / deploy (push) Failing after 20s
k8s smoke test / test (push) Failing after 20s
34 lines
1.3 KiB
C#
34 lines
1.3 KiB
C#
using AuthApi.Models;
|
|
using Microsoft.IdentityModel.Tokens;
|
|
using System.IdentityModel.Tokens.Jwt;
|
|
using System.Security.Claims;
|
|
using System.Text;
|
|
|
|
namespace AuthApi.Services;
|
|
|
|
public class JwtTokenService
|
|
{
|
|
private readonly IConfiguration _cfg;
|
|
|
|
public JwtTokenService(IConfiguration cfg) => _cfg = cfg;
|
|
|
|
public (string Token, string Jti, DateTime ExpiresUtc) Generate(User user)
|
|
{
|
|
var key = Encoding.UTF8.GetBytes(_cfg["Jwt:Key"] ?? throw new InvalidOperationException("Jwt:Key missing"));
|
|
var issuer = _cfg["Jwt:Issuer"] ?? "GameAuthApi";
|
|
var audience = _cfg["Jwt:Audience"] ?? issuer;
|
|
var credentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256);
|
|
var jti = Guid.NewGuid().ToString("N");
|
|
var claims = new[]
|
|
{
|
|
new Claim(ClaimTypes.Name, user.Username),
|
|
new Claim(ClaimTypes.NameIdentifier, user.Id),
|
|
new Claim(ClaimTypes.Role, user.Role),
|
|
new Claim(JwtRegisteredClaimNames.Jti, jti)
|
|
};
|
|
var expiresUtc = DateTime.UtcNow.AddMinutes(15);
|
|
var token = new JwtSecurityToken(issuer, audience, claims, expires: expiresUtc, signingCredentials: credentials);
|
|
return (new JwtSecurityTokenHandler().WriteToken(token), jti, expiresUtc);
|
|
}
|
|
}
|