fix: app
This commit is contained in:
@@ -11,11 +11,8 @@ using RefreshRequest = LctMonolith.Services.Models.RefreshRequest;
|
||||
|
||||
namespace LctMonolith.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// Authentication endpoints (mocked local identity + JWT issuing).
|
||||
/// </summary>
|
||||
[ApiController]
|
||||
[Route("api/auth")]
|
||||
[Route("api/auth")]
|
||||
public class AuthController : ControllerBase
|
||||
{
|
||||
private readonly UserManager<AppUser> _userManager;
|
||||
@@ -29,34 +26,43 @@ public class AuthController : ControllerBase
|
||||
_tokenService = tokenService;
|
||||
}
|
||||
|
||||
/// <summary>Registers a new user (simplified).</summary>
|
||||
[HttpPost("register")]
|
||||
[AllowAnonymous]
|
||||
public async Task<ActionResult<TokenPair>> Register(AuthRequest req, CancellationToken ct)
|
||||
{
|
||||
var existing = await _userManager.FindByEmailAsync(req.Email);
|
||||
if (existing != null) return Conflict("Email already registered");
|
||||
if (existing != null)
|
||||
{
|
||||
return Conflict("Email already registered");
|
||||
}
|
||||
var user = new AppUser { UserName = req.Email, Email = req.Email, FirstName = req.FirstName, LastName = req.LastName };
|
||||
var result = await _userManager.CreateAsync(user, req.Password);
|
||||
if (!result.Succeeded) return BadRequest(result.Errors);
|
||||
if (!result.Succeeded)
|
||||
{
|
||||
return BadRequest(result.Errors);
|
||||
}
|
||||
var tokens = await _tokenService.IssueAsync(user, ct);
|
||||
return Ok(tokens);
|
||||
}
|
||||
|
||||
/// <summary>Login with email + password.</summary>
|
||||
[HttpPost("login")]
|
||||
[AllowAnonymous]
|
||||
public async Task<ActionResult<TokenPair>> Login(AuthRequest req, CancellationToken ct)
|
||||
{
|
||||
var user = await _userManager.FindByEmailAsync(req.Email);
|
||||
if (user == null) return Unauthorized();
|
||||
var passOk = await _signInManager.CheckPasswordSignInAsync(user, req.Password, lockoutOnFailure: false);
|
||||
if (!passOk.Succeeded) return Unauthorized();
|
||||
if (user == null)
|
||||
{
|
||||
return Unauthorized();
|
||||
}
|
||||
var passOk = await _signInManager.CheckPasswordSignInAsync(user, req.Password, false);
|
||||
if (!passOk.Succeeded)
|
||||
{
|
||||
return Unauthorized();
|
||||
}
|
||||
var tokens = await _tokenService.IssueAsync(user, ct);
|
||||
return Ok(tokens);
|
||||
}
|
||||
|
||||
/// <summary>Refresh access token by refresh token.</summary>
|
||||
[HttpPost("refresh")]
|
||||
[AllowAnonymous]
|
||||
public async Task<ActionResult<TokenPair>> Refresh(RefreshRequest req, CancellationToken ct)
|
||||
@@ -65,7 +71,6 @@ public class AuthController : ControllerBase
|
||||
return Ok(pair);
|
||||
}
|
||||
|
||||
/// <summary>Revoke refresh token (logout).</summary>
|
||||
[HttpPost("revoke")]
|
||||
[Authorize]
|
||||
public async Task<IActionResult> Revoke(RevokeRequest req, CancellationToken ct)
|
||||
@@ -74,13 +79,11 @@ public class AuthController : ControllerBase
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
/// <summary>Returns current user id (debug).</summary>
|
||||
[HttpGet("me")]
|
||||
[Authorize]
|
||||
public ActionResult<object> Me()
|
||||
{
|
||||
var id = User.FindFirstValue(ClaimTypes.NameIdentifier) ?? User.FindFirstValue(ClaimTypes.NameIdentifier) ?? User.FindFirstValue(ClaimTypes.Name);
|
||||
var id = User.FindFirstValue(ClaimTypes.NameIdentifier) ?? User.FindFirstValue(ClaimTypes.Name);
|
||||
return Ok(new { userId = id });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user