using System.Collections.Generic;
using System.Threading.Tasks;
using IwbZero.Authorization.Base.Permissions;
namespace IwbZero.Authorization.Base.Roles
{
///
/// Used to perform permission database operations for a role.
///
public interface IRolePermissionStore
where TRole : RoleBase
{
///
/// Adds a permission grant setting to a role.
///
/// Role
/// Permission grant setting info
Task AddPermissionAsync(TRole role, PermissionGrantInfo permissionGrant);
///
/// Removes a permission grant setting from a role.
///
/// Role
/// Permission grant setting info
Task RemovePermissionAsync(TRole role, PermissionGrantInfo permissionGrant);
///
/// Gets permission grant setting informations for a role.
///
/// Role
/// List of permission setting informations
Task> GetPermissionsAsync(TRole role);
///
/// Gets permission grant setting informations for a role.
///
/// Role id
/// List of permission setting informations
Task> GetPermissionsAsync(int roleId);
///
/// Checks whether a role has a permission grant setting info.
///
/// Role id
/// Permission grant setting info
///
Task HasPermissionAsync(int roleId, PermissionGrantInfo permissionGrant);
///
/// Deleted all permission settings for a role.
///
/// Role
Task RemoveAllPermissionSettingsAsync(TRole role);
}
}