feature: lodge insurance
This commit is contained in:
@@ -134,6 +134,7 @@ namespace Disco.Services.Plugins
|
||||
private readonly PluginControllerDescription controllerDescription;
|
||||
private readonly MethodInfo methodInfo;
|
||||
private readonly IAuthorizationFilter[] authorizationFilters;
|
||||
private readonly ActionMethodSelectorAttribute methodSelector;
|
||||
private readonly PluginParameterDescriptor[] parameterDescriptors;
|
||||
public override string UniqueId { get; }
|
||||
public override string ActionName { get; }
|
||||
@@ -146,6 +147,7 @@ namespace Disco.Services.Plugins
|
||||
UniqueId = $"{ControllerDescriptor.UniqueId}_{methodName}";
|
||||
ActionName = methodName;
|
||||
authorizationFilters = DiscoverAuthorizationFilters();
|
||||
methodSelector = DiscoverMethodSelector();
|
||||
parameterDescriptors = DiscoverParameters();
|
||||
}
|
||||
|
||||
@@ -159,6 +161,11 @@ namespace Disco.Services.Plugins
|
||||
return filters.ToArray();
|
||||
}
|
||||
|
||||
private ActionMethodSelectorAttribute DiscoverMethodSelector()
|
||||
{
|
||||
return methodInfo.GetCustomAttributes<ActionMethodSelectorAttribute>(true).FirstOrDefault();
|
||||
}
|
||||
|
||||
private PluginParameterDescriptor[] DiscoverParameters()
|
||||
{
|
||||
var methodParams = methodInfo.GetParameters();
|
||||
@@ -187,6 +194,9 @@ namespace Disco.Services.Plugins
|
||||
|
||||
public ActionResult Execute(PluginWebHandlerController pluginController, ControllerContext controllerContext)
|
||||
{
|
||||
if (methodSelector != null && !methodSelector.IsValidForRequest(controllerContext, methodInfo))
|
||||
return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);
|
||||
|
||||
var methodParameters = BuildMethodParameters(methodInfo, controllerContext.Controller);
|
||||
|
||||
return (ActionResult)methodInfo.Invoke(pluginController, methodParameters);
|
||||
|
||||
Reference in New Issue
Block a user