perf: Ssotoken login create operator choose org_id
parent
fad60ee40f
commit
019a657ec3
|
|
@ -23,6 +23,8 @@ logger = get_logger(__name__)
|
||||||
|
|
||||||
class OperatorLogHandler(metaclass=Singleton):
|
class OperatorLogHandler(metaclass=Singleton):
|
||||||
CACHE_KEY = 'OPERATOR_LOG_CACHE_KEY'
|
CACHE_KEY = 'OPERATOR_LOG_CACHE_KEY'
|
||||||
|
SYSTEM_OBJECTS = frozenset({"Role"})
|
||||||
|
PREFER_CURRENT_ELSE_USER = frozenset({"SSOToken"})
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.log_client = self.get_storage_client()
|
self.log_client = self.get_storage_client()
|
||||||
|
|
@ -142,13 +144,21 @@ class OperatorLogHandler(metaclass=Singleton):
|
||||||
after = self.__data_processing(after)
|
after = self.__data_processing(after)
|
||||||
return before, after
|
return before, after
|
||||||
|
|
||||||
@staticmethod
|
def get_org_id(self, user, object_name):
|
||||||
def get_org_id(object_name):
|
if object_name in self.SYSTEM_OBJECTS:
|
||||||
system_obj = ('Role',)
|
return Organization.SYSTEM_ID
|
||||||
org_id = get_current_org_id()
|
|
||||||
if object_name in system_obj:
|
current = get_current_org_id()
|
||||||
org_id = Organization.SYSTEM_ID
|
current_id = str(current) if current else None
|
||||||
return org_id
|
|
||||||
|
if object_name in self.PREFER_CURRENT_ELSE_USER:
|
||||||
|
if current_id and current_id != Organization.DEFAULT_ID:
|
||||||
|
return current_id
|
||||||
|
|
||||||
|
org = user.orgs.distinct().first()
|
||||||
|
return str(org.id) if org else Organization.DEFAULT_ID
|
||||||
|
|
||||||
|
return current_id or Organization.DEFAULT_ID
|
||||||
|
|
||||||
def create_or_update_operate_log(
|
def create_or_update_operate_log(
|
||||||
self, action, resource_type, resource=None, resource_display=None,
|
self, action, resource_type, resource=None, resource_display=None,
|
||||||
|
|
@ -168,7 +178,7 @@ class OperatorLogHandler(metaclass=Singleton):
|
||||||
# 前后都没变化,没必要生成日志,除非手动强制保存
|
# 前后都没变化,没必要生成日志,除非手动强制保存
|
||||||
return
|
return
|
||||||
|
|
||||||
org_id = self.get_org_id(object_name)
|
org_id = self.get_org_id(user, object_name)
|
||||||
data = {
|
data = {
|
||||||
'id': log_id, "user": str(user), 'action': action,
|
'id': log_id, "user": str(user), 'action': action,
|
||||||
'resource_type': str(resource_type), 'org_id': org_id,
|
'resource_type': str(resource_type), 'org_id': org_id,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue