Skip to content
Closed
Original file line number Diff line number Diff line change
Expand Up @@ -368,13 +368,30 @@ private static List<object> BuildParameterMetadataInfo(List<ParameterMetadata>?
/// <returns>A list of permissions available to the entity</returns>
private static string[] BuildPermissionsInfo(Entity entity)
{
HashSet<string> permissions = new();
if (entity.Permissions == null)
{
return Array.Empty<string>();
}

bool isStoredProcedure = entity.Source.Type == EntitySourceType.StoredProcedure;
HashSet<EntityActionOperation> validOperations = isStoredProcedure
? EntityAction.ValidStoredProcedurePermissionOperations
: EntityAction.ValidPermissionOperations;

if (entity.Permissions != null)
HashSet<string> permissions = new(StringComparer.OrdinalIgnoreCase);

foreach (EntityPermission permission in entity.Permissions)
{
foreach (EntityPermission permission in entity.Permissions)
foreach (EntityAction action in permission.Actions)
{
foreach (EntityAction action in permission.Actions)
if (action.Action == EntityActionOperation.All)
{
foreach (EntityActionOperation op in validOperations)
{
permissions.Add(op.ToString().ToUpperInvariant());
}
}
else
{
permissions.Add(action.Action.ToString().ToUpperInvariant());
}
Expand Down
Loading