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

38 lines
1.3 KiB
Go

package usecase
import (
"backend/pkg/permission/domain/permission"
"context"
)
// PermissionUseCase 權限業務邏輯介面
type PermissionUseCase interface {
// GetAll 取得所有權限
GetAll(ctx context.Context) ([]*PermissionResponse, error)
// GetTree 取得權限樹
GetTree(ctx context.Context) (*PermissionTreeNode, error)
// GetByHTTP 根據 HTTP 資訊取得權限
GetByHTTP(ctx context.Context, path, method string) (*PermissionResponse, error)
// ExpandPermissions 展開權限 (包含父權限)
ExpandPermissions(ctx context.Context, permissions permission.Permissions) (permission.Permissions, error)
// GetUsersByPermission 取得擁有指定權限的所有使用者
GetUsersByPermission(ctx context.Context, permissionNames []string) ([]string, error)
}
// PermissionResponse 權限回應
type PermissionResponse struct {
ID string `json:"id"`
ParentID string `json:"parent_id"`
Name string `json:"name"`
HTTPPath string `json:"http_path,omitempty"`
HTTPMethod string `json:"http_method,omitempty"`
Status permission.AccessState `json:"status"`
Type permission.Type `json:"type"`
}
// PermissionTreeNode 權限樹節點
type PermissionTreeNode struct {
*PermissionResponse
Children []*PermissionTreeNode `json:"children,omitempty"`
}