1
import { ForbiddenError } from '@directus/errors';
22
} from '../services/index.js';
23
import type { AbstractServiceOptions } from '../types/services.js';
26
* Select the correct service for the given collection. This allows the individual services to run
27
* their custom checks (f.e. it allows `UsersService` to prevent updating TFA secret from outside).
29
export function getService(collection: string, opts: AbstractServiceOptions): ItemsService {
31
case 'directus_activity':
32
return new ActivityService(opts);
33
case 'directus_dashboards':
34
return new DashboardsService(opts);
35
case 'directus_files':
36
return new FilesService(opts);
37
case 'directus_flows':
38
return new FlowsService(opts);
39
case 'directus_folders':
40
return new FoldersService(opts);
41
case 'directus_notifications':
42
return new NotificationsService(opts);
43
case 'directus_operations':
44
return new OperationsService(opts);
45
case 'directus_panels':
46
return new PanelsService(opts);
47
case 'directus_permissions':
48
return new PermissionsService(opts);
49
case 'directus_presets':
50
return new PresetsService(opts);
51
case 'directus_revisions':
52
return new RevisionsService(opts);
53
case 'directus_roles':
54
return new RolesService(opts);
55
case 'directus_settings':
56
return new SettingsService(opts);
57
case 'directus_shares':
58
return new SharesService(opts);
59
case 'directus_translations':
60
return new TranslationsService(opts);
61
case 'directus_users':
62
return new UsersService(opts);
63
case 'directus_versions':
64
return new VersionsService(opts);
65
case 'directus_webhooks':
66
return new WebhooksService(opts);
68
// Deny usage of other system collections via ItemsService
69
if (collection.startsWith('directus_')) throw new ForbiddenError();
71
return new ItemsService(collection, opts);