Files
my2/app/components/CommonHeader.vue
Bastian Masanek cc35636d1a Implement Password Grant Flow for Authentication and Enhance User Experience
- Introduced Password Grant Flow for user authentication, allowing direct login with email and password.
- Updated `useAuth` composable to manage login and logout processes, including Single Sign-Out from Cidaas.
- Enhanced user interface with a new `UserMenu` component displaying user information and logout functionality.
- Updated homepage to show personalized greetings for logged-in users and a login prompt for guests.
- Added logout confirmation page with a countdown redirect to the homepage.
- Documented the implementation details and future enhancements for OAuth2 flows in CLAUDE.md and other relevant documentation.
- Added test credentials and guidelines for automated testing in the new TESTING.md file.
2025-11-01 15:23:08 +01:00

76 lines
1.3 KiB
Vue

<script setup lang="ts">
// experimenta header with branding and user menu
const { loggedIn } = useAuth()
</script>
<template>
<header class="header-wrapper">
<div class="header-content">
<!-- Logo (left side) -->
<NuxtLink to="/" class="logo">
<img src="/img/experimenta-logo-white.svg" alt="experimenta Logo" class="logo-svg" />
</NuxtLink>
<!-- User Menu (right side, only when logged in) -->
<div v-if="loggedIn" class="user-menu">
<UserMenu />
</div>
</div>
</header>
</template>
<style scoped>
.header-wrapper {
background: rgba(46, 16, 101, 0.95);
backdrop-filter: blur(10px);
position: relative;
z-index: 100;
padding: 30px 0;
}
.header-content {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
display: flex;
align-items: center;
text-decoration: none;
color: white;
transition: all 0.3s ease;
}
.logo:hover {
transform: scale(1.05);
}
.logo-svg {
width: 300px;
height: auto;
filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.3));
}
@media (max-width: 768px) {
.logo-svg {
width: 250px;
max-width: 90%;
}
}
@media (max-width: 480px) {
.logo-svg {
width: 200px;
}
}
.user-menu {
display: flex;
align-items: center;
}
</style>