File size: 1,804 Bytes
ae76285 ff0bda6 ae76285 ff0bda6 ae76285 ff0bda6 ae76285 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
class AuthMiddleware {
static checkAuth(requiredRole = null) {
return (callback) => {
// بررسی احراز هویت
if (!authManager.isAuthenticated()) {
authzManager.showLoginRequired();
return false;
}
// بررسی نقش اگر مشخص شده باشد
if (requiredRole && !authzManager.hasRole(requiredRole)) {
authzManager.showAccessDenied();
return false;
}
return callback();
};
}
static optionalAuth(callback) {
return () => {
// اگر کاربر احراز هویت شده باشد، اطلاعاتش را پاس میدهد
const user = authManager.getCurrentUser();
return callback(user);
};
}
static initializeApp() {
console.log('🔐 Auth Middleware Initialized');
// فقط بررسی ساده - حذف فراخوانیهای مشکلدار
if (typeof authManager !== 'undefined' && authManager.getToken) {
const token = authManager.getToken();
if (token) {
const user = authManager.getCurrentUser();
if (!user) {
authManager.logout();
console.log('Token exists but no user - logged out');
}
}
}
}
}
// میانافزارهای سریع
const requireAuth = (callback) => AuthMiddleware.checkAuth()(callback);
const requireStudent = (callback) => AuthMiddleware.checkAuth('student')(callback);
const requireInstructor = (callback) => AuthMiddleware.checkAuth('instructor')(callback);
const requireAdmin = (callback) => AuthMiddleware.checkAuth('admin')(callback); |