/
nicteres
/
Lab1
Обзор
Документация
Войти
/
nicteres
/
Lab1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
123
API_Lab_1/Controllers/v2/AccessController.cs
109 строк
3 KB
Matthew
Добавьте файлы проекта.
18 окт 2025, 18:03
18 окт 2025, 18:03
79e10ad
Код
Авторство
О чём код?
using API_Lab_1.src; using API_Lab_1.src.Interface; using API_Lab_1.src.Models; using Asp.Versioning; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.RateLimiting; using System.Text.Json; namespace API_Lab_1.Controllers.v2 { [Route("api/v{version:apiVersion}/[controller]")] [EnableRateLimiting("concurrencyLimiter")] [ApiVersion("2.0")] [ApiController] public class AccessController(AppDbContext _appDb, IAccessService accessService, IRequestService requestService) : ControllerBase { // Get user [Authorize(Roles = "user, admin")] [HttpGet("GetUser")] public async Task<ActionResult> Get(int id) { var user = await _appDb.Users.FindAsync(id); if (user == null) return BadRequest("No user existst uder this name"); return Ok(user); } // Create User [Authorize(Roles = "admin")] [HttpPost("CreateUser")] public async Task<ActionResult> Post(string username, string password, [FromHeader(Name = "Idempotency-Key")] string? idempotencyKey) { var data = await requestService.CheckRequestAsync(idempotencyKey, ""); if (data != null) { if (data == "0") { var request = new User_Request { UserName = username, Password = password, }; var user = await accessService.User_Create_Async(request); if (user == null) return BadRequest("Email or Username already taken"); await requestService.AddRequestDataAsync(idempotencyKey, JsonSerializer.Serialize(user)); return Ok(user); } else { return Ok(JsonSerializer.Deserialize<UserModel>(data)); } } return BadRequest("Idempotency-Key is not provided"); } // Edit user [Authorize(Roles = "admin")] [HttpPut("EditUser")] public async Task<ActionResult> Put(int id, string username, string password, string email) { var request = new User_Request { UserName = username, Password = password, Email = email }; var user = await accessService.User_Update_Async(id, request); if (user == null) return BadRequest("Internarl error"); return Ok(user); } // Delete user [Authorize(Roles = "admin")] [HttpDelete("DeleteUser")] public async Task<ActionResult> Delete(int id, string username, string email) { var request = new User_Delete { Id = id, UserName = username, Email = email }; var result = await accessService.User_Delete_Async(request); if (result == null) return BadRequest("No user deleted"); return Ok(result); } } }