using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using FastEndpoints; using FastEndpoints.Security; using Microsoft.AspNetCore.Identity; namespace Faben.Api.Endpoints; public class LoginRequest { public string Email { get; set; } public string Password { get; set; } } public class UserLoginEndpoint(UserManager userManager) : Endpoint { public override void Configure() { Post("/accounts/login"); AllowAnonymous(); } public override async Task HandleAsync(LoginRequest req, CancellationToken ct) { try { var user = await userManager.FindByEmailAsync(req.Email); if (await userManager.CheckPasswordAsync(user, req.Password)) { var jwtToken = JWTBearer.CreateToken( signingKey: "TokenSigningKey1231312375645412312312341231", expireAt: DateTime.UtcNow.AddDays(30), privileges: u => { u.Claims.Add(new("NameSurname", user.NameSurname)); u.Claims.Add(new(ClaimTypes.NameIdentifier, user.Id)); u.Claims.Add(new("Id", user.Id)); u.Claims.Add(new(JwtRegisteredClaimNames.Email, user.Email)); u.Claims.Add(new("PhoneNumber", user.PhoneNumber)); u.Claims.Add(new("CompanyName", user.Company)); u["UserID"] = user.Id; }); await SendAsync(new { Token = jwtToken }); } else { ThrowError("Giriş bilgileri hatalıdır"); } } catch (Exception) { ThrowError("Giriş bilgileri hatalıdır"); } } }