Files
DiunaBI/src/Backend/DiunaBI.API/Controllers/AuthController.cs

51 lines
1.5 KiB
C#
Raw Normal View History

2025-11-09 19:39:52 +01:00
using DiunaBI.API.Services;
2025-11-05 20:50:25 +01:00
using DiunaBI.Domain.Entities;
2025-11-09 19:39:52 +01:00
using Microsoft.AspNetCore.Mvc;
2025-11-05 20:50:25 +01:00
namespace DiunaBI.API.Controllers;
[ApiController]
2025-11-13 11:15:32 +01:00
[Route("[controller]")]
2025-11-09 19:39:52 +01:00
public class AuthController(
GoogleAuthService googleAuthService,
JwtTokenService jwtTokenService,
ILogger<AuthController> logger)
: ControllerBase
2025-11-05 20:50:25 +01:00
{
2025-11-09 19:39:52 +01:00
[HttpPost("apiToken")]
public async Task<IActionResult> ApiToken([FromBody] string idToken)
2025-11-05 20:50:25 +01:00
{
2025-11-09 19:39:52 +01:00
try
2025-11-05 20:50:25 +01:00
{
2025-11-09 19:39:52 +01:00
if (string.IsNullOrEmpty(idToken))
{
logger.LogWarning("Empty idToken received");
return BadRequest("IdToken is required");
}
var (isValid, user, error) = await googleAuthService.ValidateGoogleTokenAsync(idToken);
2025-11-05 20:50:25 +01:00
2025-11-09 19:39:52 +01:00
if (!isValid || user == null)
2025-11-05 20:50:25 +01:00
{
2025-11-09 19:39:52 +01:00
logger.LogWarning("Google token validation failed: {Error}", error);
return Unauthorized();
}
var jwt = jwtTokenService.GenerateToken(user);
logger.LogInformation("User authenticated successfully: {Email}", user.Email);
return Ok(new
{
token = jwt,
id = user.Id,
expirationTime = DateTime.UtcNow.AddDays(7) // z JwtSettings
});
}
catch (Exception ex)
{
logger.LogError(ex, "Error during authentication");
return StatusCode(500, "Internal server error");
}
2025-11-05 20:50:25 +01:00
}
}