/
ArtSerg
/
IntegrationProject
Обзор
Документация
Войти
/
ArtSerg
/
IntegrationProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Integration1/Controllers/AuthController.cs
61 строка
2 KB
artS3rg
Create REST API проект
19 окт 2025, 20:02
19 окт 2025, 20:02
384f274
Код
Авторство
О чём код?
using Integration1.Data; using Integration1.Dtos; using Integration1.Models; using Integration1.Services; using Microsoft.AspNetCore.Mvc; using System.Text; using Microsoft.EntityFrameworkCore; using System.Security.Cryptography; namespace Integration1.Controllers { [ApiController] [Route("api/v1/auth")] public class AuthController : ControllerBase { private readonly AppDbContext _db; private readonly JwtService _jwt; public AuthController(AppDbContext db, JwtService jwt) { _db = db; _jwt = jwt; } [HttpPost("register")] public async Task<IActionResult> Register([FromBody] RegisterDto dto) { if (await _db.Users.AnyAsync(u => u.Username == dto.Username)) return Conflict(new { message = "Username already exists" }); var user = new User { Username = dto.Username, PasswordHash = HashPassword(dto.Password) }; _db.Users.Add(user); await _db.SaveChangesAsync(); return Ok(new { message = "User registered successfully" }); } [HttpPost("login")] public async Task<IActionResult> Login([FromBody] LoginDto dto) { var user = await _db.Users.FirstOrDefaultAsync(u => u.Username == dto.Username); if (user == null || user.PasswordHash != HashPassword(dto.Password)) return Unauthorized(new { message = "Invalid username or password" }); var token = _jwt.GenerateToken(user); return Ok(new { token }); } private static string HashPassword(string password) { using var sha = SHA256.Create(); var bytes = sha.ComputeHash(Encoding.UTF8.GetBytes(password)); return Convert.ToBase64String(bytes); } } }