Browse Source

add required policy to ActionApiDescriptionModel

pull/24870/head
Nico Lachmuth 8 months ago
parent
commit
86c393070c
  1. 11
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AspNetCoreApiDescriptionModelProvider.cs
  2. 5
      framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ActionApiDescriptionModel.cs

11
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AspNetCoreApiDescriptionModelProvider.cs

@ -121,13 +121,19 @@ public class AspNetCoreApiDescriptionModelProvider : IApiDescriptionModelProvide
Logger.LogDebug($"ActionApiDescriptionModel.Create: {controllerModel.ControllerName}.{uniqueMethodName}");
bool? allowAnonymous = null;
string? requiredPolicy = null;
if (apiDescription.ActionDescriptor.EndpointMetadata.Any(x => x is IAllowAnonymous))
{
allowAnonymous = true;
}
else if (apiDescription.ActionDescriptor.EndpointMetadata.Any(x => x is IAuthorizeData))
else
{
allowAnonymous = false;
var authorizeData = apiDescription.ActionDescriptor.EndpointMetadata.FirstOrDefault(x => x is IAuthorizeData);
if (authorizeData != null)
{
allowAnonymous = false;
requiredPolicy = (authorizeData as IAuthorizeData)?.Policy;
}
}
var implementFrom = controllerType.FullName;
@ -147,6 +153,7 @@ public class AspNetCoreApiDescriptionModelProvider : IApiDescriptionModelProvide
apiDescription.HttpMethod,
GetSupportedVersions(controllerType, method, setting),
allowAnonymous,
requiredPolicy,
implementFrom
)
);

5
framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ActionApiDescriptionModel.cs

@ -28,6 +28,8 @@ public class ActionApiDescriptionModel
public bool? AllowAnonymous { get; set; }
public string? RequiredPolicy { get; set; }
public string? ImplementFrom { get; set; }
public ActionApiDescriptionModel()
@ -35,7 +37,7 @@ public class ActionApiDescriptionModel
}
public static ActionApiDescriptionModel Create([NotNull] string uniqueName, [NotNull] MethodInfo method, [NotNull] string url, string? httpMethod, [NotNull] IList<string> supportedVersions, bool? allowAnonymous = null, string? implementFrom = null)
public static ActionApiDescriptionModel Create([NotNull] string uniqueName, [NotNull] MethodInfo method, [NotNull] string url, string? httpMethod, [NotNull] IList<string> supportedVersions, bool? allowAnonymous = null, string? requiredPolicy, string? implementFrom = null)
{
Check.NotNull(uniqueName, nameof(uniqueName));
Check.NotNull(method, nameof(method));
@ -56,6 +58,7 @@ public class ActionApiDescriptionModel
.ToList(),
SupportedVersions = supportedVersions,
AllowAnonymous = allowAnonymous,
RequiredPolicy = requiredPolicy,
ImplementFrom = implementFrom
};
}

Loading…
Cancel
Save