mirror of
https://github.com/directus/directus.git
synced 2026-01-26 08:38:16 -05:00
Support async preRegisterCheck for custom modules (#6118)
* Support async preRegisterCheck for custom modules * Make loop a tad more expressive * Update type to indicate potential promise return Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
This commit is contained in:
@@ -40,15 +40,18 @@ export async function register(): Promise<void> {
|
||||
const userStore = useUserStore();
|
||||
const permissionsStore = usePermissionsStore();
|
||||
|
||||
const registeredModules = queuedModules.filter((mod: any) => {
|
||||
if (!userStore.currentUser) return false;
|
||||
const registeredModules = [];
|
||||
|
||||
for (const mod of queuedModules) {
|
||||
if (!userStore.currentUser) continue;
|
||||
|
||||
if (mod.preRegisterCheck) {
|
||||
return mod.preRegisterCheck(userStore.currentUser, permissionsStore.permissions);
|
||||
const allowed = await mod.preRegisterCheck(userStore.currentUser, permissionsStore.permissions);
|
||||
if (allowed) registeredModules.push(mod);
|
||||
} else {
|
||||
registeredModules.push(mod);
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
for (const module of registeredModules) {
|
||||
router.addRoute({
|
||||
|
||||
@@ -10,7 +10,7 @@ export interface ModuleConfig {
|
||||
routes?: RouteRecordRaw[];
|
||||
link?: string;
|
||||
color?: string;
|
||||
preRegisterCheck?: (user: User, permissions: Permission[]) => boolean;
|
||||
preRegisterCheck?: (user: User, permissions: Permission[]) => Promise<boolean> | boolean;
|
||||
order?: number;
|
||||
persistent?: boolean;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user