feat(app): add studentOnly pages and new routes

Add routes for modules, users, notes import, recap, and islands edit.
Update middleware to filter pages based on user role.

feat(admin): add modal for assigning teaching, replace delete icon with SVG

refactor(server): rename port variable to uppercase and add env support
feat(admin): add enseignants, users, filtering and role colors

refactor(AdminRoles): improve role UI and add permission mapping

feat(admin-users): add role colors, role filter, and modal for creating users

feat(admin): add EditModule component for module editing

feat(admin): add EditUser page for editing users and managing enseignements

feat(promo-select): display id and name in options for promo dropdown

feat: add edit module/user routes, inline coeff editing, UI tweaks

refactor: UI – icons, modal overlay, grid, subtitles, import margin
This commit is contained in:
2026-04-29 09:12:55 +02:00
parent f71128a7f3
commit 04be659d6b
22 changed files with 1455 additions and 245 deletions
@@ -67,6 +67,7 @@ export default function ConsultStudents() {
class="btn btn-primary"
href="/students/upload"
f-partial="/students/partials/upload"
style="margin-left: auto"
>
Importer xlsx
</a>
@@ -128,14 +129,34 @@ export default function ConsultStudents() {
href={`/students/edit/${s.numEtud}`}
f-client-nav={false}
>
<svg
width="14"
height="14"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
>
<path d="M17 3a2.85 2.85 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" />
</svg>
</a>
<button
type="button"
class="btn btn-sm btn-danger"
onClick={() => deleteStudent(s.numEtud)}
>
🗑
<svg
width="14"
height="14"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
>
<path d="M3 6h18" />
<path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" />
<rect x="5" y="6" width="14" height="16" rx="1" />
</svg>
</button>
</div>
</td>