Spaces:
Runtime error
Runtime error
| --- START OF FILE utils.py --- | |
| from functools import wraps | |
| from telegram import Update | |
| from telegram.ext import ContextTypes | |
| from google_services import google_handler | |
| import pandas as pd | |
| def check_permission(required_role: str): | |
| """Decorator สำหรับตรวจสอบสิทธิ์ของ User ใน Telegram""" | |
| def decorator(func): | |
| async def wrapper(update: Update, context: ContextTypes.DEFAULT_TYPE, *args, **kwargs): | |
| if update.effective_user is None: | |
| return | |
| employee_id = str(update.effective_user.id) | |
| employees_df: pd.DataFrame = await google_handler.get_employees() | |
| # ค้นหาพนักงานจาก Telegram ID | |
| user_record = employees_df[employees_df['telegram_user_id'] == employee_id] | |
| if user_record.empty: | |
| await update.message.reply_text( | |
| "❌ คุณไม่มีรายชื่ออยู่ในระบบพนักงาน", | |
| parse_mode='HTML' | |
| ) | |
| return | |
| user_roles = user_record.iloc[0]['role_permissions'].lower().split(',') | |
| user_roles = [role.strip() for role in user_roles] | |
| if required_role.lower() in user_roles or 'admin' in user_roles: | |
| context.user_data['employee_record'] = user_record.iloc[0].to_dict() | |
| await func(update, context, *args, **kwargs) | |
| else: | |
| await update.message.reply_text( | |
| f"❌ คุณไม่มีสิทธิ์ <b>{required_role.upper()}</b> ในการใช้คำสั่งนี้", | |
| parse_mode='HTML' | |
| ) | |
| return wrapper | |
| return decorator |