/
sofnuk2004
/
server1
Обзор
Документация
Войти
/
sofnuk2004
/
server1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/auth_utils.py
66 строк
3 KB
Sofya Nikolaeva
убираю лишний config
03 мар 2026, 18:36
03 мар 2026, 18:36
fc7a7bb
Код
Авторство
О чём код?
from flask import session, redirect, url_for, flash from functools import wraps from app.db_models import User def login_user(user): """Сохраняем пользователя в сессии""" session['user_id'] = user.id session['user_role'] = user.role session['user_name'] = user.username def logout_user(): """Удаляем пользователя из сессии""" session.pop('user_id', None) session.pop('user_role', None) session.pop('user_name', None) def get_current_user(): """Получаем объект пользователя из сессии""" user_id = session.get('user_id') if user_id: return User.query.get(user_id) return None def login_required(f): @wraps(f) def decorated_function(*args, **kwargs): if not session.get('user_id'): flash('Пожалуйста, войдите для доступа к этой странице.', 'warning') return redirect(url_for('auth.login')) return f(*args, **kwargs) return decorated_function def admin_required(f): @wraps(f) def decorated_function(*args, **kwargs): if not session.get('user_id'): flash('Пожалуйста, войдите для доступа к этой странице.', 'warning') return redirect(url_for('auth.login')) user = get_current_user() if not user or not user.is_admin(): flash('У вас нет прав для доступа к этой странице.', 'danger') return redirect(url_for('main.index')) return f(*args, **kwargs) return decorated_function def doctor_required(f): @wraps(f) def decorated_function(*args, **kwargs): if not session.get('user_id'): flash('Пожалуйста, войдите для доступа к этой странице.', 'warning') return redirect(url_for('auth.login')) user = get_current_user() if not user or not (user.is_doctor() or user.is_admin()): flash('У вас нет прав для доступа к этой странице.', 'danger') return redirect(url_for('main.index')) return f(*args, **kwargs) return decorated_function def patient_required(f): @wraps(f) def decorated_function(*args, **kwargs): if not session.get('user_id'): flash('Пожалуйста, войдите для доступа к этой странице.', 'warning') return redirect(url_for('auth.login')) return f(*args, **kwargs) return decorated_function