using e_suite.API.Common; using e_suite.API.Common.models; using e_suite.Utilities.Pagination; using eSuite.API.security; using eSuite.API.Utilities; using eSuite.Core.Miscellaneous; using eSuite.Core.Security; using Microsoft.AspNetCore.Mvc; namespace eSuite.API.Controllers; /// /// Sso manager is responsible for configuring Single Sign On Providers /// [Route("api/[controller]")] public class SsoManagerController : ESuiteControllerBase { private readonly ISsoManager _ssoManager; /// /// Constructor for the SsoManager /// /// public SsoManagerController(ISsoManager ssoManager) { _ssoManager = ssoManager; } /// /// Gets all SsoProviders /// /// Collection of all SsoProviders [Route("ssoProviders")] [HttpGet] [AccessKey(SecurityAccess.ViewSsoProviders)] [ProducesResponseType(StatusCodes.Status200OK)] public async Task GetProviders( [FromQuery] Paging paging, CancellationToken cancellationToken = default! ) { var result = await _ssoManager.GetSsoProvidersAsync(paging, cancellationToken); return Ok(result); } /// /// Get SsoProvider details /// /// /// /// [Route("ssoProvider")] [HttpGet] [AccessKey(SecurityAccess.ViewSsoProviders)] [ProducesResponseType(StatusCodes.Status200OK)] public async Task GetProvider( [FromQuery] GeneralIdRef generalIdRef, CancellationToken cancellationToken = default! ) { var result = await _ssoManager.GetSsoProviderAsync(generalIdRef, cancellationToken); return Ok(result); } /// /// Add new Sso Provider /// /// /// /// [Route("ssoProvider")] [HttpPost] [AccessKey(SecurityAccess.AddSsoProvider)] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ProblemDetails))] public async Task AddProvider( [FromBody] CreateSsoProvider ssoProvider, CancellationToken cancellationToken = default! ) { await _ssoManager.AddSsoProviderAsync(AuditUserDetails, ssoProvider, cancellationToken); return Ok(); } /// /// Edit SsoProvider /// /// /// /// [Route("ssoProvider")] [HttpPut] [AccessKey(SecurityAccess.EditSsoProvider)] [ProducesResponseType(StatusCodes.Status200OK)] public async Task EditSsoProvider( [FromBody] EditSsoProvider editedSsoProvider, CancellationToken cancellationToken = default! ) { await _ssoManager.EditSsoProviderAsync(AuditUserDetails, editedSsoProvider, cancellationToken); return Ok(); } /// /// Delete SsoProvider /// /// /// /// [Route("ssoProvider")] [HttpDelete] [AccessKey(SecurityAccess.DeleteSsoProvider)] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound, Type = typeof(ProblemDetails))] [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ProblemDetails))] public async Task DeleteSsoProvider( [FromBody] GeneralIdRef generalIdRef, CancellationToken cancellationToken = default! ) { await _ssoManager.RemoveSsoProviderAsync(AuditUserDetails, generalIdRef, cancellationToken); return Ok(); } }