Files
spoolman2/client/public/locales
tonym 3613e7739a
Some checks failed
CI / style (push) Has been cancelled
CI / build-client (push) Has been cancelled
CI / build-amd64 (push) Has been cancelled
CI / build-tester (push) Has been cancelled
CI / test (cockroachdb) (push) Has been cancelled
CI / test (mariadb) (push) Has been cancelled
CI / test (postgres) (push) Has been cancelled
CI / test (sqlite) (push) Has been cancelled
CI / build-arm64 (push) Has been cancelled
CI / build-armv7 (push) Has been cancelled
CI / publish-images (push) Has been cancelled
CI / publish-release (push) Has been cancelled
feat(auth): Add optional authentication system (#22)
Backend:
- Add User model with username, hashed password, role, is_active
- Add passlib[bcrypt] and python-jose[cryptography] dependencies
- Create auth.py with JWT utilities, password hashing, role checking
- Add /auth endpoints: status, setup, login, me, users CRUD
- Add role-based permission system (viewer/operator/editor/admin)
- Environment: SPOOLMAN_AUTH_ENABLED, SPOOLMAN_AUTH_SECRET_KEY
- Migration for user table

Frontend:
- Add AuthProvider context with login/logout/setup
- Add LoginPage component with setup mode for first user
- Add ProtectedRoute wrapper for auth-required pages
- Add axios interceptor to attach JWT token to requests
- Add User Management tab in Settings (admin only)
- Add translation keys for auth UI

When SPOOLMAN_AUTH_ENABLED=true:
- Users must login to access the app
- First visit shows setup page to create admin account
- Role-based access control for future endpoint protection

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 00:15:36 -06:00
..
2024-08-05 16:49:43 +00:00
2024-04-29 10:07:22 +02:00
2025-04-12 17:49:25 +00:00
2024-10-26 22:31:47 +02:00
2026-01-01 23:00:57 +01:00
2024-03-02 19:30:02 +01:00
2026-01-01 23:00:56 +01:00
2025-03-16 17:42:04 +01:00
2026-01-01 23:00:58 +01:00
2025-06-16 00:02:02 +00:00
2026-01-01 23:00:50 +01:00
2026-01-01 23:00:54 +01:00
2026-01-01 23:00:54 +01:00
2024-11-23 23:16:41 +01:00
2025-06-16 00:02:04 +00:00
2025-02-11 22:28:28 +01:00
2026-01-01 23:00:53 +01:00
2024-10-26 22:31:48 +02:00