backend/pkg/permission/domain/usecase/role.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"`
}