47 lines
1.8 KiB
Go
47 lines
1.8 KiB
Go
package usecase
|
|
|
|
import (
|
|
"backend/pkg/permission/domain/entity"
|
|
"context"
|
|
)
|
|
|
|
// RoleUseCase 角色用例介面
|
|
type RoleUseCase interface {
|
|
CreateRole(ctx context.Context, req CreateRoleRequest) (*entity.Role, error)
|
|
GetRole(ctx context.Context, id string) (*entity.Role, error)
|
|
GetRoleByUID(ctx context.Context, uid string) (*entity.Role, error)
|
|
UpdateRole(ctx context.Context, req UpdateRoleRequest) (*entity.Role, error)
|
|
DeleteRole(ctx context.Context, id string) error
|
|
ListRoles(ctx context.Context, req ListRolesRequest) ([]*entity.Role, error)
|
|
AddPermissionToRole(ctx context.Context, roleID string, permissionKey string) error
|
|
RemovePermissionFromRole(ctx context.Context, roleID string, permissionKey string) error
|
|
BatchUpdateRolePermissions(ctx context.Context, roleID string, permissions entity.Permissions) error
|
|
GetRolesByClientID(ctx context.Context, clientID string) ([]*entity.Role, error)
|
|
CopyRole(ctx context.Context, sourceRoleID string, req CreateRoleRequest) (*entity.Role, error)
|
|
}
|
|
|
|
// CreateRoleRequest 創建角色請求
|
|
type CreateRoleRequest struct {
|
|
ClientID string `json:"client_id"`
|
|
UID string `json:"uid"`
|
|
Name string `json:"name"`
|
|
Status int `json:"status"`
|
|
Permissions entity.Permissions `json:"permissions"`
|
|
}
|
|
|
|
// UpdateRoleRequest 更新角色請求
|
|
type UpdateRoleRequest struct {
|
|
ID string `json:"id"`
|
|
Name *string `json:"name,omitempty"`
|
|
Status *int `json:"status,omitempty"`
|
|
Permissions *entity.Permissions `json:"permissions,omitempty"`
|
|
}
|
|
|
|
// ListRolesRequest 列出角色請求
|
|
type ListRolesRequest struct {
|
|
ClientID string `json:"client_id,omitempty"`
|
|
Status *int `json:"status,omitempty"`
|
|
Limit int `json:"limit"`
|
|
Skip int `json:"skip"`
|
|
}
|