forked from ddrilling/AsbCloudServer
AdminPermissionController. Add method to generate names of auto-permissions.
This commit is contained in:
parent
f81dcf2a46
commit
e0bfc8d420
@ -2,6 +2,10 @@ using AsbCloudApp.Data;
|
|||||||
using AsbCloudApp.Services;
|
using AsbCloudApp.Services;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.AspNetCore.Mvc.Routing;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
namespace AsbCloudWebApi.Controllers
|
namespace AsbCloudWebApi.Controllers
|
||||||
{
|
{
|
||||||
@ -13,5 +17,30 @@ namespace AsbCloudWebApi.Controllers
|
|||||||
public AdminPermissionController(ICrudService<PermissionDto> service)
|
public AdminPermissionController(ICrudService<PermissionDto> service)
|
||||||
:base(service)
|
:base(service)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
[HttpGet("Autogenerated")]
|
||||||
|
public IActionResult GetAutogenerated()
|
||||||
|
{
|
||||||
|
var controllers = Assembly.GetExecutingAssembly().GetTypes().
|
||||||
|
Where(type => typeof(ControllerBase).IsAssignableFrom(type) && !type.IsAbstract)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
var permissions = new SortedSet<string>();
|
||||||
|
foreach (var controller in controllers)
|
||||||
|
{
|
||||||
|
var methods = controller.GetMethods().Where(m => m.IsPublic);
|
||||||
|
var controllerName = controller.Name.Replace("Controller", "");
|
||||||
|
foreach (var method in methods)
|
||||||
|
{
|
||||||
|
var httpMethod = method.GetCustomAttribute<HttpMethodAttribute>()?.HttpMethods?.First();
|
||||||
|
if (string.IsNullOrEmpty(httpMethod))
|
||||||
|
continue;
|
||||||
|
permissions.Add($"{controllerName}.{httpMethod.ToLower()}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ok(permissions);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user