✨ feat(etl): Add ETL authentication and navigation
Add Keycloak authentication for ETL users. Configure ETL routes and login/logout functionality. Integrate ETL with Keycloak SSO. Update vite.config.js to include etl.js. Create EtlController with home, login, and logout routes. Implement EtlAuthenticator for email/password login. Configure security.yaml for ETL firewall and providers. Add etl.js and etl.scss for ETL frontend. Add Keycloak client configuration for ETL. Update PrestaireController to use absolute URL for login.
This commit is contained in:
64
templates/etl/home.twig
Normal file
64
templates/etl/home.twig
Normal file
@@ -0,0 +1,64 @@
|
||||
{% extends 'etl/base.twig' %}
|
||||
|
||||
{% block title %}Tableau de bord{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-500">
|
||||
|
||||
{# WELCOME CARD #}
|
||||
<div class="bg-blue-600 rounded-[2rem] p-6 text-white shadow-xl shadow-blue-600/20 relative overflow-hidden">
|
||||
<div class="absolute top-0 right-0 -mr-8 -mt-8 w-32 h-32 bg-white/10 rounded-full blur-2xl"></div>
|
||||
|
||||
<p class="text-[10px] font-black uppercase tracking-widest opacity-80 mb-1">Bienvenue</p>
|
||||
<h2 class="text-2xl font-black italic tracking-tighter">{{ app.user.userIdentifier }}</h2>
|
||||
|
||||
<div class="mt-6 flex items-center gap-4">
|
||||
<div class="bg-white/20 backdrop-blur-md rounded-xl px-4 py-2 flex flex-col">
|
||||
<span class="text-[9px] font-bold uppercase tracking-wide opacity-80">Missions</span>
|
||||
<span class="text-lg font-black">0</span>
|
||||
</div>
|
||||
<div class="bg-white/20 backdrop-blur-md rounded-xl px-4 py-2 flex flex-col">
|
||||
<span class="text-[9px] font-bold uppercase tracking-wide opacity-80">À venir</span>
|
||||
<span class="text-lg font-black">0</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{# SECTIONS #}
|
||||
<div class="space-y-4">
|
||||
<h3 class="px-2 text-xs font-black text-slate-400 uppercase tracking-widest">Accès Rapide</h3>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<a href="#" class="bg-white p-5 rounded-[1.5rem] border border-slate-100 shadow-sm hover:border-blue-100 transition-all group active:scale-95">
|
||||
<div class="w-10 h-10 bg-blue-50 rounded-xl flex items-center justify-center text-blue-600 mb-3 group-hover:bg-blue-600 group-hover:text-white transition-colors">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" /></svg>
|
||||
</div>
|
||||
<p class="text-xs font-bold text-slate-900">Mes Missions</p>
|
||||
<p class="text-[9px] text-slate-400 font-medium mt-0.5">Planning & Détails</p>
|
||||
</a>
|
||||
|
||||
<a href="#" class="bg-white p-5 rounded-[1.5rem] border border-slate-100 shadow-sm hover:border-blue-100 transition-all group active:scale-95">
|
||||
<div class="w-10 h-10 bg-emerald-50 rounded-xl flex items-center justify-center text-emerald-600 mb-3 group-hover:bg-emerald-600 group-hover:text-white transition-colors">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" /></svg>
|
||||
</div>
|
||||
<p class="text-xs font-bold text-slate-900">Validations</p>
|
||||
<p class="text-[9px] text-slate-400 font-medium mt-0.5">États des lieux</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{# UPCOMING LIST (Placeholder) #}
|
||||
<div class="space-y-4">
|
||||
<h3 class="px-2 text-xs font-black text-slate-400 uppercase tracking-widest">Prochainement</h3>
|
||||
|
||||
<div class="bg-white rounded-[2rem] border border-slate-100 p-8 text-center">
|
||||
<div class="inline-flex p-4 bg-slate-50 rounded-full text-slate-300 mb-3">
|
||||
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" /></svg>
|
||||
</div>
|
||||
<p class="text-xs font-bold text-slate-900">Aucune mission à venir</p>
|
||||
<p class="text-[10px] text-slate-400 mt-1">Votre planning est vide pour le moment.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user