 arnefandCopilot
|
817763887a
|
refactor: replace can_upload boolean with role-based access control
Introduces a three-tier role hierarchy: reader < uploader < admin.
- internal/users/role.go: Role type, roleLevel map, AtLeast(min),
ParseRole() — new roles added by inserting into roleLevel only
- internal/users/store.go: versioned migrations via _schema_version table;
v2 migration adds 'role' column and migrates existing can_upload data;
SetRole() replaces SetUpload(); Session carries Role instead of CanUpload
- internal/web/middleware.go: generic requireRole(minRole) middleware
replaces the ad-hoc requireUpload
- internal/web/handlers.go: upload routes use requireRole(RoleUploader);
listBooks derives canUpload from sess.Role.AtLeast(RoleUploader)
- cmd/admin/main.go: user add --role <reader|uploader|admin>,
user set-role replaces user set-upload
- README, copilot-instructions updated
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
2026-08-11 19:43:39 +02:00 |
|