telegram-pms-bot / utils.py
nssuwan186's picture
Create utils.py
b827ab0 verified
--- 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):
@wraps(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