hesabixArc/hesabixAPI/scripts/grant_operator_permission.py
2025-09-20 22:46:06 +03:30

129 lines
3.9 KiB
Python

#!/usr/bin/env python3
"""
Script برای اعطای مجوز اپراتور پشتیبانی به کاربران
"""
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from sqlalchemy.orm import Session
from adapters.db.session import get_db
from adapters.db.models.user import User
def grant_operator_permission(user_email: str):
"""اعطای مجوز اپراتور پشتیبانی به کاربر"""
db = next(get_db())
try:
# پیدا کردن کاربر
user = db.query(User).filter(User.email == user_email).first()
if not user:
print(f"❌ کاربر با ایمیل {user_email} یافت نشد")
return False
# دریافت مجوزهای موجود
app_permissions = user.app_permissions or {}
# اضافه کردن مجوز اپراتور
app_permissions['support_operator'] = True
# به‌روزرسانی مجوزها
user.app_permissions = app_permissions
db.commit()
print(f"✅ مجوز اپراتور پشتیبانی به {user_email} اعطا شد")
return True
except Exception as e:
db.rollback()
print(f"❌ خطا در اعطای مجوز: {e}")
return False
finally:
db.close()
def revoke_operator_permission(user_email: str):
"""لغو مجوز اپراتور پشتیبانی از کاربر"""
db = next(get_db())
try:
# پیدا کردن کاربر
user = db.query(User).filter(User.email == user_email).first()
if not user:
print(f"❌ کاربر با ایمیل {user_email} یافت نشد")
return False
# دریافت مجوزهای موجود
app_permissions = user.app_permissions or {}
# حذف مجوز اپراتور
app_permissions['support_operator'] = False
# به‌روزرسانی مجوزها
user.app_permissions = app_permissions
db.commit()
print(f"✅ مجوز اپراتور پشتیبانی از {user_email} لغو شد")
return True
except Exception as e:
db.rollback()
print(f"❌ خطا در لغو مجوز: {e}")
return False
finally:
db.close()
def list_operators():
"""لیست اپراتورهای پشتیبانی"""
db = next(get_db())
try:
operators = db.query(User).filter(
User.app_permissions['support_operator'].astext == 'true'
).all()
if not operators:
print("هیچ اپراتور پشتیبانی یافت نشد")
return
print("اپراتورهای پشتیبانی:")
for operator in operators:
print(f"- {operator.email} ({operator.first_name} {operator.last_name})")
except Exception as e:
print(f"❌ خطا در دریافت لیست اپراتورها: {e}")
finally:
db.close()
if __name__ == "__main__":
if len(sys.argv) < 2:
print("استفاده:")
print(" python grant_operator_permission.py grant <email>")
print(" python grant_operator_permission.py revoke <email>")
print(" python grant_operator_permission.py list")
sys.exit(1)
command = sys.argv[1]
if command == "grant":
if len(sys.argv) < 3:
print("❌ ایمیل کاربر را وارد کنید")
sys.exit(1)
email = sys.argv[2]
grant_operator_permission(email)
elif command == "revoke":
if len(sys.argv) < 3:
print("❌ ایمیل کاربر را وارد کنید")
sys.exit(1)
email = sys.argv[2]
revoke_operator_permission(email)
elif command == "list":
list_operators()
else:
print("❌ دستور نامعتبر")
sys.exit(1)