v0.12.0 - Add modular system architecture with user-based module access
- Add Modules and UserModules database tables - Create home page with module selection grid - Implement per-user module assignment in user management - Add route guards for module access control - Refactor navigation: login -> home -> modules, admin console via button - Add Font Awesome icons
This commit is contained in:
41
app.py
41
app.py
@@ -36,7 +36,7 @@ app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hours=1)
|
||||
|
||||
|
||||
# 1. Define the version
|
||||
APP_VERSION = '0.11.3'
|
||||
APP_VERSION = '0.12.0'
|
||||
|
||||
# 2. Inject it into all templates automatically
|
||||
@app.context_processor
|
||||
@@ -59,7 +59,7 @@ if not os.path.exists(db_path):
|
||||
def index():
|
||||
"""Landing page - redirect based on login status"""
|
||||
if 'user_id' in session:
|
||||
return redirect(url_for('dashboard'))
|
||||
return redirect(url_for('home'))
|
||||
return redirect(url_for('login'))
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ def login():
|
||||
session['full_name'] = user['full_name']
|
||||
session['role'] = user['role']
|
||||
flash(f'Welcome back, {user["full_name"]}!', 'success')
|
||||
return redirect(url_for('dashboard'))
|
||||
return redirect(url_for('home'))
|
||||
else:
|
||||
flash('Invalid username or password', 'danger')
|
||||
|
||||
@@ -94,11 +94,30 @@ def logout():
|
||||
return redirect(url_for('login'))
|
||||
|
||||
|
||||
# ==================== ROUTES: HOME ====================
|
||||
@app.route('/home')
|
||||
@login_required
|
||||
def home():
|
||||
"""Module selection landing page"""
|
||||
user_id = session.get('user_id')
|
||||
|
||||
# Get modules this user has access to
|
||||
modules = query_db('''
|
||||
SELECT m.module_id, m.module_name, m.module_key, m.description, m.icon
|
||||
FROM Modules m
|
||||
JOIN UserModules um ON m.module_id = um.module_id
|
||||
WHERE um.user_id = ? AND m.is_active = 1
|
||||
ORDER BY m.display_order
|
||||
''', [user_id])
|
||||
|
||||
return render_template('home.html', modules=modules)
|
||||
|
||||
|
||||
# ==================== ROUTES: DASHBOARD ====================
|
||||
|
||||
@app.route('/dashboard')
|
||||
@app.route('/admin')
|
||||
@login_required
|
||||
def dashboard():
|
||||
def admin_dashboard():
|
||||
"""Main dashboard - different views for admin vs staff"""
|
||||
role = session.get('role')
|
||||
|
||||
@@ -136,17 +155,7 @@ def dashboard():
|
||||
''')
|
||||
|
||||
return render_template('admin_dashboard.html', sessions=sessions_list, show_archived=show_archived)
|
||||
|
||||
else:
|
||||
# Staff dashboard
|
||||
active_sessions = query_db('''
|
||||
SELECT session_id, session_name, session_type, created_timestamp
|
||||
FROM CountSessions
|
||||
WHERE status = 'active'
|
||||
ORDER BY created_timestamp DESC
|
||||
''')
|
||||
|
||||
return render_template('staff_dashboard.html', sessions=active_sessions)
|
||||
|
||||
|
||||
|
||||
@app.route('/staff-mode')
|
||||
|
||||
Reference in New Issue
Block a user