Add project files.

This commit is contained in:
roman
2026-06-05 21:39:38 +02:00
parent 63bb199a1f
commit 841037013a
28 changed files with 2342 additions and 0 deletions
@@ -0,0 +1,58 @@
using CalendarReminder.Api.Data;
using CalendarReminder.Api.Models;
using CalendarReminder.Api.Services;
using CalendarReminder.Domain.Entities;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
namespace CalendarReminder.Api.Controllers;
[ApiController]
[Route("api/[controller]")]
public class AuthController : ControllerBase
{
private readonly AppDbContext _db;
private readonly TokenService _tokenService;
public AuthController(AppDbContext db, TokenService tokenService)
{
_db = db;
_tokenService = tokenService;
}
// POST api/auth/register
[HttpPost("register")]
public async Task<IActionResult> Register(RegisterRequest req)
{
if (await _db.Users.AnyAsync(u => u.Email == req.Email))
return BadRequest("Email je už registrovaný.");
if (await _db.Users.AnyAsync(u => u.Username == req.Username))
return BadRequest("Používateľské meno je obsadené.");
var user = new User
{
Username = req.Username,
Email = req.Email,
PasswordHash = BCrypt.Net.BCrypt.HashPassword(req.Password)
};
_db.Users.Add(user);
await _db.SaveChangesAsync();
var token = _tokenService.GenerateToken(user);
return Ok(new AuthResponse(token, user.Username, user.Email));
}
// POST api/auth/login
[HttpPost("login")]
public async Task<IActionResult> Login(LoginRequest req)
{
var user = await _db.Users.FirstOrDefaultAsync(u => u.Email == req.Email);
if (user is null || !BCrypt.Net.BCrypt.Verify(req.Password, user.PasswordHash))
return Unauthorized("Nesprávny email alebo heslo.");
var token = _tokenService.GenerateToken(user);
return Ok(new AuthResponse(token, user.Username, user.Email));
}
}