Class RoleProviderBase
Base implementation of role provider with common business logic.
Database-specific providers inherit from this class and provide ISqlDialect.
Usage:
public class PostgresRoleProvider : RoleProviderBase
{
public PostgresRoleProvider(IRedbContext context, IRedbSecurityContext security)
: base(context, security, new PostgreSqlDialect()) { }
}
public abstract class RoleProviderBase : IRoleProvider
Inheritance
Implements
Derived
Methods
AssignUserToRoleAsync(IRedbUser, IRedbRole, IRedbUser?)
Assign role to user.
public virtual Task<bool> AssignUserToRoleAsync(IRedbUser user, IRedbRole role, IRedbUser? currentUser = null)
CreateRoleAsync(CreateRoleRequest, IRedbUser?)
Create new role.
public virtual Task<IRedbRole> CreateRoleAsync(CreateRoleRequest request, IRedbUser? currentUser = null)
DeleteRoleAsync(IRedbRole, IRedbUser?)
Delete role.
public virtual Task<bool> DeleteRoleAsync(IRedbRole role, IRedbUser? currentUser = null)
GetRoleByIdInternalAsync(long)
Get role by ID from database.
protected virtual Task<RedbRole?> GetRoleByIdInternalAsync(long roleId)
GetRoleByNameAsync(string)
Get role by name.
public virtual Task<IRedbRole?> GetRoleByNameAsync(string roleName)
GetRoleByNameInternalAsync(string)
Get role by name from database.
protected virtual Task<RedbRole?> GetRoleByNameInternalAsync(string name)
GetRoleConfigurationIdAsync(long)
Get role configuration ID.
public virtual Task<long?> GetRoleConfigurationIdAsync(long roleId)
GetRoleStatisticsAsync()
Get role statistics (role -> user count).
public virtual Task<Dictionary<IRedbRole, int>> GetRoleStatisticsAsync()
GetRoleUserCountAsync(IRedbRole)
Get user count in role.
public virtual Task<int> GetRoleUserCountAsync(IRedbRole role)
GetRoleUsersAsync(IRedbRole)
Get role users.
public virtual Task<List<IRedbUser>> GetRoleUsersAsync(IRedbRole role)
GetUserRolesAsync(IRedbUser)
Get user roles.
public virtual Task<List<IRedbRole>> GetUserRolesAsync(IRedbUser user)
InsertRoleInternalAsync(long, string)
Insert role into database. Override for DB-specific optimizations (e.g., RETURNING).
protected virtual Task InsertRoleInternalAsync(long roleId, string name)
IsRoleNameAvailableAsync(string, IRedbRole?)
Check role name availability.
public virtual Task<bool> IsRoleNameAvailableAsync(string roleName, IRedbRole? excludeRole = null)
LoadRoleAsync(long)
Load role by ID (throws exception if not found).
public virtual Task<IRedbRole> LoadRoleAsync(long roleId)
LoadRoleAsync(string)
Load role by name (throws exception if not found).
public virtual Task<IRedbRole> LoadRoleAsync(string roleName)
OnRoleCreatedAsync(IRedbRole, IRedbUser?)
Called after role is created. Override in Pro to add audit logging.
protected virtual Task OnRoleCreatedAsync(IRedbRole role, IRedbUser? currentUser)
OnRoleDeletedAsync(IRedbRole, IRedbUser?)
Called after role is deleted. Override in Pro to add audit logging.
protected virtual Task OnRoleDeletedAsync(IRedbRole role, IRedbUser? currentUser)
OnRoleUpdatedAsync(IRedbRole, IRedbUser?)
Called after role is updated. Override in Pro to add audit logging.
protected virtual Task OnRoleUpdatedAsync(IRedbRole role, IRedbUser? currentUser)
RemoveUserFromRoleAsync(IRedbUser, IRedbRole, IRedbUser?)
Remove role from user.
public virtual Task<bool> RemoveUserFromRoleAsync(IRedbUser user, IRedbRole role, IRedbUser? currentUser = null)
SetRoleConfigurationAsync(long, long?)
Set role configuration.
public virtual Task SetRoleConfigurationAsync(long roleId, long? configId)
SetUserRolesAsync(IRedbUser, IRedbRole[], IRedbUser?)
Set user roles (replace all existing).
public virtual Task<bool> SetUserRolesAsync(IRedbUser user, IRedbRole[] roles, IRedbUser? currentUser = null)
UpdateRoleAsync(IRedbRole, string, IRedbUser?)
Update role.
public virtual Task<IRedbRole> UpdateRoleAsync(IRedbRole role, string newName, IRedbUser? currentUser = null)
UserHasRoleAsync(IRedbUser, IRedbRole)
Check if user has role.
public virtual Task<bool> UserHasRoleAsync(IRedbUser user, IRedbRole role)