backend/pkg/permission/domain/usecase/user_role.go

50 lines
1.7 KiB
Go

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"`
}