Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
oyaji / oyaji / decorators.py
Size: Mime:
# Python
from functools import wraps

# Third
from flask.wrappers import Response as FlaskResponse
from flask_jwt_extended import get_jwt_identity

# Apps
from apps.admins.repositories import AdminRepo
from apps.employees.repositories import EmployeeRepo
from apps.messages import Messages
from apps.responses import Response


def check_admin(f):
    @wraps(f)
    def wrap(*args, **kwargs):
        jwt_user = get_jwt_identity() or None
        if jwt_user:
            admin = AdminRepo().get_admin_by_email(jwt_user)
            if isinstance(admin, FlaskResponse):
                return admin

            if not admin.is_active():
                return Response("Auth").notallowed_user(Messages.USER_INACTIVE.value)

            kwargs["admin_id"] = f"{admin.id}"
            kwargs["admin_name"] = f"{admin.name}"
            kwargs["company_id"] = f"{admin.company_id}"
            kwargs["active"] = admin.is_active()
            kwargs["jwt_user"] = jwt_user
            return f(*args, **kwargs)

    return wrap


def check_employee(f):
    @wraps(f)
    def wrap(*args, **kwargs):
        jwt_user = get_jwt_identity() or None
        if jwt_user:
            employee = EmployeeRepo().get_employee_by_email(jwt_user)
            if isinstance(employee, FlaskResponse):
                return employee

            if not employee.is_active():
                return Response("Auth").notallowed_user(Messages.USER_INACTIVE.value)

            kwargs["employee_id"] = f"{employee.id}"
            kwargs["employee_name"] = f"{employee.name}"
            kwargs["store_id"] = f"{employee.store_id}"
            kwargs["active"] = employee.is_active()
            kwargs["jwt_user"] = jwt_user
            return f(*args, **kwargs)

    return wrap