mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-08-31 23:20:37 +00:00
fix: Org admin cannot use system tools.
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import asyncio
|
||||
import os
|
||||
from http.cookies import SimpleCookie
|
||||
|
||||
import aiofiles
|
||||
from asgiref.sync import sync_to_async
|
||||
@@ -8,6 +7,7 @@ from channels.generic.websocket import AsyncJsonWebsocketConsumer
|
||||
|
||||
from common.db.utils import close_old_connections
|
||||
from common.utils import get_logger
|
||||
from orgs.mixins.ws import OrgMixin
|
||||
from orgs.utils import tmp_to_org
|
||||
from rbac.builtin import BuiltinRole
|
||||
from .ansible.utils import get_ansible_task_log_path
|
||||
@@ -18,10 +18,8 @@ from .models import CeleryTaskExecution
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
class TaskLogWebsocket(AsyncJsonWebsocketConsumer):
|
||||
class TaskLogWebsocket(AsyncJsonWebsocketConsumer, OrgMixin):
|
||||
disconnected = False
|
||||
cookie = None
|
||||
org = None
|
||||
user_tasks = (
|
||||
'ops.tasks.run_ops_job',
|
||||
'ops.tasks.run_ops_job_execution',
|
||||
@@ -32,19 +30,6 @@ class TaskLogWebsocket(AsyncJsonWebsocketConsumer):
|
||||
'ansible': get_ansible_task_log_path
|
||||
}
|
||||
|
||||
def get_cookie(self):
|
||||
try:
|
||||
headers = self.scope['headers']
|
||||
headers_dict = {key.decode('utf-8'): value.decode('utf-8') for key, value in headers}
|
||||
cookie = SimpleCookie(headers_dict.get('cookie', ''))
|
||||
except Exception as e:
|
||||
cookie = SimpleCookie()
|
||||
return cookie
|
||||
|
||||
def get_current_org(self):
|
||||
oid = self.cookie.get('X-JMS-ORG')
|
||||
return oid.value if oid else None
|
||||
|
||||
async def connect(self):
|
||||
user = self.scope["user"]
|
||||
if user.is_authenticated:
|
||||
@@ -77,11 +62,6 @@ class TaskLogWebsocket(AsyncJsonWebsocketConsumer):
|
||||
user_role_ids = set(map(str, roles.values_list('id', flat=True)))
|
||||
return user_role_ids
|
||||
|
||||
@sync_to_async
|
||||
def has_perms(self, user, perms):
|
||||
with tmp_to_org(self.org):
|
||||
return user.has_perms(perms)
|
||||
|
||||
async def receive_json(self, content, **kwargs):
|
||||
task_id = content.get('task')
|
||||
task = await self.get_task(task_id)
|
||||
|
Reference in New Issue
Block a user