30 lines
1.7 KiB
C#
30 lines
1.7 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Umbraco.Cms.Core.Security.OperationStatus;
|
|
|
|
namespace Umbraco.Cms.Api.Management.Controllers.User.ClientCredentials;
|
|
|
|
[ApiExplorerSettings(GroupName = "User")]
|
|
public abstract class ClientCredentialsUserControllerBase : UserControllerBase
|
|
{
|
|
protected IActionResult BackOfficeUserClientCredentialsOperationStatusResult(BackOfficeUserClientCredentialsOperationStatus status) =>
|
|
OperationStatusResult(status, problemDetailsBuilder => status switch
|
|
{
|
|
BackOfficeUserClientCredentialsOperationStatus.InvalidUser => BadRequest(problemDetailsBuilder
|
|
.WithTitle("Invalid user")
|
|
.WithDetail("The specified user does not support this operation. Possibly caused by a mismatched client ID or an inapplicable user type.")
|
|
.Build()),
|
|
BackOfficeUserClientCredentialsOperationStatus.DuplicateClientId => BadRequest(problemDetailsBuilder
|
|
.WithTitle("Duplicate client ID")
|
|
.WithDetail("The specified client ID is already in use. Choose another client ID.")
|
|
.Build()),
|
|
BackOfficeUserClientCredentialsOperationStatus.InvalidClientId => BadRequest(problemDetailsBuilder
|
|
.WithTitle("Invalid client ID")
|
|
.WithDetail("The specified client ID is invalid. A valid client ID can only contain [a-z], [A-Z], [0-9], and [-._~]. Furthermore, including the prefix it cannot be longer than 255 characters.")
|
|
.Build()),
|
|
_ => StatusCode(StatusCodes.Status500InternalServerError, problemDetailsBuilder
|
|
.WithTitle("Unknown client credentials operation status.")
|
|
.Build()),
|
|
});
|
|
}
|