/
nicteres
/
Lab1
Обзор
Документация
Войти
/
nicteres
/
Lab1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
123
API_Lab_1/Controllers/v1/AccessController.cs
107 строк
3 KB
Matthew
Добавьте файлы проекта.
18 окт 2025, 18:03
18 окт 2025, 18:03
79e10ad
Код
Авторство
О чём код?
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 Swashbuckle.AspNetCore.Annotations; using Swashbuckle.AspNetCore.Filters; using System.Text.Json; namespace API_Lab_1.Controllers.v1 { [Route("api/v{version:apiVersion}/[controller]")] [EnableRateLimiting("concurrencyLimiter")] [ApiVersion("1.0")] [ApiController] public class AccessController(IAccessService accessService, IRequestService requestService) : ControllerBase { // Get user [Authorize(Roles = "user, admin")] [HttpGet("GetUser")] public async Task<ActionResult> Get(string username, ReturnOptions return_options = ReturnOptions.None) { var user = await accessService.User_Get_Async(username); if (user == null) return BadRequest("No user existst uder this name"); if (return_options == ReturnOptions.None) return Ok("User Exists"); if (return_options == ReturnOptions.NescessaryOnly) return Ok(new { user.UserName, user.Email }); return Ok(user); } // Create User [Authorize(Roles = "admin")] [HttpPost("CreateUser")] public async Task<ActionResult> Post(User_Request request, [FromHeader(Name = "Idempotency-Key")] string? idempotencyKey) { var data = await requestService.CheckRequestAsync(idempotencyKey, ""); if (data != null) { if (data == "0") { 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)); if (request.Return_Option == ReturnOptions.None) return Ok(); if (request.Return_Option == ReturnOptions.NescessaryOnly) return Ok(new { user.UserName, user.Email }); 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, User_Request request) { 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(User_Delete request) { var result = await accessService.User_Delete_Async(request); if (result == null) return BadRequest("No user deleted"); return Ok(result); } } }