parent
49110b2e47
commit
6c4c96f7fb
@ -0,0 +1,23 @@
|
|||||||
|
namespace Dto.Auth;
|
||||||
|
|
||||||
|
public class AuthResponseDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the access token issued by the OAuth provider.
|
||||||
|
/// </summary>
|
||||||
|
public string AccessToken { get; set; }
|
||||||
|
|
||||||
|
/// <summary>Gets or sets the token type.</summary>
|
||||||
|
/// <remarks>Typically the string “bearer”.</remarks>
|
||||||
|
public string? TokenType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a refresh token that applications can use to obtain another access token if tokens can expire.
|
||||||
|
/// </summary>
|
||||||
|
public string? RefreshToken { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the validatity lifetime of the token in seconds.
|
||||||
|
/// </summary>
|
||||||
|
public string? ExpiresIn { get; set; }
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace Dto.Auth;
|
||||||
|
|
||||||
|
public class RegisterRequestDto
|
||||||
|
{
|
||||||
|
|
||||||
|
[MaxLength(100)]
|
||||||
|
[Required(ErrorMessage = "Username is required")]
|
||||||
|
public string Username { get; set; }
|
||||||
|
[MaxLength(150)]
|
||||||
|
[Required(ErrorMessage = "LastName is required")]
|
||||||
|
public string LastName { get; set; }
|
||||||
|
[MaxLength(100)]
|
||||||
|
[Required(ErrorMessage = "FirstName is required")]
|
||||||
|
public string FirstName { get; set; }
|
||||||
|
[Required(ErrorMessage = "Email is required")]
|
||||||
|
[EmailAddress]
|
||||||
|
public string Email { get; set; }
|
||||||
|
[Required(ErrorMessage = "Sexe is required")]
|
||||||
|
public string Sexe { get; set; }
|
||||||
|
[Required(ErrorMessage = "Size is required")]
|
||||||
|
public float Size { get; set; }
|
||||||
|
[Required(ErrorMessage = "Weight is required")]
|
||||||
|
public float Weight { get; set; }
|
||||||
|
[Required(ErrorMessage = "Password is required")]
|
||||||
|
public string Password { get; set; }
|
||||||
|
[Required(ErrorMessage = "DateOfBirth is required")]
|
||||||
|
public DateTime DateOfBirth { get; set; }
|
||||||
|
public string ProfilePicture { get; set; } = "https://davidalmeida.site/assets/me_avatar.f77af006.png";
|
||||||
|
[Required(ErrorMessage = "Role is required")]
|
||||||
|
public bool IsCoach { get; set; }
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
using System.IdentityModel.Tokens.Jwt;
|
||||||
|
using System.Security.Claims;
|
||||||
|
using System.Text;
|
||||||
|
using Entities;
|
||||||
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
|
||||||
|
namespace HeartTrackAPI.Services;
|
||||||
|
public interface ITokenService
|
||||||
|
{
|
||||||
|
string CreateToken(AthleteEntity user);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TokenService : ITokenService
|
||||||
|
{
|
||||||
|
private readonly IConfiguration _config;
|
||||||
|
private readonly SymmetricSecurityKey _key;
|
||||||
|
|
||||||
|
public TokenService(IConfiguration config)
|
||||||
|
{
|
||||||
|
_config = config;
|
||||||
|
_key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["JWT:SigningKey"]));
|
||||||
|
}
|
||||||
|
public string CreateToken(AthleteEntity user)
|
||||||
|
{
|
||||||
|
var claims = new List<Claim>
|
||||||
|
{
|
||||||
|
new (JwtRegisteredClaimNames.Email, user.Email),
|
||||||
|
new (JwtRegisteredClaimNames.GivenName, user.UserName)
|
||||||
|
};
|
||||||
|
|
||||||
|
var creds = new SigningCredentials(_key, SecurityAlgorithms.HmacSha512Signature);
|
||||||
|
|
||||||
|
var tokenDescriptor = new SecurityTokenDescriptor
|
||||||
|
{
|
||||||
|
Subject = new ClaimsIdentity(claims),
|
||||||
|
Expires = DateTime.Now.AddDays(7),
|
||||||
|
SigningCredentials = creds,
|
||||||
|
Issuer = _config["JWT:Issuer"],
|
||||||
|
Audience = _config["JWT:Audience"]
|
||||||
|
};
|
||||||
|
|
||||||
|
var tokenHandler = new JwtSecurityTokenHandler();
|
||||||
|
|
||||||
|
var token = tokenHandler.CreateToken(tokenDescriptor);
|
||||||
|
|
||||||
|
return tokenHandler.WriteToken(token);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue