import logging
from app.classes.models.crafty_permissions import EnumPermissionsCrafty
from app.classes.web.base_api_handler import BaseApiHandler


logger = logging.getLogger(__name__)


class ApiServersServerUsersHandler(BaseApiHandler):
    def get(self, server_id: str):
        auth_data = self.authenticate_user()
        if not auth_data:
            return

        if server_id not in [str(x["server_id"]) for x in auth_data[0]]:
            # if the user doesn't have access to the server, return an error
            return self.finish_json(400, {"status": "error", "error": "NOT_AUTHORIZED"})

        if EnumPermissionsCrafty.USER_CONFIG not in auth_data[1]:
            return self.finish_json(400, {"status": "error", "error": "NOT_AUTHORIZED"})

        if EnumPermissionsCrafty.ROLES_CONFIG not in auth_data[1]:
            return self.finish_json(400, {"status": "error", "error": "NOT_AUTHORIZED"})

        self.finish_json(
            200,
            {
                "status": "ok",
                "data": list(self.controller.servers.get_authorized_users(server_id)),
            },
        )
