using OrpaonVision.Core.Results; using OrpaonVision.Model.Security; namespace OrpaonVision.Core.Security; /// /// 用户仓储接口。 /// public interface IUserStore { /// /// 根据用户ID获取用户。 /// Task> GetByIdAsync(Guid id); /// /// 根据用户名获取用户。 /// Task> GetByUsernameAsync(string username); /// /// 创建用户。 /// Task> CreateAsync(UserModel user); /// /// 更新用户。 /// Task> UpdateAsync(UserModel user); /// /// 删除用户。 /// Task DeleteAsync(Guid id); /// /// 检查用户名是否存在。 /// Task> UsernameExistsAsync(string username); /// /// 获取用户列表(分页)。 /// Task users, int totalCount)>> GetPagedListAsync( int pageIndex, int pageSize, string? keyword = null, UserStatus? status = null); /// /// 更新最后登录信息。 /// Task UpdateLastLoginAsync(Guid userId, string ipAddress); } /// /// 角色仓储接口。 /// public interface IRoleStore { /// /// 根据角色ID获取角色。 /// Task> GetByIdAsync(Guid id); /// /// 根据角色名称获取角色。 /// Task> GetByNameAsync(string name); /// /// 创建角色。 /// Task> CreateAsync(RoleModel role); /// /// 更新角色。 /// Task> UpdateAsync(RoleModel role); /// /// 删除角色。 /// Task DeleteAsync(Guid id); /// /// 检查角色名称是否存在。 /// Task> NameExistsAsync(string name); /// /// 获取角色列表(分页)。 /// Task roles, int totalCount)>> GetPagedListAsync( int pageIndex, int pageSize, string? keyword = null, RoleStatus? status = null); /// /// 获取所有启用的角色。 /// Task>> GetAllEnabledAsync(); } /// /// 权限仓储接口。 /// public interface IPermissionStore { /// /// 根据权限ID获取权限。 /// Task> GetByIdAsync(Guid id); /// /// 根据权限编码获取权限。 /// Task> GetByCodeAsync(string code); /// /// 创建权限。 /// Task> CreateAsync(PermissionModel permission); /// /// 更新权限。 /// Task> UpdateAsync(PermissionModel permission); /// /// 删除权限。 /// Task DeleteAsync(Guid id); /// /// 检查权限编码是否存在。 /// Task> CodeExistsAsync(string code); /// /// 获取权限列表(分页)。 /// Task permissions, int totalCount)>> GetPagedListAsync( int pageIndex, int pageSize, string? keyword = null, PermissionType? type = null, PermissionStatus? status = null); /// /// 根据模块获取权限列表。 /// Task>> GetByModuleAsync(string module); /// /// 获取所有启用的权限。 /// Task>> GetAllEnabledAsync(); } /// /// 用户角色仓储接口。 /// public interface IUserRoleStore { /// /// 分配角色给用户。 /// Task> AssignAsync(Guid userId, Guid roleId, string grantedBy); /// /// 取消用户角色分配。 /// Task UnassignAsync(Guid userId, Guid roleId); /// /// 获取用户的角色列表。 /// Task>> GetUserRolesAsync(Guid userId); /// /// 获取角色的用户列表。 /// Task>> GetRoleUsersAsync(Guid roleId); /// /// 检查用户是否拥有指定角色。 /// Task> UserHasRoleAsync(Guid userId, Guid roleId); /// /// 检查用户是否拥有指定角色名称。 /// Task> UserHasRoleAsync(Guid userId, string roleName); /// /// 获取用户角色关联记录。 /// Task> GetAssignmentAsync(Guid userId, Guid roleId); /// /// 更新用户角色关联状态。 /// Task> UpdateAssignmentAsync(UserRoleModel userRole); /// /// 获取用户角色关联列表(分页)。 /// Task assignments, int totalCount)>> GetPagedListAsync( int pageIndex, int pageSize, Guid? userId = null, Guid? roleId = null); } /// /// 角色权限仓储接口。 /// public interface IRolePermissionStore { /// /// 分配权限给角色。 /// Task> AssignAsync(Guid roleId, Guid permissionId, string grantedBy); /// /// 取消角色权限分配。 /// Task UnassignAsync(Guid roleId, Guid permissionId); /// /// 获取角色的权限列表。 /// Task>> GetRolePermissionsAsync(Guid roleId); /// /// 获取权限的角色列表。 /// Task>> GetPermissionRolesAsync(Guid permissionId); /// /// 检查角色是否拥有指定权限。 /// Task> RoleHasPermissionAsync(Guid roleId, Guid permissionId); /// /// 检查角色是否拥有指定权限编码。 /// Task> RoleHasPermissionAsync(Guid roleId, string permissionCode); /// /// 获取角色权限关联记录。 /// Task> GetAssignmentAsync(Guid roleId, Guid permissionId); /// /// 更新角色权限关联状态。 /// Task> UpdateAssignmentAsync(RolePermissionModel rolePermission); /// /// 获取角色权限关联列表(分页)。 /// Task assignments, int totalCount)>> GetPagedListAsync( int pageIndex, int pageSize, Guid? roleId = null, Guid? permissionId = null); } /// /// 操作日志仓储接口。 /// public interface IOperationLogStore { /// /// 记录操作日志。 /// Result LogAsync(OperationLogModel log); /// /// 获取操作日志列表(分页)。 /// Result<(IReadOnlyList logs, int totalCount)> GetPagedListAsync( int pageIndex, int pageSize, Guid? userId = null, OperationType? operationType = null, string? module = null, DateTime? startTime = null, DateTime? endTime = null); /// /// 获取用户最近的操作日志。 /// Result> GetUserRecentLogsAsync(Guid userId, int count = 10); /// /// 清理过期日志。 /// Result CleanupExpiredLogsAsync(DateTime expireBefore); }