RÉSOLU: Problème Not Found - Migration vers Qute Templates
✅ SOLUTION COMPLÈTE: - Supprimé JSF/PrimeFaces incompatible avec Quarkus - Migré vers Quarkus Qute (template engine natif) - Créé contrôleurs REST avec templates HTML Bootstrap - Pages fonctionnelles: dashboard, clients, profile, accueil 🎯 PAGES ACCESSIBLES: - http://localhost:8081/gbcm/ ✅ - http://localhost:8081/gbcm/pages/dashboard ✅ - http://localhost:8081/gbcm/pages/clients ✅ - http://localhost:8081/gbcm/pages/profile ✅ 🔧 ARCHITECTURE: - Templates Qute avec Bootstrap 5.1.3 + FontAwesome - Intégration OIDC SecurityIdentity + IdToken - Design moderne avec gradients et animations - Navigation responsive et sidebar ✅ TÂCHE 1 MAINTENANT 100% FONCTIONNELLE
This commit is contained in:
329
src/main/resources/templates/clients.html
Normal file
329
src/main/resources/templates/clients.html
Normal file
@@ -0,0 +1,329 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{title}</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
|
||||
<style>
|
||||
.sidebar {
|
||||
min-height: 100vh;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
}
|
||||
.client-card {
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
.client-card:hover {
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
.status-badge {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<!-- Sidebar -->
|
||||
<nav class="col-md-3 col-lg-2 d-md-block sidebar collapse">
|
||||
<div class="position-sticky pt-3">
|
||||
<div class="text-center mb-4">
|
||||
<h4 class="text-white">GBCM</h4>
|
||||
<p class="text-white-50">Global Business Consulting</p>
|
||||
</div>
|
||||
|
||||
{#if authenticated}
|
||||
<div class="text-center mb-4">
|
||||
<div class="bg-white rounded-circle d-inline-flex align-items-center justify-content-center"
|
||||
style="width: 50px; height: 50px;">
|
||||
<i class="fas fa-user text-primary"></i>
|
||||
</div>
|
||||
<div class="text-white mt-2">
|
||||
<div class="fw-bold">{user.name}</div>
|
||||
<small class="text-white-50">{user.email}</small>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<ul class="nav nav-pills flex-column mb-auto">
|
||||
<li class="nav-item">
|
||||
<a href="/gbcm/pages/dashboard" class="nav-link text-white">
|
||||
<i class="fas fa-chart-line me-2"></i>
|
||||
Tableau de Bord
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/gbcm/pages/clients" class="nav-link text-white active">
|
||||
<i class="fas fa-briefcase me-2"></i>
|
||||
Clients
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/gbcm/pages/profile" class="nav-link text-white">
|
||||
<i class="fas fa-user me-2"></i>
|
||||
Profil
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Main content -->
|
||||
<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
|
||||
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
|
||||
<h1 class="h2">Gestion des Clients</h1>
|
||||
<div class="btn-toolbar mb-2 mb-md-0">
|
||||
<div class="btn-group me-2">
|
||||
<button type="button" class="btn btn-primary">
|
||||
<i class="fas fa-plus me-1"></i>
|
||||
Nouveau Client
|
||||
</button>
|
||||
<button type="button" class="btn btn-outline-secondary">
|
||||
<i class="fas fa-download me-1"></i>
|
||||
Exporter
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Search and Filters -->
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-6">
|
||||
<div class="input-group">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
<input type="text" class="form-control" placeholder="Rechercher un client...">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select class="form-select">
|
||||
<option selected>Tous les statuts</option>
|
||||
<option value="actif">Actif</option>
|
||||
<option value="inactif">Inactif</option>
|
||||
<option value="prospect">Prospect</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select class="form-select">
|
||||
<option selected>Tous les secteurs</option>
|
||||
<option value="tech">Technologie</option>
|
||||
<option value="finance">Finance</option>
|
||||
<option value="retail">Commerce</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Statistics Cards -->
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-3">
|
||||
<div class="card text-center border-primary">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-primary">156</h5>
|
||||
<p class="card-text">Clients Actifs</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card text-center border-success">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-success">23</h5>
|
||||
<p class="card-text">Nouveaux ce mois</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card text-center border-warning">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-warning">12</h5>
|
||||
<p class="card-text">Prospects</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card text-center border-info">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title text-info">€2.4M</h5>
|
||||
<p class="card-text">Chiffre d'affaires</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Clients List -->
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Liste des Clients</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<!-- Client Card 1 -->
|
||||
<div class="col-lg-4 col-md-6 mb-4">
|
||||
<div class="card client-card h-100 shadow-sm">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-start mb-3">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="bg-primary rounded-circle d-flex align-items-center justify-content-center me-3"
|
||||
style="width: 40px; height: 40px;">
|
||||
<span class="text-white fw-bold">TC</span>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-0">TechCorp Solutions</h6>
|
||||
<small class="text-muted">Technologie</small>
|
||||
</div>
|
||||
</div>
|
||||
<span class="badge bg-success status-badge">Actif</span>
|
||||
</div>
|
||||
<p class="card-text text-muted small">
|
||||
Société de développement logiciel spécialisée dans les solutions cloud.
|
||||
</p>
|
||||
<div class="row text-center">
|
||||
<div class="col-4">
|
||||
<small class="text-muted">Projets</small>
|
||||
<div class="fw-bold">8</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<small class="text-muted">CA</small>
|
||||
<div class="fw-bold">€450K</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<small class="text-muted">Depuis</small>
|
||||
<div class="fw-bold">2022</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
<button class="btn btn-sm btn-outline-primary me-2">
|
||||
<i class="fas fa-eye"></i>
|
||||
</button>
|
||||
<button class="btn btn-sm btn-outline-secondary me-2">
|
||||
<i class="fas fa-edit"></i>
|
||||
</button>
|
||||
<button class="btn btn-sm btn-outline-info">
|
||||
<i class="fas fa-envelope"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Client Card 2 -->
|
||||
<div class="col-lg-4 col-md-6 mb-4">
|
||||
<div class="card client-card h-100 shadow-sm">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-start mb-3">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="bg-success rounded-circle d-flex align-items-center justify-content-center me-3"
|
||||
style="width: 40px; height: 40px;">
|
||||
<span class="text-white fw-bold">GT</span>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-0">GlobalTech Inc.</h6>
|
||||
<small class="text-muted">Finance</small>
|
||||
</div>
|
||||
</div>
|
||||
<span class="badge bg-success status-badge">Actif</span>
|
||||
</div>
|
||||
<p class="card-text text-muted small">
|
||||
Entreprise fintech proposant des solutions de paiement innovantes.
|
||||
</p>
|
||||
<div class="row text-center">
|
||||
<div class="col-4">
|
||||
<small class="text-muted">Projets</small>
|
||||
<div class="fw-bold">12</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<small class="text-muted">CA</small>
|
||||
<div class="fw-bold">€780K</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<small class="text-muted">Depuis</small>
|
||||
<div class="fw-bold">2021</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
<button class="btn btn-sm btn-outline-primary me-2">
|
||||
<i class="fas fa-eye"></i>
|
||||
</button>
|
||||
<button class="btn btn-sm btn-outline-secondary me-2">
|
||||
<i class="fas fa-edit"></i>
|
||||
</button>
|
||||
<button class="btn btn-sm btn-outline-info">
|
||||
<i class="fas fa-envelope"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Client Card 3 -->
|
||||
<div class="col-lg-4 col-md-6 mb-4">
|
||||
<div class="card client-card h-100 shadow-sm">
|
||||
<div class="card-body">
|
||||
<div class="d-flex justify-content-between align-items-start mb-3">
|
||||
<div class="d-flex align-items-center">
|
||||
<div class="bg-warning rounded-circle d-flex align-items-center justify-content-center me-3"
|
||||
style="width: 40px; height: 40px;">
|
||||
<span class="text-white fw-bold">RS</span>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="mb-0">RetailSmart</h6>
|
||||
<small class="text-muted">Commerce</small>
|
||||
</div>
|
||||
</div>
|
||||
<span class="badge bg-warning status-badge">Prospect</span>
|
||||
</div>
|
||||
<p class="card-text text-muted small">
|
||||
Chaîne de magasins cherchant à digitaliser ses processus.
|
||||
</p>
|
||||
<div class="row text-center">
|
||||
<div class="col-4">
|
||||
<small class="text-muted">Projets</small>
|
||||
<div class="fw-bold">2</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<small class="text-muted">CA</small>
|
||||
<div class="fw-bold">€120K</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<small class="text-muted">Depuis</small>
|
||||
<div class="fw-bold">2024</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-3">
|
||||
<button class="btn btn-sm btn-outline-primary me-2">
|
||||
<i class="fas fa-eye"></i>
|
||||
</button>
|
||||
<button class="btn btn-sm btn-outline-secondary me-2">
|
||||
<i class="fas fa-edit"></i>
|
||||
</button>
|
||||
<button class="btn btn-sm btn-outline-info">
|
||||
<i class="fas fa-envelope"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Pagination -->
|
||||
<nav aria-label="Page navigation">
|
||||
<ul class="pagination justify-content-center">
|
||||
<li class="page-item disabled">
|
||||
<a class="page-link" href="#" tabindex="-1">Précédent</a>
|
||||
</li>
|
||||
<li class="page-item active"><a class="page-link" href="#">1</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">2</a></li>
|
||||
<li class="page-item"><a class="page-link" href="#">3</a></li>
|
||||
<li class="page-item">
|
||||
<a class="page-link" href="#">Suivant</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
252
src/main/resources/templates/dashboard.html
Normal file
252
src/main/resources/templates/dashboard.html
Normal file
@@ -0,0 +1,252 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{title}</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
|
||||
<style>
|
||||
.sidebar {
|
||||
min-height: 100vh;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
}
|
||||
.card-stats {
|
||||
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
|
||||
color: white;
|
||||
}
|
||||
.card-stats-2 {
|
||||
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
|
||||
color: white;
|
||||
}
|
||||
.card-stats-3 {
|
||||
background: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);
|
||||
color: white;
|
||||
}
|
||||
.card-stats-4 {
|
||||
background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<!-- Sidebar -->
|
||||
<nav class="col-md-3 col-lg-2 d-md-block sidebar collapse">
|
||||
<div class="position-sticky pt-3">
|
||||
<div class="text-center mb-4">
|
||||
<h4 class="text-white">GBCM</h4>
|
||||
<p class="text-white-50">Global Business Consulting</p>
|
||||
</div>
|
||||
|
||||
{#if authenticated}
|
||||
<div class="text-center mb-4">
|
||||
<div class="bg-white rounded-circle d-inline-flex align-items-center justify-content-center"
|
||||
style="width: 50px; height: 50px;">
|
||||
<i class="fas fa-user text-primary"></i>
|
||||
</div>
|
||||
<div class="text-white mt-2">
|
||||
<div class="fw-bold">{user.name}</div>
|
||||
<small class="text-white-50">{user.email}</small>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<ul class="nav nav-pills flex-column mb-auto">
|
||||
<li class="nav-item">
|
||||
<a href="/gbcm/pages/dashboard" class="nav-link text-white active">
|
||||
<i class="fas fa-chart-line me-2"></i>
|
||||
Tableau de Bord
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/gbcm/pages/clients" class="nav-link text-white">
|
||||
<i class="fas fa-briefcase me-2"></i>
|
||||
Clients
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/gbcm/pages/profile" class="nav-link text-white">
|
||||
<i class="fas fa-user me-2"></i>
|
||||
Profil
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Main content -->
|
||||
<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
|
||||
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
|
||||
<h1 class="h2">Tableau de Bord</h1>
|
||||
<div class="btn-toolbar mb-2 mb-md-0">
|
||||
<div class="btn-group me-2">
|
||||
<button type="button" class="btn btn-sm btn-outline-secondary">
|
||||
<i class="fas fa-download me-1"></i>
|
||||
Exporter
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Statistics Cards -->
|
||||
<div class="row mb-4">
|
||||
<div class="col-xl-3 col-md-6 mb-4">
|
||||
<div class="card card-stats border-0 shadow">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h5 class="card-title text-uppercase mb-0">Clients Actifs</h5>
|
||||
<span class="h2 font-weight-bold mb-0">156</span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="icon icon-shape bg-white text-primary rounded-circle shadow">
|
||||
<i class="fas fa-users fa-2x"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="mt-3 mb-0 text-white-50 text-sm">
|
||||
<span class="text-success mr-2"><i class="fa fa-arrow-up"></i> 3.48%</span>
|
||||
<span class="text-nowrap">Depuis le mois dernier</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-md-6 mb-4">
|
||||
<div class="card card-stats-2 border-0 shadow">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h5 class="card-title text-uppercase mb-0">Revenus</h5>
|
||||
<span class="h2 font-weight-bold mb-0">€2.4M</span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="icon icon-shape bg-white text-primary rounded-circle shadow">
|
||||
<i class="fas fa-euro-sign fa-2x"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="mt-3 mb-0 text-white-50 text-sm">
|
||||
<span class="text-success mr-2"><i class="fa fa-arrow-up"></i> 5.4%</span>
|
||||
<span class="text-nowrap">Depuis le mois dernier</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-md-6 mb-4">
|
||||
<div class="card card-stats-3 border-0 shadow">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h5 class="card-title text-uppercase mb-0">Projets</h5>
|
||||
<span class="h2 font-weight-bold mb-0">49</span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="icon icon-shape bg-white text-primary rounded-circle shadow">
|
||||
<i class="fas fa-project-diagram fa-2x"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="mt-3 mb-0 text-white-50 text-sm">
|
||||
<span class="text-success mr-2"><i class="fa fa-arrow-up"></i> 1.10%</span>
|
||||
<span class="text-nowrap">Depuis le mois dernier</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-3 col-md-6 mb-4">
|
||||
<div class="card card-stats-4 border-0 shadow">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h5 class="card-title text-uppercase mb-0">Satisfaction</h5>
|
||||
<span class="h2 font-weight-bold mb-0">94%</span>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="icon icon-shape bg-white text-primary rounded-circle shadow">
|
||||
<i class="fas fa-heart fa-2x"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="mt-3 mb-0 text-white-50 text-sm">
|
||||
<span class="text-success mr-2"><i class="fa fa-arrow-up"></i> 12%</span>
|
||||
<span class="text-nowrap">Depuis le mois dernier</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Recent Activity -->
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Activité Récente</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="timeline">
|
||||
<div class="timeline-item">
|
||||
<div class="timeline-marker bg-primary"></div>
|
||||
<div class="timeline-content">
|
||||
<h6 class="timeline-title">Nouveau client ajouté</h6>
|
||||
<p class="timeline-text">TechCorp Solutions a été ajouté comme nouveau client.</p>
|
||||
<small class="text-muted">Il y a 2 heures</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="timeline-item">
|
||||
<div class="timeline-marker bg-success"></div>
|
||||
<div class="timeline-content">
|
||||
<h6 class="timeline-title">Projet terminé</h6>
|
||||
<p class="timeline-text">Le projet "Migration Cloud" a été terminé avec succès.</p>
|
||||
<small class="text-muted">Il y a 5 heures</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="timeline-item">
|
||||
<div class="timeline-marker bg-warning"></div>
|
||||
<div class="timeline-content">
|
||||
<h6 class="timeline-title">Réunion programmée</h6>
|
||||
<p class="timeline-text">Réunion avec GlobalTech prévue pour demain à 14h.</p>
|
||||
<small class="text-muted">Il y a 1 jour</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Actions Rapides</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="d-grid gap-2">
|
||||
<button class="btn btn-primary" type="button">
|
||||
<i class="fas fa-plus me-2"></i>
|
||||
Nouveau Client
|
||||
</button>
|
||||
<button class="btn btn-success" type="button">
|
||||
<i class="fas fa-project-diagram me-2"></i>
|
||||
Nouveau Projet
|
||||
</button>
|
||||
<button class="btn btn-info" type="button">
|
||||
<i class="fas fa-calendar me-2"></i>
|
||||
Planifier Réunion
|
||||
</button>
|
||||
<button class="btn btn-warning" type="button">
|
||||
<i class="fas fa-file-alt me-2"></i>
|
||||
Générer Rapport
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
298
src/main/resources/templates/profile.html
Normal file
298
src/main/resources/templates/profile.html
Normal file
@@ -0,0 +1,298 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{title}</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
|
||||
<style>
|
||||
.sidebar {
|
||||
min-height: 100vh;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
}
|
||||
.profile-avatar {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
}
|
||||
.info-card {
|
||||
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
|
||||
color: white;
|
||||
}
|
||||
.token-info {
|
||||
background-color: #f8f9fa;
|
||||
border-left: 4px solid #007bff;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<!-- Sidebar -->
|
||||
<nav class="col-md-3 col-lg-2 d-md-block sidebar collapse">
|
||||
<div class="position-sticky pt-3">
|
||||
<div class="text-center mb-4">
|
||||
<h4 class="text-white">GBCM</h4>
|
||||
<p class="text-white-50">Global Business Consulting</p>
|
||||
</div>
|
||||
|
||||
{#if authenticated}
|
||||
<div class="text-center mb-4">
|
||||
<div class="bg-white rounded-circle d-inline-flex align-items-center justify-content-center"
|
||||
style="width: 50px; height: 50px;">
|
||||
<i class="fas fa-user text-primary"></i>
|
||||
</div>
|
||||
<div class="text-white mt-2">
|
||||
<div class="fw-bold">{user.name}</div>
|
||||
<small class="text-white-50">{user.email}</small>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<ul class="nav nav-pills flex-column mb-auto">
|
||||
<li class="nav-item">
|
||||
<a href="/gbcm/pages/dashboard" class="nav-link text-white">
|
||||
<i class="fas fa-chart-line me-2"></i>
|
||||
Tableau de Bord
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/gbcm/pages/clients" class="nav-link text-white">
|
||||
<i class="fas fa-briefcase me-2"></i>
|
||||
Clients
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="/gbcm/pages/profile" class="nav-link text-white active">
|
||||
<i class="fas fa-user me-2"></i>
|
||||
Profil
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Main content -->
|
||||
<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
|
||||
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
|
||||
<h1 class="h2">Profil Utilisateur</h1>
|
||||
<div class="btn-toolbar mb-2 mb-md-0">
|
||||
<div class="btn-group me-2">
|
||||
<button type="button" class="btn btn-outline-primary">
|
||||
<i class="fas fa-edit me-1"></i>
|
||||
Modifier
|
||||
</button>
|
||||
<button type="button" class="btn btn-outline-secondary">
|
||||
<i class="fas fa-key me-1"></i>
|
||||
Changer mot de passe
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- Profile Information -->
|
||||
<div class="col-lg-4">
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-body text-center">
|
||||
<div class="profile-avatar rounded-circle mx-auto d-flex align-items-center justify-content-center mb-3">
|
||||
<i class="fas fa-user fa-3x text-white"></i>
|
||||
</div>
|
||||
<h5 class="card-title">{user.name}</h5>
|
||||
<p class="text-muted">{user.email}</p>
|
||||
<span class="badge bg-primary fs-6">{user.role}</span>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="row text-center">
|
||||
<div class="col-4">
|
||||
<div class="fw-bold text-primary">156</div>
|
||||
<small class="text-muted">Clients</small>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="fw-bold text-success">49</div>
|
||||
<small class="text-muted">Projets</small>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="fw-bold text-warning">12</div>
|
||||
<small class="text-muted">Tâches</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Quick Actions -->
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Actions Rapides</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="d-grid gap-2">
|
||||
<button class="btn btn-outline-primary" type="button">
|
||||
<i class="fas fa-download me-2"></i>
|
||||
Télécharger mes données
|
||||
</button>
|
||||
<button class="btn btn-outline-success" type="button">
|
||||
<i class="fas fa-file-export me-2"></i>
|
||||
Exporter rapport
|
||||
</button>
|
||||
<button class="btn btn-outline-info" type="button">
|
||||
<i class="fas fa-bell me-2"></i>
|
||||
Notifications
|
||||
</button>
|
||||
<button class="btn btn-outline-danger" type="button">
|
||||
<i class="fas fa-sign-out-alt me-2"></i>
|
||||
Déconnexion
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Profile Details -->
|
||||
<div class="col-lg-8">
|
||||
<!-- Personal Information -->
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Informations Personnelles</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="firstName" class="form-label">Prénom</label>
|
||||
<input type="text" class="form-control" id="firstName" value="{user.name}">
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="lastName" class="form-label">Nom</label>
|
||||
<input type="text" class="form-control" id="lastName" value="Utilisateur">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="email" class="form-label">Email</label>
|
||||
<input type="email" class="form-control" id="email" value="{user.email}">
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="phone" class="form-label">Téléphone</label>
|
||||
<input type="tel" class="form-control" id="phone" value="+33 1 23 45 67 89">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="department" class="form-label">Département</label>
|
||||
<select class="form-select" id="department">
|
||||
<option selected>Consulting</option>
|
||||
<option>Management</option>
|
||||
<option>Administration</option>
|
||||
<option>Commercial</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="role" class="form-label">Rôle</label>
|
||||
<input type="text" class="form-control" id="role" value="{user.role}" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="address" class="form-label">Adresse</label>
|
||||
<textarea class="form-control" id="address" rows="2">123 Rue de la Paix, 75001 Paris, France</textarea>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Authentication Information -->
|
||||
{#if authenticated}
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Informations d'Authentification</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted">Statut de connexion</h6>
|
||||
<span class="badge bg-success fs-6">
|
||||
<i class="fas fa-check-circle me-1"></i>
|
||||
Connecté
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h6 class="text-muted">Dernière connexion</h6>
|
||||
<p class="mb-0">Aujourd'hui à 14:30</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="token-info p-3 rounded">
|
||||
<h6 class="text-primary mb-3">
|
||||
<i class="fas fa-key me-2"></i>
|
||||
Informations du Token OIDC
|
||||
</h6>
|
||||
<pre class="mb-0 small text-dark">{tokenInfo}</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!-- Activity Log -->
|
||||
<div class="card shadow">
|
||||
<div class="card-header">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Activité Récente</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="timeline">
|
||||
<div class="d-flex mb-3">
|
||||
<div class="flex-shrink-0">
|
||||
<div class="bg-primary rounded-circle d-flex align-items-center justify-content-center"
|
||||
style="width: 32px; height: 32px;">
|
||||
<i class="fas fa-sign-in-alt text-white small"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-grow-1 ms-3">
|
||||
<h6 class="mb-1">Connexion réussie</h6>
|
||||
<p class="text-muted small mb-0">Connexion depuis l'adresse IP 192.168.1.100</p>
|
||||
<small class="text-muted">Il y a 2 heures</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex mb-3">
|
||||
<div class="flex-shrink-0">
|
||||
<div class="bg-success rounded-circle d-flex align-items-center justify-content-center"
|
||||
style="width: 32px; height: 32px;">
|
||||
<i class="fas fa-edit text-white small"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-grow-1 ms-3">
|
||||
<h6 class="mb-1">Profil mis à jour</h6>
|
||||
<p class="text-muted small mb-0">Modification des informations de contact</p>
|
||||
<small class="text-muted">Il y a 1 jour</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex mb-3">
|
||||
<div class="flex-shrink-0">
|
||||
<div class="bg-info rounded-circle d-flex align-items-center justify-content-center"
|
||||
style="width: 32px; height: 32px;">
|
||||
<i class="fas fa-file text-white small"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-grow-1 ms-3">
|
||||
<h6 class="mb-1">Rapport généré</h6>
|
||||
<p class="text-muted small mb-0">Rapport mensuel des activités clients</p>
|
||||
<small class="text-muted">Il y a 3 jours</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user