Add MFA Flow also to Super Admin (#186)
* Add MFA flow to Super Admin checks
This commit is contained in:
committed by
GitHub
parent
e9f323e5f2
commit
68c6d51d33
@@ -115,6 +115,18 @@ async function adminMiddleware(request: NextRequest, response: NextResponse) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const supabase = createMiddlewareClient(request, response);
|
||||||
|
|
||||||
|
const requiresMultiFactorAuthentication =
|
||||||
|
await checkRequiresMultiFactorAuthentication(supabase);
|
||||||
|
|
||||||
|
// If user requires multi-factor authentication, redirect to MFA page.
|
||||||
|
if (requiresMultiFactorAuthentication) {
|
||||||
|
return NextResponse.redirect(
|
||||||
|
new URL(pathsConfig.auth.verifyMfa, origin).href,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const role = user?.app_metadata.role;
|
const role = user?.app_metadata.role;
|
||||||
|
|
||||||
// If user is not an admin, redirect to 404 page.
|
// If user is not an admin, redirect to 404 page.
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { SupabaseClient } from '@supabase/supabase-js';
|
import { SupabaseClient } from '@supabase/supabase-js';
|
||||||
|
|
||||||
|
import { checkRequiresMultiFactorAuthentication } from '@kit/supabase/check-requires-mfa';
|
||||||
import { Database } from '@kit/supabase/database';
|
import { Database } from '@kit/supabase/database';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,6 +19,14 @@ export async function isSuperAdmin(client: SupabaseClient<Database>) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const requiresMultiFactorAuthentication =
|
||||||
|
await checkRequiresMultiFactorAuthentication(client);
|
||||||
|
|
||||||
|
// If user requires multi-factor authentication, deny access.
|
||||||
|
if (requiresMultiFactorAuthentication) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const appMetadata = data.user.app_metadata;
|
const appMetadata = data.user.app_metadata;
|
||||||
|
|
||||||
return appMetadata?.role === 'super-admin';
|
return appMetadata?.role === 'super-admin';
|
||||||
|
|||||||
Reference in New Issue
Block a user