Comments and attributes for actions
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
using Domains.LocationDomain;
|
||||
using Domains.VisaApplicationDomain;
|
||||
using Domains.VisaApplicationDomain;
|
||||
|
||||
namespace ApplicationLayer.Services.VisaApplications.Models
|
||||
{
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using Domains.ApplicantDomain;
|
||||
using Domains.LocationDomain;
|
||||
using Domains.VisaApplicationDomain;
|
||||
using Domains.VisaApplicationDomain;
|
||||
|
||||
namespace ApplicationLayer.Services.VisaApplications.Models
|
||||
{
|
||||
|
||||
@@ -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