[PR #27] [MERGED] Dev #86

Closed
opened 2026-05-06 12:18:39 +02:00 by BreizhHardware · 0 comments

📋 Pull Request Information

Original PR: https://github.com/BreizhHardware/Site-comptage-heure/pull/27
Author: @BreizhHardware
Created: 11/20/2025
Status: Merged
Merged: 11/20/2025
Merged by: @BreizhHardware

Base: mainHead: dev


📝 Commits (8)

  • eb8132b feat: Add bulk import from ISEN excel
  • 69292a0 Merge pull request #23 from BreizhHardware/feat/bulk-import
  • 73ddaf3 feat: Add theme selector to header
  • 0bd720d Merge pull request #24 from BreizhHardware/feat/auto-theme
  • 1ef7089 feat: Ajouter la fonctionnalité de sélection d'utilisateurs pour l'ajout d'heures
  • b90c2e5 Merge pull request #25 from BreizhHardware/feat/bulk-add-hours
  • e825651 feat: Ajouter des fonctionnalités de tri et de filtrage des heures, incluant la sélection d'utilisateurs et l'ajout de timestamps
  • b04037c Merge pull request #26 from BreizhHardware/feat/sort-hours

📊 Changes

22 files changed (+2051 additions, -2066 deletions)

View changed files

📝 .dockerignore (+1 -1)
📝 README.md (+2 -2)
app/admin/import-users/page.tsx (+213 -0)
📝 app/admin/page.tsx (+139 -17)
app/api/change-password/route.ts (+35 -0)
📝 app/api/hours/route.ts (+36 -12)
app/api/import-users/route.ts (+170 -0)
app/change-password/page.tsx (+117 -0)
📝 components/Header.tsx (+22 -18)
components/mode-toggle.tsx (+56 -0)
📝 components/providers.tsx (+26 -2)
components/ui/checkbox.tsx (+32 -0)
components/ui/select.tsx (+187 -0)
📝 lib/auth.ts (+9 -1)
📝 package.json (+6 -2)
📝 pnpm-lock.yaml (+906 -2011)
prisma/migrations/20251120162836_add_password_reset_required/migration.sql (+33 -0)
prisma/migrations/20251120171812_add_timestamps_to_hour/migration.sql (+21 -0)
prisma/migrations/migration_lock.toml (+3 -0)
📝 prisma/schema.prisma (+4 -0)

...and 2 more files

📄 Description

This pull request introduces several new features and improvements to the admin interface for user and hour management, including a bulk user import workflow, enhanced hour sorting/filtering, and multi-user hour entry. It also standardizes UI components and adds a secure password change API endpoint.

Major new features and improvements:

User Import Workflow:

  • Added a new page (app/admin/import-users/page.tsx) that allows admins to upload Excel files, preview parsed users, handle errors, and confirm imports into the system. This provides a user-friendly workflow for bulk user creation.

Hour Management Enhancements:

  • Enabled admins to add hours for multiple users at once, with appropriate validation and permissions, by updating both the API (app/api/hours/route.ts) and admin UI (app/admin/page.tsx). [1] [2] [3] [4] [5]
  • Added sorting and filtering options for hours, including sorting by creation date or effective date, order direction, and prioritizing pending hours. [1] [2] [3] [4]

UI Consistency and Improvements:

  • Replaced native HTML selects and checkboxes with custom UI components (Select, Checkbox) for a more consistent look across the admin interface. [1] [2] [3]
  • Added a prominent button to access the new user import page from the admin dashboard.

API and Data Model Updates:

  • Modified the hours API to include the createdAt field in responses, enabling new sorting/filtering features. [1] [2]
  • Added a secure password change API endpoint for authenticated users (app/api/change-password/route.ts).

Developer Experience:

  • Updated .dockerignore and README.md for improved local development and to use pnpx for Prisma commands. [1] [2]

These changes collectively streamline admin workflows, improve usability, and add important new capabilities for managing users and hours.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/BreizhHardware/Site-comptage-heure/pull/27 **Author:** [@BreizhHardware](https://github.com/BreizhHardware) **Created:** 11/20/2025 **Status:** ✅ Merged **Merged:** 11/20/2025 **Merged by:** [@BreizhHardware](https://github.com/BreizhHardware) **Base:** `main` ← **Head:** `dev` --- ### 📝 Commits (8) - [`eb8132b`](https://github.com/BreizhHardware/Site-comptage-heure/commit/eb8132b20f57c7ccec3fc76cf691c182d1e9106f) feat: Add bulk import from ISEN excel - [`69292a0`](https://github.com/BreizhHardware/Site-comptage-heure/commit/69292a049086911d601e4c970888a6353fa818d8) Merge pull request #23 from BreizhHardware/feat/bulk-import - [`73ddaf3`](https://github.com/BreizhHardware/Site-comptage-heure/commit/73ddaf38fbc2a3caee7ff91124acdd2782f0d416) feat: Add theme selector to header - [`0bd720d`](https://github.com/BreizhHardware/Site-comptage-heure/commit/0bd720da097a8c4912c092a13d7f359a82702280) Merge pull request #24 from BreizhHardware/feat/auto-theme - [`1ef7089`](https://github.com/BreizhHardware/Site-comptage-heure/commit/1ef7089986b5b1e04250ac3f2266b882d078438f) feat: Ajouter la fonctionnalité de sélection d'utilisateurs pour l'ajout d'heures - [`b90c2e5`](https://github.com/BreizhHardware/Site-comptage-heure/commit/b90c2e518af4927c3ceec8802432f1bb42a7c7e8) Merge pull request #25 from BreizhHardware/feat/bulk-add-hours - [`e825651`](https://github.com/BreizhHardware/Site-comptage-heure/commit/e825651c57ca5480885bc89811c0f2fb7983b3ac) feat: Ajouter des fonctionnalités de tri et de filtrage des heures, incluant la sélection d'utilisateurs et l'ajout de timestamps - [`b04037c`](https://github.com/BreizhHardware/Site-comptage-heure/commit/b04037c676d3ebfd100223763b0ecfbbcdce74b8) Merge pull request #26 from BreizhHardware/feat/sort-hours ### 📊 Changes **22 files changed** (+2051 additions, -2066 deletions) <details> <summary>View changed files</summary> 📝 `.dockerignore` (+1 -1) 📝 `README.md` (+2 -2) ➕ `app/admin/import-users/page.tsx` (+213 -0) 📝 `app/admin/page.tsx` (+139 -17) ➕ `app/api/change-password/route.ts` (+35 -0) 📝 `app/api/hours/route.ts` (+36 -12) ➕ `app/api/import-users/route.ts` (+170 -0) ➕ `app/change-password/page.tsx` (+117 -0) 📝 `components/Header.tsx` (+22 -18) ➕ `components/mode-toggle.tsx` (+56 -0) 📝 `components/providers.tsx` (+26 -2) ➕ `components/ui/checkbox.tsx` (+32 -0) ➕ `components/ui/select.tsx` (+187 -0) 📝 `lib/auth.ts` (+9 -1) 📝 `package.json` (+6 -2) 📝 `pnpm-lock.yaml` (+906 -2011) ➕ `prisma/migrations/20251120162836_add_password_reset_required/migration.sql` (+33 -0) ➕ `prisma/migrations/20251120171812_add_timestamps_to_hour/migration.sql` (+21 -0) ➕ `prisma/migrations/migration_lock.toml` (+3 -0) 📝 `prisma/schema.prisma` (+4 -0) _...and 2 more files_ </details> ### 📄 Description This pull request introduces several new features and improvements to the admin interface for user and hour management, including a bulk user import workflow, enhanced hour sorting/filtering, and multi-user hour entry. It also standardizes UI components and adds a secure password change API endpoint. **Major new features and improvements:** **User Import Workflow:** - Added a new page (`app/admin/import-users/page.tsx`) that allows admins to upload Excel files, preview parsed users, handle errors, and confirm imports into the system. This provides a user-friendly workflow for bulk user creation. **Hour Management Enhancements:** - Enabled admins to add hours for multiple users at once, with appropriate validation and permissions, by updating both the API (`app/api/hours/route.ts`) and admin UI (`app/admin/page.tsx`). [[1]](diffhunk://#diff-53f5b1f527e0d09d7aee7f875a64881f5793a728b70fb4f6cb726c8c893ff048L68-R70) [[2]](diffhunk://#diff-53f5b1f527e0d09d7aee7f875a64881f5793a728b70fb4f6cb726c8c893ff048L77-R113) [[3]](diffhunk://#diff-a7c2b21269eaaa6f291a758c44939732a9f1d9fe8e0d71a3a7822b813a196f43R106-R109) [[4]](diffhunk://#diff-a7c2b21269eaaa6f291a758c44939732a9f1d9fe8e0d71a3a7822b813a196f43R239-R247) [[5]](diffhunk://#diff-a7c2b21269eaaa6f291a758c44939732a9f1d9fe8e0d71a3a7822b813a196f43L376-R450) - Added sorting and filtering options for hours, including sorting by creation date or effective date, order direction, and prioritizing pending hours. [[1]](diffhunk://#diff-a7c2b21269eaaa6f291a758c44939732a9f1d9fe8e0d71a3a7822b813a196f43R51) [[2]](diffhunk://#diff-a7c2b21269eaaa6f291a758c44939732a9f1d9fe8e0d71a3a7822b813a196f43R106-R109) [[3]](diffhunk://#diff-a7c2b21269eaaa6f291a758c44939732a9f1d9fe8e0d71a3a7822b813a196f43L363-R398) [[4]](diffhunk://#diff-a7c2b21269eaaa6f291a758c44939732a9f1d9fe8e0d71a3a7822b813a196f43R498-R550) **UI Consistency and Improvements:** - Replaced native HTML selects and checkboxes with custom UI components (`Select`, `Checkbox`) for a more consistent look across the admin interface. [[1]](diffhunk://#diff-a7c2b21269eaaa6f291a758c44939732a9f1d9fe8e0d71a3a7822b813a196f43R31-R38) [[2]](diffhunk://#diff-a7c2b21269eaaa6f291a758c44939732a9f1d9fe8e0d71a3a7822b813a196f43L650-R782) [[3]](diffhunk://#diff-a7c2b21269eaaa6f291a758c44939732a9f1d9fe8e0d71a3a7822b813a196f43L705-R831) - Added a prominent button to access the new user import page from the admin dashboard. **API and Data Model Updates:** - Modified the hours API to include the `createdAt` field in responses, enabling new sorting/filtering features. [[1]](diffhunk://#diff-53f5b1f527e0d09d7aee7f875a64881f5793a728b70fb4f6cb726c8c893ff048R27) [[2]](diffhunk://#diff-53f5b1f527e0d09d7aee7f875a64881f5793a728b70fb4f6cb726c8c893ff048R43) - Added a secure password change API endpoint for authenticated users (`app/api/change-password/route.ts`). **Developer Experience:** - Updated `.dockerignore` and `README.md` for improved local development and to use `pnpx` for Prisma commands. [[1]](diffhunk://#diff-2f754321d62f08ba8392b9b168b83e24ea2852bb5d815d63e767f6c3d23c6ac5L44-R44) [[2]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L52-R55) These changes collectively streamline admin workflows, improve usability, and add important new capabilities for managing users and hours. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
BreizhHardware 2026-05-06 12:18:39 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
BreizhHardware/Site-comptage-heure#86
No description provided.