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:
Tien Tran
2021-06-10 04:16:17 +10:00
committed by GitHub
parent a2a35aaab5
commit 7ecbe49bb6
2 changed files with 10 additions and 7 deletions

View File

@@ -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({

View File

@@ -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;
}