Projet fullstack développé dans le cadre du cours IDL — ISI El Manar
Encadrant : M. Mohamed Sahbi Bahroun
- Frontend : Angular 19 (standalone components, signals, lazy loading)
- Backend : Spring Boot 3 + Java 17
- Base de données : PostgreSQL 17
- Authentification : Sessions HTTP + Cookies HttpOnly
- Sécurité : CSRF, Rate Limiting (Bucket4j), HTTPS/TLS
limtic-web/ ├── limtic-backend/ # API REST Spring Boot ├── limtic-frontend/ # Interface Angular 19 └── database/ └── limtic_backup.sql
- Java 17+, Maven, Node.js 18+, PostgreSQL 17
psql -U postgres -c "CREATE DATABASE limtic_db;"
psql -U postgres -d limtic_db -f database/limtic_backup.sqlcd limtic-backend
powershell.exe -ExecutionPolicy Bypass -File start.ps1➡ API sur https://localhost:8443
cd limtic-frontend
npm install
ng serve --ssl➡ Application sur https://localhost:4200
Accepter les deux certificats avant de tester le login
| Mot de passe | Rôle | |
|---|---|---|
| superadmin@limtic.tn | [voir .env.example] | SUPER_ADMIN |
| admin@limtic.tn | [voir .env.example] | ADMIN |
| ben.ali@limtic.tn | [voir .env.example] | CHERCHEUR |
| trabelsi@limtic.tn | [voir .env.example] | CHERCHEUR |
| jlassi@limtic.tn | [voir .env.example] | CHERCHEUR |
- ✅ HTTPS avec certificat TLS auto-signé (keystore.p12)
- ✅ Sessions serveur + Cookies HttpOnly (protection XSS)
- ✅ Protection CSRF avec cookie XSRF-TOKEN + intercepteur Angular custom
- ✅ Rate limiting : 10 requêtes/minute par IP sur /api/auth/*
- ✅ Mots de passe hashés avec BCrypt
- ✅ Guards Angular (adminGuard, authGuard, chercheurGuard) via /api/auth/me
- ✅ CORS restreint à localhost:4200
- ✅ Accueil avec statistiques temps réel
- ✅ Chercheurs avec filtres (axe, grade, statut)
- ✅ Page personnelle chercheur avec publications et encadrements cliquables
- ✅ Publications avec recherche, tri, filtres, export BibTeX/CSV, badges classement
- ✅ Événements avec statut automatique à venir/passé
- ✅ Axes de recherche avec membres et publications liées
- ✅ Doctorants et Mastériens avec fiches détaillées
- ✅ Page Directeur du laboratoire
- ✅ Contact avec formulaire sécurisé
- ✅ Réinitialisation mot de passe par email
- ✅ Navigation responsive avec menu utilisateur (dropdown) unifié pour l'auth
- ✅ Dashboard avec statistiques publications
- ✅ Modification du profil (grade, spécialité, liens académiques)
- ✅ Workflow publications : brouillon → soumis → publié
- ✅ Gestion des encadrements (doctorants et mastériens)
- ✅ Dashboard avec alertes publications en attente
- ✅ CRUD : chercheurs, publications, événements, axes, doctorants, mastériens
- ✅ Validation/rejet des publications soumises
- ✅ Sécurité et RBAC :
- SUPER_ADMIN : Accès total (gestion des comptes, sécurité, audit, thème global, axes).
- ADMIN : Accès restreint au contenu (chercheurs, publications, événements, doctorants...).
- Protection système empêchant l'administrateur de supprimer/désactiver son propre compte.
| Méthode | Endpoint | Auth |
|---|---|---|
| POST | /api/auth/login | Public |
| POST | /api/auth/logout | Auth |
| GET | /api/auth/me | Auth |
| GET | /api/chercheurs | Public |
| PATCH | /api/chercheurs/{id}/profil | Auth |
| GET | /api/publications | Public |
| GET | /api/publications/page | Public |
| PATCH | /api/publications/{id}/statut | Auth |
| GET | /api/evenements | Public |
| GET | /api/axes | Public |
| GET | /api/doctorants | Public |
| GET | /api/masteriens | Public |
| POST | /api/contact | Public |