package usecase import ( "context" "gateway/internal/model/permission/domain/enum" ) // MePermissionsResponse is the shape consumed by frontend client code to // render menu/feature switches. Status enables the legacy permission-server // "open/close" pattern so keys can be hidden without removing rules. type MePermissionsResponse struct { UID string `json:"uid"` TenantID string `json:"tenant_id"` Roles []string `json:"roles"` Permissions enum.Permissions `json:"permissions"` Tree []*PermissionTreeNode `json:"tree,omitempty"` } // AuthorizationQueryUseCase composes Role + RolePermission + Permission + // PermissionTree to materialise the "what can the current user see" map // returned by GET /permissions/me. type AuthorizationQueryUseCase interface { Me(ctx context.Context, tenantID, uid string, includeTree bool) (*MePermissionsResponse, error) }