diff --git a/src/Kyoo.Authentication/Views/AccountApi.cs b/src/Kyoo.Authentication/Views/AccountApi.cs index 92af8127..3c424efd 100644 --- a/src/Kyoo.Authentication/Views/AccountApi.cs +++ b/src/Kyoo.Authentication/Views/AccountApi.cs @@ -29,6 +29,7 @@ using IdentityServer4.Services; using Kyoo.Abstractions.Controllers; using Kyoo.Abstractions.Models; using Kyoo.Abstractions.Models.Exceptions; +using Kyoo.Abstractions.Models.Utils; using Kyoo.Authentication.Models; using Kyoo.Authentication.Models.DTO; using Microsoft.AspNetCore.Authentication; @@ -36,14 +37,15 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; +using static Kyoo.Abstractions.Models.Utils.Constants; namespace Kyoo.Authentication.Views { /// - /// The class responsible for login, logout, permissions and claims of a user. + /// The endpoint responsible for login, logout, permissions and claims of a user. /// - [Route("api/account")] [Route("api/accounts")] + [Route("api/account", Order = AlternativeRoute)] [ApiController] public class AccountApi : Controller, IProfileService { @@ -78,11 +80,16 @@ namespace Kyoo.Authentication.Views } /// - /// Register a new user and return a OTAC to connect to it. + /// Register /// + /// + /// Register a new user and return a OTAC to connect to it. + /// /// The DTO register request /// A OTAC to connect to this new account [HttpPost("register")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status409Conflict, Type = typeof(RequestError))] public async Task Register([FromBody] RegisterRequest request) { User user = request.ToUser(); @@ -96,7 +103,7 @@ namespace Kyoo.Authentication.Views } catch (DuplicatedItemException) { - return Conflict(new { Errors = new { Duplicate = new[] { "A user with this name already exists" } } }); + return Conflict(new RequestError("A user with this name already exists")); } return Ok(new { Otac = user.ExtraData["otac"] }); diff --git a/src/Kyoo.Core/Views/ConfigurationApi.cs b/src/Kyoo.Core/Views/Admin/ConfigurationApi.cs similarity index 79% rename from src/Kyoo.Core/Views/ConfigurationApi.cs rename to src/Kyoo.Core/Views/Admin/ConfigurationApi.cs index 204634cd..a7a42bab 100644 --- a/src/Kyoo.Core/Views/ConfigurationApi.cs +++ b/src/Kyoo.Core/Views/Admin/ConfigurationApi.cs @@ -19,18 +19,23 @@ using System; using System.Threading.Tasks; using Kyoo.Abstractions.Controllers; +using Kyoo.Abstractions.Models.Attributes; using Kyoo.Abstractions.Models.Exceptions; using Kyoo.Abstractions.Models.Permissions; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using static Kyoo.Abstractions.Models.Utils.Constants; namespace Kyoo.Core.Api { /// /// An API to retrieve or edit configuration settings /// - [Route("api/config")] [Route("api/configuration")] + [Route("api/config", Order = AlternativeRoute)] [ApiController] + [PartialPermission("Configuration", Group = Group.Admin)] + [ApiDefinition("Configuration", Group = AdminGroup)] public class ConfigurationApi : Controller { /// @@ -48,14 +53,19 @@ namespace Kyoo.Core.Api } /// - /// Get a permission from it's slug. + /// Get config value /// + /// + /// Retrieve a configuration's value from it's slug. + /// /// The permission to retrieve. You can use ':' or "__" to get a child value. /// The associate value or list of values. /// Return the configuration value or the list of configurations /// No configuration exists for the given slug [HttpGet("{slug}")] - [Permission(nameof(ConfigurationApi), Kind.Read, Group.Admin)] + [PartialPermission(Kind.Read)] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] public ActionResult GetConfiguration(string slug) { try @@ -69,15 +79,20 @@ namespace Kyoo.Core.Api } /// - /// Edit a permission from it's slug. + /// Edit config /// + /// + /// Edit a configuration's value from it's slug. + /// /// The permission to edit. You can use ':' or "__" to get a child value. /// The new value of the configuration /// The edited value. /// Return the edited value /// No configuration exists for the given slug [HttpPut("{slug}")] - [Permission(nameof(ConfigurationApi), Kind.Write, Group.Admin)] + [PartialPermission(Kind.Write)] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task> EditConfiguration(string slug, [FromBody] object newValue) { try