Add modular group verification system with frontend and backend checks
This commit implements a comprehensive, reusable group verification system: Components: - GroupCheckButton: Base component for group verification - 7 specialized buttons: 3 real groups (authentik Admins, grupo-prueba, lvl0), 1 public access test, 2 system verification buttons - All buttons support both frontend and backend verification modes Backend: - New API endpoint /api/auth/check-group for server-side group validation - Reads Authentik headers and validates group membership Frontend: - Enhanced useAuthentik composable with hasGroup() and checkGroupBackend() methods - Toast notifications for all verification results - Smooth animations and color-coded visual feedback UI Improvements: - Organized layout with cards for different verification types - Grid layout for group buttons - Professional styling with hover effects and shadows - Clear visual distinction between frontend/backend checks
This commit is contained in:
@@ -182,11 +182,39 @@ export const useAuthentik = () => {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifica si el usuario pertenece a un grupo específico (frontend)
|
||||
* Lee los grupos desde el estado local (headers de Authentik)
|
||||
*/
|
||||
const hasGroup = (groupName: string): boolean => {
|
||||
if (!user.value) return false
|
||||
return user.value.groups.includes(groupName)
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifica si el usuario pertenece a un grupo específico (backend)
|
||||
* Consulta al servidor para validar contra Authentik
|
||||
*/
|
||||
const checkGroupBackend = async (groupName: string): Promise<boolean> => {
|
||||
try {
|
||||
const response = await $fetch<{ hasGroup: boolean }>(`/api/auth/check-group`, {
|
||||
method: 'POST',
|
||||
body: { groupName }
|
||||
})
|
||||
return response.hasGroup
|
||||
} catch (error) {
|
||||
console.error('Error checking group membership:', error)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
user,
|
||||
isAuthenticated,
|
||||
logout,
|
||||
goToProfile,
|
||||
checkSessionStatus
|
||||
checkSessionStatus,
|
||||
hasGroup,
|
||||
checkGroupBackend
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user