433 lines
22 KiB
C#
433 lines
22 KiB
C#
using Asp.Versioning;
|
|
using Core.Cerberos.Adapters;
|
|
using Core.Cerberos.Adapters.Attributes;
|
|
using Core.Cerberos.Adapters.Common.Constants;
|
|
using Core.Cerberos.Application.UseCases.Users.Input;
|
|
using Core.Cerberos.Application.UseCases.Users.Ports;
|
|
using Lib.Architecture.BuildingBlocks;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Core.Cerberos.Service.API.Controllers
|
|
{
|
|
/// <summary>
|
|
/// Handles all requests for user.
|
|
/// </summary>
|
|
[ApiVersion("1.0")]
|
|
[Route("api/v{api-version:apiVersion}/[controller]")]
|
|
[Produces("application/json")]
|
|
[ApiController]
|
|
public class UserController : ControllerBase
|
|
{
|
|
private readonly IComponentHandler<GetUserRequest> getUserHandler;
|
|
private readonly IComponentHandler<GetUserByEmailRequest> getUserByEmailHandler;
|
|
private readonly IComponentHandler<GetAllUsersRequest> getAllUsersHandler;
|
|
private readonly IComponentHandler<CreateUserRequest> createUserHandler;
|
|
private readonly IComponentHandler<UpdateUserRequest> updateUserHandler;
|
|
private readonly IComponentHandler<ChangeUserStatusRequest> ChangeUserStatusHandler;
|
|
private readonly IComponentHandler<AddCompanyToUserRequest> addCompanyToUserHandler;
|
|
private readonly IComponentHandler<RemoveCompanyFromUserRequest> removeCompanyFromUserHandler;
|
|
private readonly IComponentHandler<AddProjectToUserRequest> addProjectToUserHandler;
|
|
private readonly IComponentHandler<RemoveProjectFromUserRequest> removeProjectFromUserHandler;
|
|
private readonly IComponentHandler<LoginUserRequest> loginUserHandler;
|
|
private readonly IComponentHandler<LogoutUserRequest> logoutUserHandler;
|
|
private readonly IComponentHandler<ValidateUserExistenceRequest> validateUserHandler;
|
|
private readonly IComponentHandler<GetTokenAdapterRequest> getTokenAdapterHandler;
|
|
private readonly IComponentHandler<GetConsentFormPDFRequest> getConsentFormPDFHandler;
|
|
private readonly IComponentHandler<AcceptUserConsentFormRequest> acceptUserConsentFormHandler;
|
|
private readonly IUserPort port;
|
|
|
|
/// <summary>
|
|
/// Creates a new instance of UserController.
|
|
/// </summary>
|
|
public UserController(
|
|
IComponentHandler<GetUserRequest> getUserHandler,
|
|
IComponentHandler<GetUserByEmailRequest> getUserByEmailHandler,
|
|
IComponentHandler<GetAllUsersRequest> getAllUsersHandler,
|
|
IComponentHandler<CreateUserRequest> createUserHandler,
|
|
IComponentHandler<UpdateUserRequest> updateUserHandler,
|
|
IComponentHandler<ChangeUserStatusRequest> changeUserStatusHandler,
|
|
IComponentHandler<AddCompanyToUserRequest> addCompanyToUserHandler,
|
|
IComponentHandler<RemoveCompanyFromUserRequest> removeCompanyFromUserHandler,
|
|
IComponentHandler<AddProjectToUserRequest> addProjectToUserHandler,
|
|
IComponentHandler<RemoveProjectFromUserRequest> removeProjectFromUserHandler,
|
|
IComponentHandler<LoginUserRequest> loginUserHandler,
|
|
IComponentHandler<LogoutUserRequest> logoutUserHandler,
|
|
IComponentHandler<ValidateUserExistenceRequest> validateUserHandler,
|
|
IComponentHandler<GetTokenAdapterRequest> getTokenAdapterHandler,
|
|
IComponentHandler<GetConsentFormPDFRequest> getConsentFormPDFHandler,
|
|
IComponentHandler<AcceptUserConsentFormRequest> acceptUserConsentFormHandler,
|
|
IUserPort port
|
|
)
|
|
{
|
|
this.createUserHandler = createUserHandler;
|
|
this.updateUserHandler = updateUserHandler;
|
|
this.ChangeUserStatusHandler = changeUserStatusHandler;
|
|
this.getAllUsersHandler = getAllUsersHandler;
|
|
this.getUserHandler = getUserHandler;
|
|
this.getUserByEmailHandler = getUserByEmailHandler;
|
|
this.addCompanyToUserHandler = addCompanyToUserHandler;
|
|
this.removeCompanyFromUserHandler = removeCompanyFromUserHandler;
|
|
this.addProjectToUserHandler = addProjectToUserHandler;
|
|
this.removeProjectFromUserHandler = removeProjectFromUserHandler;
|
|
this.loginUserHandler = loginUserHandler;
|
|
this.logoutUserHandler = logoutUserHandler;
|
|
this.validateUserHandler = validateUserHandler;
|
|
this.getTokenAdapterHandler = getTokenAdapterHandler;
|
|
this.getConsentFormPDFHandler = getConsentFormPDFHandler;
|
|
this.acceptUserConsentFormHandler = acceptUserConsentFormHandler;
|
|
this.port = port;
|
|
}
|
|
/// <summary>
|
|
/// Gets all the users.
|
|
/// </summary>
|
|
[HttpGet]
|
|
[Route("GetAll")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[Authorize(AuthenticationSchemes = Schemes.HeathScheme)]
|
|
[Permission("UserManagement.Read")]
|
|
public async Task<IActionResult> GetAllUsersAsync(CancellationToken cancellationToken)
|
|
{
|
|
await getAllUsersHandler.ExecuteAsync(new GetAllUsersRequest { }, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the user by identifier.
|
|
/// </summary>
|
|
[HttpPost]
|
|
[Route("GetById")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[Authorize(AuthenticationSchemes = Schemes.HeathScheme)]
|
|
[Permission("UserManagement.Read")]
|
|
public async Task<IActionResult> GetUserById([FromBody] GetUserRequest request, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request.Id)) { return BadRequest("Invalid user identifier"); }
|
|
|
|
await getUserHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the user by email.
|
|
/// </summary>
|
|
[HttpPost]
|
|
[Route("GetByEmail")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[Authorize(AuthenticationSchemes = $"{Schemes.HeathScheme}, {Schemes.AzureScheme}")]
|
|
public async Task<IActionResult> GetUserByEmail([FromBody] GetUserByEmailRequest request, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request.Email)) { return BadRequest("Invalid user email"); }
|
|
|
|
await getUserByEmailHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates a new user.
|
|
/// </summary>
|
|
[HttpPost]
|
|
[Route("Create")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[Authorize(AuthenticationSchemes = Schemes.HeathScheme)]
|
|
[Permission("UserManagement.Write")]
|
|
public async Task<IActionResult> CreateUserAsync([FromBody] CreateUserRequest newUser, CancellationToken cancellationToken = default)
|
|
{
|
|
await createUserHandler.ExecuteAsync(newUser, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates a full user by identifier.
|
|
/// </summary>
|
|
[HttpPut("Update")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[Authorize(AuthenticationSchemes = Schemes.HeathScheme)]
|
|
[Permission("UserManagement.Write")]
|
|
public async Task<IActionResult> UpdateUserAsync([FromBody] UpdateUserRequest request,
|
|
CancellationToken cancellationToken = default)
|
|
{
|
|
await updateUserHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Logs in the user.
|
|
/// </summary>
|
|
[HttpPatch("LoginUser")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[Authorize(AuthenticationSchemes = $"{Schemes.HeathScheme}, {Schemes.AzureScheme}")]
|
|
public async Task<IActionResult> LoginUserAsync([FromBody] LoginUserRequest request, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request.Email)) { return BadRequest("Invalid user email"); }
|
|
|
|
await loginUserHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Logs in the user.
|
|
/// </summary>
|
|
[HttpPatch("LogOutUser")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
public async Task<IActionResult> LogOutUserSessionAsync([FromBody] LogoutUserRequest request, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request.Email)) { return BadRequest("Invalid user email"); }
|
|
|
|
await logoutUserHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Changes the status of the user.
|
|
/// </summary>
|
|
[HttpPatch]
|
|
[Route("ChangeStatus")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[Authorize(AuthenticationSchemes = Schemes.HeathScheme)]
|
|
[Permission("UserManagement.Write")]
|
|
public async Task<IActionResult> ChangeUserStatusAsync([FromBody] ChangeUserStatusRequest request, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request.Id)) { return BadRequest("Invalid user identifier"); }
|
|
|
|
await ChangeUserStatusHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds a company to the user's list of companies.
|
|
/// </summary>
|
|
[HttpPost]
|
|
[Route("AddCompany")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[Authorize(AuthenticationSchemes = Schemes.HeathScheme)]
|
|
[Permission("UserManagement.Write")]
|
|
public async Task<IActionResult> AddCompanyToUserAsync([FromBody] AddCompanyToUserRequest request,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request.UserId)) { return BadRequest("Invalid user identifier"); }
|
|
if (string.IsNullOrEmpty(request.CompanyId)) { return BadRequest("Invalid company identifier"); }
|
|
|
|
await addCompanyToUserHandler.ExecuteAsync(request, cancellationToken);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Removes a company from the user's list of companies.
|
|
/// </summary>
|
|
[HttpDelete]
|
|
[Route("RemoveCompany")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[Authorize(AuthenticationSchemes = Schemes.HeathScheme)]
|
|
[Permission("UserManagement.Write")]
|
|
public async Task<IActionResult> RemoveCompanyFromUserAsync([FromBody] RemoveCompanyFromUserRequest request,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request.UserId)) { return BadRequest("Invalid user identifier"); }
|
|
if (string.IsNullOrEmpty(request.CompanyId)) { return BadRequest("Invalid company identifier"); }
|
|
|
|
await removeCompanyFromUserHandler.ExecuteAsync(request, cancellationToken);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds a project to the user's list of projects.
|
|
/// </summary>
|
|
[HttpPost]
|
|
[Route("AddProject")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[Authorize(AuthenticationSchemes = Schemes.HeathScheme)]
|
|
[Permission("UserManagement.Write")]
|
|
public async Task<IActionResult> AddProjectToUserAsync([FromBody] AddProjectToUserRequest request,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request.UserId)) { return BadRequest("Invalid user identifier"); }
|
|
if (string.IsNullOrEmpty(request.ProjectId)) { return BadRequest("Invalid project identifier"); }
|
|
|
|
await addProjectToUserHandler.ExecuteAsync(request, cancellationToken);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Removes a project from the user's list of projects.
|
|
/// </summary>
|
|
[HttpDelete]
|
|
[Route("RemoveProject")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[Authorize(AuthenticationSchemes = Schemes.HeathScheme)]
|
|
[Permission("UserManagement.Write")]
|
|
public async Task<IActionResult> RemoveProjectFromUserAsync([FromBody] RemoveProjectFromUserRequest request,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
|
|
if (string.IsNullOrEmpty(request.UserId)) { return BadRequest("Invalid user identifier"); }
|
|
if (string.IsNullOrEmpty(request.ProjectId)) { return BadRequest("Invalid project identifier"); }
|
|
|
|
await removeProjectFromUserHandler.ExecuteAsync(request, cancellationToken);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Validates if a user exists on the database.
|
|
/// </summary>
|
|
[HttpPost]
|
|
[Route("ValidateExistence")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[AllowAnonymous]
|
|
public async Task<IActionResult> ValidateUserExistenceAsync([FromBody] ValidateUserExistenceRequest request, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request.Email)) { return BadRequest("Invalid user email"); }
|
|
|
|
await validateUserHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets a token for the user, including roles, permissions, and modules.
|
|
/// </summary>
|
|
[HttpPost]
|
|
[Route("GetTokenAdapter")]
|
|
[ProducesResponseType(typeof(TokenAdapter), StatusCodes.Status200OK)]
|
|
[Authorize(AuthenticationSchemes = $"{Schemes.HeathScheme}, {Schemes.AzureScheme}")]
|
|
public async Task<IActionResult> GetTokenAdapter([FromBody] GetTokenAdapterRequest request, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request.Email)) { return BadRequest("Invalid user email"); }
|
|
|
|
await getTokenAdapterHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get Consent Form PDF.
|
|
/// </summary>
|
|
[HttpGet]
|
|
[Route("GetConsentFormPDF")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[Authorize(AuthenticationSchemes = Schemes.HeathScheme)]
|
|
[Permission("UserManagement.Read")]
|
|
public async Task<IActionResult> GetConsentFormPDFAsync(CancellationToken cancellationToken)
|
|
{
|
|
await getConsentFormPDFHandler.ExecuteAsync(new GetConsentFormPDFRequest { }, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Accept user consent form.
|
|
/// </summary>
|
|
[HttpPatch("AcceptUserConsentForm")]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status412PreconditionFailed)]
|
|
[ProducesResponseType(typeof(Notification), StatusCodes.Status422UnprocessableEntity)]
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest)]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
|
|
[Authorize(AuthenticationSchemes = $"{Schemes.HeathScheme}, {Schemes.AzureScheme}")]
|
|
public async Task<IActionResult> AcceptUserConsentFormAsync(CancellationToken cancellationToken)
|
|
{
|
|
await acceptUserConsentFormHandler.ExecuteAsync(new AcceptUserConsentFormRequest { }, cancellationToken).ConfigureAwait(false);
|
|
|
|
return port.ViewModel;
|
|
}
|
|
}
|
|
}
|