Comments and attributes for actions
This commit is contained in:
		| @@ -4,6 +4,7 @@ using Swashbuckle.AspNetCore.SwaggerGen; | ||||
|  | ||||
| namespace SchengenVisaApi.Common | ||||
| { | ||||
|     /// Adds auth for swagger | ||||
|     public class ConfigureSwaggerOptions : IConfigureOptions<SwaggerGenOptions> | ||||
|     { | ||||
|         void IConfigureOptions<SwaggerGenOptions>.Configure(SwaggerGenOptions options) | ||||
|   | ||||
| @@ -1,12 +1,12 @@ | ||||
| namespace SchengenVisaApi.Common | ||||
| { | ||||
| #pragma warning enable CS1591 | ||||
| #pragma warning disable CS1591 | ||||
|     public static class PolicyConstants | ||||
|     { | ||||
|         public const string AdminPolicy = "AdminPolicy"; | ||||
|         public const string ApplicantPolicy = "ApplicantPolicy"; | ||||
|         public const string ApprovingAuthorityPolicy = "ApprovingAuthorityPolicy"; | ||||
|     } | ||||
| #pragma warning disable CS1591 | ||||
| #pragma warning enable CS1591 | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,28 +1,39 @@ | ||||
| using ApplicationLayer.Services.Locations.RequestHandlers; | ||||
| using ApplicationLayer.Services.Locations.Requests; | ||||
| using Domains.LocationDomain; | ||||
| using Domains.Users; | ||||
| using Microsoft.AspNetCore.Authorization; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using SchengenVisaApi.Common; | ||||
|  | ||||
| namespace SchengenVisaApi.Controllers | ||||
| { | ||||
|     /// Controller for <see cref="Domains.LocationDomain"/> | ||||
|     [ApiController] | ||||
|     [Route("countries")] | ||||
|     public class LocationsController(ILocationRequestsHandler requestsHandler) : ControllerBase | ||||
|     { | ||||
|         /// Return countries with cities from DB | ||||
|         [HttpGet] | ||||
|         [ProducesResponseType<List<Country>>(StatusCodes.Status200OK)] | ||||
|         public async Task<IActionResult> GetAvailableLocations(CancellationToken cancellationToken) | ||||
|         { | ||||
|             return Ok(await requestsHandler.HandleGetRequestAsync(cancellationToken)); | ||||
|         } | ||||
|  | ||||
|         /// Adds country with cities to DB | ||||
|         /// <remarks>Accessible only for <see cref="Role.Admin"/></remarks> | ||||
|         [HttpPost] | ||||
|         [ProducesResponseType(StatusCodes.Status201Created)] | ||||
|         [ProducesResponseType(StatusCodes.Status400BadRequest)] | ||||
|         [ProducesResponseType(StatusCodes.Status403Forbidden)] | ||||
|         [ProducesResponseType(StatusCodes.Status401Unauthorized)] | ||||
|         [Route("country")] | ||||
|         [Authorize(policy: PolicyConstants.AdminPolicy)] | ||||
|         public async Task<IActionResult> AddCountry(AddCountryRequest request, CancellationToken cancellationToken) | ||||
|         { | ||||
|             await requestsHandler.AddCountryAsync(request, cancellationToken); | ||||
|             return Ok(); | ||||
|             return Created(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,17 +1,22 @@ | ||||
| using ApplicationLayer.Services.AuthServices.LoginService; | ||||
| using ApplicationLayer.Services.AuthServices.RegisterService; | ||||
| using ApplicationLayer.Services.AuthServices.Requests; | ||||
| using Domains.Users; | ||||
| using Microsoft.AspNetCore.Authorization; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using SchengenVisaApi.Common; | ||||
|  | ||||
| namespace SchengenVisaApi.Controllers | ||||
| { | ||||
|     /// Controller for <see cref="Domains.Users"/> | ||||
|     [ApiController] | ||||
|     [Route("auth")] | ||||
|     public class UsersController(IRegisterService registerService, ILoginService loginService) : ControllerBase | ||||
|     { | ||||
|         /// Adds applicant with user account to DB | ||||
|         [HttpPost] | ||||
|         [ProducesResponseType(StatusCodes.Status201Created)] | ||||
|         [ProducesResponseType(StatusCodes.Status409Conflict)] | ||||
|         [Route("applicant")] | ||||
|         public async Task<IActionResult> Register(RegisterApplicantRequest request, CancellationToken cancellationToken) | ||||
|         { | ||||
| @@ -19,16 +24,25 @@ namespace SchengenVisaApi.Controllers | ||||
|             return Created(); | ||||
|         } | ||||
|  | ||||
|         /// Adds approving authority with user account to DB | ||||
|         /// <remarks>Accessible only for <see cref="Role.Admin"/></remarks> | ||||
|         [HttpPost] | ||||
|         [Authorize(policy: PolicyConstants.AdminPolicy)] | ||||
|         [ProducesResponseType(StatusCodes.Status201Created)] | ||||
|         [ProducesResponseType(StatusCodes.Status409Conflict)] | ||||
|         [ProducesResponseType(StatusCodes.Status403Forbidden)] | ||||
|         [ProducesResponseType(StatusCodes.Status401Unauthorized)] | ||||
|         [Route("authority")] | ||||
|         [Authorize(policy: PolicyConstants.AdminPolicy)] | ||||
|         public async Task<IActionResult> RegisterAuthority(RegisterRequest request, CancellationToken cancellationToken) | ||||
|         { | ||||
|             await registerService.RegisterAuthority(request, cancellationToken); | ||||
|             return Created(); | ||||
|         } | ||||
|  | ||||
|         /// Returns JWT-token for authentication | ||||
|         [HttpGet] | ||||
|         [ProducesResponseType<string>(StatusCodes.Status200OK)] | ||||
|         [ProducesResponseType(StatusCodes.Status403Forbidden)] | ||||
|         public async Task<IActionResult> Login(string email, string password, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var result = await loginService.LoginAsync(new UserLoginRequest(email, password), cancellationToken); | ||||
|   | ||||
| @@ -1,17 +1,27 @@ | ||||
| using System.Security.Claims; | ||||
| using ApplicationLayer.Services.VisaApplications.Handlers; | ||||
| using ApplicationLayer.Services.VisaApplications.Models; | ||||
| using ApplicationLayer.Services.VisaApplications.Requests; | ||||
| using Domains.Users; | ||||
| using Domains.VisaApplicationDomain; | ||||
| using Microsoft.AspNetCore.Authorization; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using SchengenVisaApi.Common; | ||||
|  | ||||
| namespace SchengenVisaApi.Controllers; | ||||
|  | ||||
| /// Controller for <see cref="Domains.VisaApplicationDomain"/> | ||||
| [ApiController] | ||||
| [Route("[controller]")] | ||||
| public class VisaApplicationController(IVisaApplicationRequestsHandler visaApplicationRequestsHandler) : ControllerBase | ||||
| { | ||||
|     //todo should return only pending applications | ||||
|     /// Returns all <see cref="Domains.VisaApplicationDomain.VisaApplication"/> from DB | ||||
|     /// <remarks>Accessible only for <see cref="Role.ApprovingAuthority"/></remarks> | ||||
|     [HttpGet] | ||||
|     [ProducesResponseType<List<VisaApplication>>(StatusCodes.Status200OK)] | ||||
|     [ProducesResponseType(StatusCodes.Status403Forbidden)] | ||||
|     [ProducesResponseType(StatusCodes.Status401Unauthorized)] | ||||
|     [Authorize(policy: PolicyConstants.ApprovingAuthorityPolicy)] | ||||
|     public async Task<IActionResult> Get(CancellationToken cancellationToken) | ||||
|     { | ||||
| @@ -19,7 +29,13 @@ public class VisaApplicationController(IVisaApplicationRequestsHandler visaAppli | ||||
|         return Ok(result); | ||||
|     } | ||||
|  | ||||
|     /// Returns all <see cref="VisaApplication"/> of one applicant | ||||
|     /// <remarks>Returns applications for authorized applicant</remarks> | ||||
|     [HttpGet] | ||||
|     [ProducesResponseType<List<VisaApplicationModelForApplicant>>(StatusCodes.Status200OK)] | ||||
|     [ProducesResponseType(StatusCodes.Status403Forbidden)] | ||||
|     [ProducesResponseType(StatusCodes.Status401Unauthorized)] | ||||
|     [ProducesResponseType(StatusCodes.Status404NotFound)] | ||||
|     [Authorize(policy: PolicyConstants.ApplicantPolicy)] | ||||
|     [Route("OfApplicant")] | ||||
|     public async Task<IActionResult> GetForApplicant(CancellationToken cancellationToken) | ||||
| @@ -29,7 +45,13 @@ public class VisaApplicationController(IVisaApplicationRequestsHandler visaAppli | ||||
|         return Ok(result); | ||||
|     } | ||||
|  | ||||
|     /// Adds new <see cref="VisaApplication"/> to DB | ||||
|     /// <remarks>Adds application for authorized applicant</remarks> | ||||
|     [HttpPost] | ||||
|     [ProducesResponseType(StatusCodes.Status201Created)] | ||||
|     [ProducesResponseType(StatusCodes.Status403Forbidden)] | ||||
|     [ProducesResponseType(StatusCodes.Status401Unauthorized)] | ||||
|     [ProducesResponseType(StatusCodes.Status404NotFound)] | ||||
|     [Authorize(policy: PolicyConstants.ApplicantPolicy)] | ||||
|     public async Task<IActionResult> Create(VisaApplicationCreateRequest request, CancellationToken cancellationToken) | ||||
|     { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user