using System.Collections.Generic;
using System.Threading.Tasks;
using IwbZero.Authorization.Base.Permissions;
namespace IwbZero.Authorization.Base.Users
{
///
/// Used to perform permission database operations for a user.
///
public interface IUserPermissionStore
where TUser : UserBase
{
///
/// Adds a permission grant setting to a user.
///
/// User
/// Permission grant setting info
Task AddPermissionAsync(TUser user, PermissionGrantInfo permissionGrant);
///
/// Removes a permission grant setting from a user.
///
/// User
/// Permission grant setting info
Task RemovePermissionAsync(TUser user, PermissionGrantInfo permissionGrant);
///
/// Gets permission grant setting informations for a user.
///
/// User id
/// List of permission setting informations
Task> GetPermissionsAsync(long userId);
///
/// Checks whether a role has a permission grant setting info.
///
/// User id
/// Permission grant setting info
///
Task HasPermissionAsync(long userId, PermissionGrantInfo permissionGrant);
///
/// Deleted all permission settings for a role.
///
/// User
Task RemoveAllPermissionSettingsAsync(TUser user);
}
}