diff --git a/app/src/modules/register.ts b/app/src/modules/register.ts index 1c9b0978e8..1539b86edc 100644 --- a/app/src/modules/register.ts +++ b/app/src/modules/register.ts @@ -40,15 +40,18 @@ export async function register(): Promise { 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({ diff --git a/app/src/modules/types.ts b/app/src/modules/types.ts index 004cb685e2..2c534e75d8 100644 --- a/app/src/modules/types.ts +++ b/app/src/modules/types.ts @@ -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; order?: number; persistent?: boolean; }