@damourlabs/euro-clinical-trials
Version:
A Nuxt 3 application for visualizing and managing clinical trials data in Europe, built with modern web technologies.
66 lines (52 loc) • 1.96 kB
text/typescript
/**
* Composable for auth configuration management
* Allows the main app to override auth layer defaults
*/
export const useAuthConfig = () => {
const { public: { auth: authConfig } } = useRuntimeConfig()
return {
// Two-factor authentication settings
enableTwoFactor: authConfig.enableTwoFactor ?? true,
// Magic link authentication
enableMagicLink: authConfig.enableMagicLink ?? true,
// OAuth providers
enableOAuth: authConfig.enableOAuth ?? true,
// Session settings
sessionTimeout: authConfig.sessionTimeout ?? (24 * 60 * 60 * 1000), // 24 hours
// Email verification
requireEmailVerification: authConfig.requireEmailVerification ?? true,
// Clinical trial specific settings
enableRoleBasedAccess: authConfig.enableRoleBasedAccess ?? true,
// GDPR compliance settings
enableGdprConsent: authConfig.enableGdprConsent ?? true,
// Audit logging for clinical trials
enableAuditLogging: authConfig.enableAuditLogging ?? true
}
}
/**
* Composable for auth utilities
*/
export const useAuthUtils = () => {
const config = useAuthConfig()
const getRedirectPath = (userRole?: string) => {
// Default redirect logic that can be overridden by the main app
if (userRole === 'admin') return '/admin/dashboard'
if (userRole === 'clinical_staff') return '/clinical/dashboard'
if (userRole === 'researcher') return '/research/dashboard'
return '/dashboard'
}
const validateSession = () => {
const { sessionTimeout } = config
// Session validation logic here
return true
}
const requiresEmailVerification = (user: any) => {
return config.requireEmailVerification && !user?.emailVerified
}
return {
getRedirectPath,
validateSession,
requiresEmailVerification,
config
}
}