package usecase import ( "backend/pkg/permission/domain/entity" "context" ) // UserRoleUseCase 用戶角色用例介面 type UserRoleUseCase interface { AssignRole(ctx context.Context, req AssignRoleRequest) (*entity.UserRole, error) RevokeRole(ctx context.Context, uid, roleUID string) error GetUserRole(ctx context.Context, id string) (*entity.UserRole, error) UpdateUserRole(ctx context.Context, req UpdateUserRoleRequest) (*entity.UserRole, error) ListUserRoles(ctx context.Context, req ListUserRolesRequest) ([]*entity.UserRole, error) GetUserRoles(ctx context.Context, uid string) ([]*entity.UserRole, error) GetUserRoleDetails(ctx context.Context, uid string) ([]*UserRoleDetail, error) BatchAssignRoles(ctx context.Context, uid string, roleUIDs []string, brand string) error BatchRevokeRoles(ctx context.Context, uid string, roleUIDs []string) error ReplaceUserRoles(ctx context.Context, uid string, roleUIDs []string, brand string) error } // AssignRoleRequest 分配角色請求 type AssignRoleRequest struct { Brand string `json:"brand"` UID string `json:"uid"` RoleUID string `json:"role_uid"` } // UpdateUserRoleRequest 更新用戶角色請求 type UpdateUserRoleRequest struct { ID string `json:"id"` Status *int `json:"status,omitempty"` } // ListUserRolesRequest 列出用戶角色請求 type ListUserRolesRequest struct { Brand string `json:"brand,omitempty"` UID string `json:"uid,omitempty"` RoleUID string `json:"role_uid,omitempty"` Status *int `json:"status,omitempty"` Limit int `json:"limit"` Skip int `json:"skip"` } // UserRoleDetail 用戶角色詳情 type UserRoleDetail struct { UserRole *entity.UserRole `json:"user_role"` Role *entity.Role `json:"role"` }