Add project files.
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user