Skip to content

Commit

Permalink
perf: Avoid to create unnecessary list or array instance
Browse files Browse the repository at this point in the history
  • Loading branch information
Sagilio authored and Sagilio committed Jun 16, 2021
1 parent 32665df commit 7116898
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 45 deletions.
4 changes: 2 additions & 2 deletions NetCasbin/Extensions/Enforcer/ManagementEnforcerExtension.cs
Expand Up @@ -870,7 +870,7 @@ public static async Task<bool> AddNamedGroupingPoliciesAsync(this IEnforcer enfo
/// <returns>Succeeds or not.</returns>
public static bool RemoveGroupingPolicy(this IEnforcer enforcer, params string[] parameters)
{
return RemoveGroupingPolicy(enforcer, parameters.ToList());
return RemoveGroupingPolicy(enforcer, parameters as IEnumerable<string>);
}

/// <summary>
Expand All @@ -881,7 +881,7 @@ public static bool RemoveGroupingPolicy(this IEnforcer enforcer, params string[]
/// <returns>Succeeds or not.</returns>
public static Task<bool> RemoveGroupingPolicyAsync(this IEnforcer enforcer, params string[] parameters)
{
return RemoveGroupingPolicyAsync(enforcer, parameters.ToList());
return RemoveGroupingPolicyAsync(enforcer, parameters as IEnumerable<string>);
}

/// <summary>
Expand Down
97 changes: 54 additions & 43 deletions NetCasbin/Extensions/Enforcer/RbacEnforcerExtension.cs
Expand Up @@ -16,7 +16,7 @@ public static class RbacEnforcerExtension
/// <param name="name"></param>
/// <param name="domain"></param>
/// <returns></returns>
public static IEnumerable<string> GetRolesForUser(this IEnforcer enforcer, string name, string domain = null)
public static IEnumerable<string> GetRolesForUser(this IEnforcer enforcer, string name, string domain = null)
{
return domain is null
? enforcer.Model.Sections[PermConstants.Section.RoleSection][PermConstants.DefaultRoleType]
Expand Down Expand Up @@ -47,7 +47,18 @@ public static IEnumerable<string> GetUsersForRole(this IEnforcer enforcer, strin
/// <param name="enforcer"></param>
/// <param name="names"></param>
/// <returns></returns>
public static List<string> GetUsersForRoles(this IEnforcer enforcer, string[] names)
public static IEnumerable<string> GetUsersForRoles(this IEnforcer enforcer, params string[] names)
{
return enforcer.GetUsersForRoles(names as IEnumerable<string>);
}

/// <summary>
/// Gets the users that has roles.
/// </summary>
/// <param name="enforcer"></param>
/// <param name="names"></param>
/// <returns></returns>
public static IEnumerable<string> GetUsersForRoles(this IEnforcer enforcer, IEnumerable<string> names)
{
var userIds = new List<string>();
foreach (string name in names)
Expand All @@ -57,7 +68,6 @@ public static List<string> GetUsersForRoles(this IEnforcer enforcer, string[] na
}
return userIds;
}

#endregion

#region Has roles or users
Expand All @@ -79,7 +89,6 @@ public static bool HasRoleForUser(this IEnforcer enforcer, string name, string r
#endregion

#region Add roles or users

/// <summary>
/// Adds a role for a user.
/// </summary>
Expand Down Expand Up @@ -282,9 +291,9 @@ public static IEnumerable<IEnumerable<string>> GetPermissionsForUser(this IEnfor
/// <param name="user">User or role</param>
/// <param name="permission"></param>
/// <returns></returns>
public static bool HasPermissionForUser(this IEnforcer enforcer, string user, List<string> permission)
public static bool HasPermissionForUser(this IEnforcer enforcer, string user, params string[] permission)
{
return HasPermissionForUser(enforcer, user, permission.ToArray());
return HasPermissionForUser(enforcer, user, permission as IEnumerable<string>);
}

/// <summary>
Expand All @@ -294,7 +303,7 @@ public static bool HasPermissionForUser(this IEnforcer enforcer, string user, Li
/// <param name="user">User or role</param>
/// <param name="permission"></param>
/// <returns></returns>
public static bool HasPermissionForUser(this IEnforcer enforcer, string user, params string[] permission)
public static bool HasPermissionForUser(this IEnforcer enforcer, string user, IEnumerable<string> permission)
{
var parameters = new List<string>
{
Expand All @@ -314,22 +323,22 @@ public static bool HasPermissionForUser(this IEnforcer enforcer, string user, pa
/// <param name="enforcer"></param>
/// <param name="user">User or role</param>
/// <param name="permission"></param>
/// <returns>Returns false if the user or role already has the permission (aka not affected).</returns>
public static bool AddPermissionForUser(this IEnforcer enforcer, string user, List<string> permission)
/// <returns> Returns false if the user or role already has the permission (aka not affected).</returns>
public static bool AddPermissionForUser(this IEnforcer enforcer, string user, params string[] permission)
{
return AddPermissionForUser(enforcer, user, permission.ToArray());
return AddPermissionForUser(enforcer, user, permission as IEnumerable<string>);
}

/// <summary>
/// Adds multiple permissions for a user or role.
/// Adds a permission for a user or role.
/// </summary>
/// <param name="enforcer"></param>
/// <param name="user">User or role</param>
/// <param name="permission"></param>
/// <returns>Returns false if the user or role already has the permission (aka not affected).</returns>
public static Task<bool> AddPermissionForUserAsync(this IEnforcer enforcer, string user, List<string> permission)
/// <returns> Returns false if the user or role already has the permission (aka not affected).</returns>
public static Task<bool> AddPermissionForUserAsync(this IEnforcer enforcer, string user, params string[] permission)
{
return AddPermissionForUserAsync(enforcer, user, permission.ToArray());
return AddPermissionForUserAsync(enforcer, user, permission as IEnumerable<string>);
}

/// <summary>
Expand All @@ -338,26 +347,25 @@ public static Task<bool> AddPermissionForUserAsync(this IEnforcer enforcer, stri
/// <param name="enforcer"></param>
/// <param name="user">User or role</param>
/// <param name="permission"></param>
/// <returns> Returns false if the user or role already has the permission (aka not affected).</returns>
public static bool AddPermissionForUser(this IEnforcer enforcer, string user, params string[] permission)
/// <returns>Returns false if the user or role already has the permission (aka not affected).</returns>
public static bool AddPermissionForUser(this IEnforcer enforcer, string user, IEnumerable<string> permission)
{
var parameters = new[] {user}.Concat(permission);
return enforcer.AddPolicy(parameters.ToList());
return enforcer.AddPolicy(parameters);
}

/// <summary>
/// Adds a permission for a user or role.
/// Adds multiple permissions for a user or role.
/// </summary>
/// <param name="enforcer"></param>
/// <param name="user">User or role</param>
/// <param name="permission"></param>
/// <returns> Returns false if the user or role already has the permission (aka not affected).</returns>
public static Task<bool> AddPermissionForUserAsync(this IEnforcer enforcer, string user, params string[] permission)
/// <returns>Returns false if the user or role already has the permission (aka not affected).</returns>
public static Task<bool> AddPermissionForUserAsync(this IEnforcer enforcer, string user, IEnumerable<string> permission)
{
var parameters = new[] {user}.Concat(permission);
return enforcer.AddPolicyAsync(parameters.ToList());
return enforcer.AddPolicyAsync(parameters);
}

#endregion

#region Delete permissions
Expand All @@ -368,9 +376,9 @@ public static Task<bool> AddPermissionForUserAsync(this IEnforcer enforcer, stri
/// <param name="enforcer"></param>
/// <param name="permission"></param>
/// <returns>Returns false if the permission does not exist (aka not affected).</returns>
public static bool DeletePermission(this IEnforcer enforcer, List<string> permission)
public static bool DeletePermission(this IEnforcer enforcer, params string[] permission)
{
return DeletePermission(enforcer, permission.ToArray());
return enforcer.RemoveFilteredPolicy(1, permission);
}

/// <summary>
Expand All @@ -379,20 +387,21 @@ public static bool DeletePermission(this IEnforcer enforcer, List<string> permis
/// <param name="enforcer"></param>
/// <param name="permission"></param>
/// <returns>Returns false if the permission does not exist (aka not affected).</returns>
public static Task<bool> DeletePermissionAsync(this IEnforcer enforcer, List<string> permission)
public static Task<bool> DeletePermissionAsync(this IEnforcer enforcer, params string[] permission)
{
return DeletePermissionAsync(enforcer, permission.ToArray());
return enforcer.RemoveFilteredPolicyAsync(1, permission);
}


/// <summary>
/// DeletePermission deletes a permission.
/// </summary>
/// <param name="enforcer"></param>
/// <param name="permission"></param>
/// <returns>Returns false if the permission does not exist (aka not affected).</returns>
public static bool DeletePermission(this IEnforcer enforcer, params string[] permission)
public static bool DeletePermission(this IEnforcer enforcer, IEnumerable<string> permission)
{
return enforcer.RemoveFilteredPolicy(1, permission);
return DeletePermission(enforcer, permission.ToArray());
}

/// <summary>
Expand All @@ -401,9 +410,9 @@ public static bool DeletePermission(this IEnforcer enforcer, params string[] per
/// <param name="enforcer"></param>
/// <param name="permission"></param>
/// <returns>Returns false if the permission does not exist (aka not affected).</returns>
public static Task<bool> DeletePermissionAsync(this IEnforcer enforcer, params string[] permission)
public static Task<bool> DeletePermissionAsync(this IEnforcer enforcer, IEnumerable<string> permission)
{
return enforcer.RemoveFilteredPolicyAsync(1, permission);
return DeletePermissionAsync(enforcer, permission.ToArray());
}

/// <summary>
Expand All @@ -412,10 +421,10 @@ public static Task<bool> DeletePermissionAsync(this IEnforcer enforcer, params s
/// <param name="enforcer"></param>
/// <param name="user">User or role</param>
/// <param name="permission"></param>
/// <returns>Returns false if the user or role does not have any permissions (aka not affected).</returns>
public static bool DeletePermissionForUser(this IEnforcer enforcer, string user, List<string> permission)
/// <returns></returns>
public static bool DeletePermissionForUser(this IEnforcer enforcer, string user, params string[] permission)
{
return DeletePermissionForUser(enforcer, user, permission.ToArray());
return DeletePermissionForUser(enforcer, user, permission as IEnumerable<string>);
}

/// <summary>
Expand All @@ -424,23 +433,24 @@ public static bool DeletePermissionForUser(this IEnforcer enforcer, string user,
/// <param name="enforcer"></param>
/// <param name="user">User or role</param>
/// <param name="permission"></param>
/// <returns>Returns false if the user or role does not have any permissions (aka not affected).</returns>
public static Task<bool> DeletePermissionForUserAsync(this IEnforcer enforcer, string user, List<string> permission)
/// <returns></returns>
public static Task<bool> DeletePermissionForUserAsync(this IEnforcer enforcer, string user, params string[] permission)
{
return DeletePermissionForUserAsync(enforcer, user, permission.ToArray());
return DeletePermissionForUserAsync(enforcer, user, permission as IEnumerable<string>);
}


/// <summary>
/// DeletePermissionForUser deletes a permission for a user or role.
/// </summary>
/// <param name="enforcer"></param>
/// <param name="user">User or role</param>
/// <param name="permission"></param>
/// <returns></returns>
public static bool DeletePermissionForUser(this IEnforcer enforcer, string user, params string[] permission)
/// <returns>Returns false if the user or role does not have any permissions (aka not affected).</returns>
public static bool DeletePermissionForUser(this IEnforcer enforcer, string user, IEnumerable<string> permission)
{
var parameters = new[] {user}.Concat(permission);
return enforcer.RemovePolicy(parameters.ToList());
return enforcer.RemovePolicy(parameters);
}

/// <summary>
Expand All @@ -449,11 +459,12 @@ public static bool DeletePermissionForUser(this IEnforcer enforcer, string user,
/// <param name="enforcer"></param>
/// <param name="user">User or role</param>
/// <param name="permission"></param>
/// <returns></returns>
public static Task<bool> DeletePermissionForUserAsync(this IEnforcer enforcer, string user, params string[] permission)
/// <returns>Returns false if the user or role does not have any permissions (aka not affected).</returns>
public static Task<bool> DeletePermissionForUserAsync(this IEnforcer enforcer, string user, IEnumerable<string> permission)
{
var parameters = new[] {user}.Concat(permission);
return enforcer.RemovePolicyAsync(parameters.ToList());
return enforcer.RemovePolicyAsync(parameters);

}

/// <summary>
Expand Down Expand Up @@ -551,7 +562,7 @@ public static IEnumerable<IEnumerable<string>> GetImplicitPermissionsForUser(thi

public static IEnumerable<string> GetImplicitUsersForPermission(this IEnforcer enforcer, params string[] permission)
{
return GetImplicitUsersForPermission(enforcer, (IEnumerable<string>) permission);
return GetImplicitUsersForPermission(enforcer, permission as IEnumerable<string>);
}

public static IEnumerable<string> GetImplicitUsersForPermission(this IEnforcer enforcer, IEnumerable<string> permissions)
Expand Down

0 comments on commit 7116898

Please sign in to comment.