From 7ecbe49bb6fb0760f1302c5c3ff5c08f7dbdf1c1 Mon Sep 17 00:00:00 2001 From: Tien Tran <76130324+t7tran@users.noreply.github.com> Date: Thu, 10 Jun 2021 04:16:17 +1000 Subject: [PATCH] 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 --- app/src/modules/register.ts | 15 +++++++++------ app/src/modules/types.ts | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) 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; }