using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Mvc; namespace Umbraco.Extensions { public static class ControllerExtensions { /// /// Runs the authentication process /// /// /// public static async Task AuthenticateBackOfficeAsync(this ControllerBase controller) { if (controller.HttpContext == null) { return AuthenticateResult.NoResult(); } var result = await controller.HttpContext.AuthenticateAsync(Cms.Core.Constants.Security.BackOfficeAuthenticationType); return result; } /// /// Return the controller name from the controller type /// /// /// public static string GetControllerName(Type controllerType) { if (!controllerType.Name.EndsWith("Controller")) { throw new InvalidOperationException("The controller type " + controllerType + " does not follow conventions, MVC Controller class names must be suffixed with the term 'Controller'"); } return controllerType.Name.Substring(0, controllerType.Name.LastIndexOf("Controller")); } /// /// Return the controller name from the controller instance /// /// /// public static string GetControllerName(this Controller controllerInstance) { return GetControllerName(controllerInstance.GetType()); } /// /// Return the controller name from the controller type /// /// /// /// public static string GetControllerName() { return GetControllerName(typeof(T)); } } }