amauricunha commited on
Commit
37bfde7
·
verified ·
1 Parent(s): 40352af

Update admin_module.py

Browse files
Files changed (1) hide show
  1. admin_module.py +42 -4
admin_module.py CHANGED
@@ -58,7 +58,25 @@ class AdminManager:
58
 
59
  def is_admin_logged_in(self):
60
  """Check if admin is logged in"""
61
- return session.get('admin_authenticated', False)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
 
63
  def login_admin(self, username, password):
64
  """Admin login"""
@@ -66,8 +84,13 @@ class AdminManager:
66
  session['admin_authenticated'] = True
67
  session['admin_username'] = username
68
  session['admin_login_time'] = datetime.now().isoformat()
 
 
 
69
  return True
70
- return False
 
 
71
 
72
  def logout_admin(self):
73
  """Admin logout"""
@@ -515,8 +538,23 @@ class AdminManager:
515
  def admin_required(f):
516
  @wraps(f)
517
  def decorated_function(*args, **kwargs):
518
- if not admin_manager.is_admin_logged_in():
519
- return jsonify({'error': 'Admin authentication required'}), 401
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
520
  return f(*args, **kwargs)
521
  return decorated_function
522
 
 
58
 
59
  def is_admin_logged_in(self):
60
  """Check if admin is logged in"""
61
+ authenticated = session.get('admin_authenticated', False)
62
+ username = session.get('admin_username')
63
+ login_time = session.get('admin_login_time')
64
+
65
+ # Debug logging
66
+ logger.info(f"Admin auth check: authenticated={authenticated}, username={username}, login_time={login_time}")
67
+
68
+ # Check if session has expired (24 hours)
69
+ if authenticated and login_time:
70
+ try:
71
+ login_datetime = datetime.fromisoformat(login_time)
72
+ if datetime.now() - login_datetime > timedelta(hours=24):
73
+ logger.info("Admin session expired, logging out")
74
+ self.logout_admin()
75
+ return False
76
+ except Exception as e:
77
+ logger.error(f"Error checking session expiry: {e}")
78
+
79
+ return authenticated
80
 
81
  def login_admin(self, username, password):
82
  """Admin login"""
 
84
  session['admin_authenticated'] = True
85
  session['admin_username'] = username
86
  session['admin_login_time'] = datetime.now().isoformat()
87
+ session.permanent = True # Make session permanent
88
+
89
+ logger.info(f"Admin login successful: {username}")
90
  return True
91
+ else:
92
+ logger.warning(f"Admin login failed for username: {username}")
93
+ return False
94
 
95
  def logout_admin(self):
96
  """Admin logout"""
 
538
  def admin_required(f):
539
  @wraps(f)
540
  def decorated_function(*args, **kwargs):
541
+ is_authenticated = admin_manager.is_admin_logged_in()
542
+
543
+ # Enhanced logging for debugging
544
+ from flask import session, request
545
+ logger.info(f"Admin required check for {f.__name__}: authenticated={is_authenticated}")
546
+ logger.info(f"Session keys: {list(session.keys())}")
547
+ logger.info(f"Request URL: {request.url}")
548
+
549
+ if not is_authenticated:
550
+ logger.warning(f"Admin authentication failed for {f.__name__}")
551
+ return jsonify({
552
+ 'error': 'Admin authentication required',
553
+ 'authenticated': False,
554
+ 'endpoint': f.__name__
555
+ }), 401
556
+
557
+ logger.info(f"Admin access granted to {f.__name__}")
558
  return f(*args, **kwargs)
559
  return decorated_function
560