Download js/auth/authorization.js from Mhdeusi/RewardApp: direct link, hf CLI and curl.
- Browser
- Download file 2.53 kB
-
https://huggingface.co/spaces/Mhdeusi/RewardApp/resolve/main/js/auth/authorization.js
- Command line
-
hf download hf://spaces/Mhdeusi/RewardApp/js/auth/authorization.js
-
curl -L -o authorization.js https://huggingface.co/spaces/Mhdeusi/RewardApp/resolve/main/js/auth/authorization.js
2.53 kB
| class Authorization { | |
| constructor() { | |
| this.roles = { | |
| 'student': 1, | |
| 'instructor': 2, | |
| 'admin': 3 | |
| }; | |
| } | |
| getCurrentUserRole() { | |
| const currentUser = authManager.getCurrentUser(); | |
| return currentUser ? currentUser.role : 'guest'; | |
| } | |
| hasRole(requiredRole) { | |
| const currentRole = this.getCurrentUserRole(); | |
| return this.roles[currentRole] >= this.roles[requiredRole]; | |
| } | |
| hasAnyRole(requiredRoles) { | |
| const currentRole = this.getCurrentUserRole(); | |
| return requiredRoles.includes(currentRole); | |
| } | |
| requireRole(requiredRole) { | |
| return (callback) => { | |
| if (this.hasRole(requiredRole)) { | |
| return callback(); | |
| } else { | |
| this.showAccessDenied(); | |
| return false; | |
| } | |
| }; | |
| } | |
| requireAuth(callback) { | |
| return () => { | |
| if (authManager.isAuthenticated()) { | |
| return callback(); | |
| } else { | |
| this.showLoginRequired(); | |
| return false; | |
| } | |
| }; | |
| } | |
| showAccessDenied() { | |
| alert('دسترسی denied. شما permission لازم برای این بخش را ندارید.'); | |
| } | |
| showLoginRequired() { | |
| alert('لطفاً برای دسترسی به این بخش وارد شوید.'); | |
| // در برنامه واقعی، کاربر به صفحه ورود هدایت میشود | |
| window.location.hash = '#/login'; | |
| } | |
| // بررسی دسترسی به منابع | |
| canAccessLesson(lessonId) { | |
| const currentUser = authManager.getCurrentUser(); | |
| if (!currentUser) return false; | |
| // در اینجا میتوان منطق پیچیدهتری برای دسترسی به درسها پیادهسازی کرد | |
| return true; | |
| } | |
| canEditContent() { | |
| return this.hasAnyRole(['instructor', 'admin']); | |
| } | |
| canManageUsers() { | |
| return this.hasRole('admin'); | |
| } | |
| } | |
| // دکوراتورهای سریع | |
| const requireStudent = (callback) => new Authorization().requireRole('student')(callback); | |
| const requireInstructor = (callback) => new Authorization().requireRole('instructor')(callback); | |
| const requireAdmin = (callback) => new Authorization().requireRole('admin')(callback); | |
| const requireAuth = (callback) => new Authorization().requireAuth(callback); | |
| // ایجاد نمونه singleton | |
| const authzManager = new Authorization(); |