mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-12-15 16:42:34 +00:00
Compare commits
5 Commits
pr@dev@top
...
v2.3.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c9261e34d | ||
|
|
3353fbd06b | ||
|
|
628c034c53 | ||
|
|
8e6e8a0cbd | ||
|
|
493e61aa34 |
@@ -125,6 +125,8 @@ class TreeService(Tree):
|
|||||||
|
|
||||||
def assets(self, nid):
|
def assets(self, nid):
|
||||||
node = self.get_node(nid)
|
node = self.get_node(nid)
|
||||||
|
if not node:
|
||||||
|
return set()
|
||||||
return node.data.get("assets", set())
|
return node.data.get("assets", set())
|
||||||
|
|
||||||
def valid_assets(self, nid):
|
def valid_assets(self, nid):
|
||||||
@@ -132,6 +134,8 @@ class TreeService(Tree):
|
|||||||
|
|
||||||
def all_assets(self, nid):
|
def all_assets(self, nid):
|
||||||
node = self.get_node(nid)
|
node = self.get_node(nid)
|
||||||
|
if not node:
|
||||||
|
return set()
|
||||||
if node.data is None:
|
if node.data is None:
|
||||||
node.data = {}
|
node.data = {}
|
||||||
all_assets = node.data.get("all_assets")
|
all_assets = node.data.get("all_assets")
|
||||||
|
|||||||
@@ -73,12 +73,12 @@ class SSOViewSet(AuthMixin, JmsGenericViewSet):
|
|||||||
token.save()
|
token.save()
|
||||||
except (ValueError, SSOToken.DoesNotExist):
|
except (ValueError, SSOToken.DoesNotExist):
|
||||||
self.send_auth_signal(success=False, reason='authkey_invalid')
|
self.send_auth_signal(success=False, reason='authkey_invalid')
|
||||||
return HttpResponseRedirect(reverse('authentication:login'))
|
return HttpResponseRedirect(next_url)
|
||||||
|
|
||||||
# 判断是否过期
|
# 判断是否过期
|
||||||
if (utcnow().timestamp() - token.date_created.timestamp()) > settings.AUTH_SSO_AUTHKEY_TTL:
|
if (utcnow().timestamp() - token.date_created.timestamp()) > settings.AUTH_SSO_AUTHKEY_TTL:
|
||||||
self.send_auth_signal(success=False, reason='authkey_timeout')
|
self.send_auth_signal(success=False, reason='authkey_timeout')
|
||||||
return HttpResponseRedirect(reverse('authentication:login'))
|
return HttpResponseRedirect(next_url)
|
||||||
|
|
||||||
user = token.user
|
user = token.user
|
||||||
login(self.request, user, 'authentication.backends.api.SSOAuthentication')
|
login(self.request, user, 'authentication.backends.api.SSOAuthentication')
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import uuid
|
import uuid
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
from itertools import chain
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import signals
|
from django.db.models import signals
|
||||||
@@ -229,6 +230,16 @@ def _none2list(*args):
|
|||||||
return ([] if v is None else v for v in args)
|
return ([] if v is None else v for v in args)
|
||||||
|
|
||||||
|
|
||||||
|
def _users2pks_if_need(users, admins, auditors):
|
||||||
|
pks = []
|
||||||
|
for user in chain(users, admins, auditors):
|
||||||
|
if hasattr(user, 'pk'):
|
||||||
|
pks.append(user.pk)
|
||||||
|
else:
|
||||||
|
pks.append(user)
|
||||||
|
return pks
|
||||||
|
|
||||||
|
|
||||||
class UserRoleMapper(dict):
|
class UserRoleMapper(dict):
|
||||||
def __init__(self, container=set):
|
def __init__(self, container=set):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
@@ -266,7 +277,7 @@ class OrgMemeberManager(models.Manager):
|
|||||||
users, admins, auditors = _none2list(users, admins, auditors)
|
users, admins, auditors = _none2list(users, admins, auditors)
|
||||||
|
|
||||||
send = partial(signals.m2m_changed.send, sender=self.model, instance=org, reverse=False,
|
send = partial(signals.m2m_changed.send, sender=self.model, instance=org, reverse=False,
|
||||||
model=User, pk_set=[*users, *admins, *auditors], using=self.db)
|
model=User, pk_set=_users2pks_if_need(users, admins, auditors), using=self.db)
|
||||||
|
|
||||||
send(action="pre_remove")
|
send(action="pre_remove")
|
||||||
self.filter(org_id=org.id).filter(
|
self.filter(org_id=org.id).filter(
|
||||||
@@ -290,14 +301,14 @@ class OrgMemeberManager(models.Manager):
|
|||||||
)
|
)
|
||||||
|
|
||||||
oms_add = []
|
oms_add = []
|
||||||
for users, role in add_mapper:
|
for _users, _role in add_mapper:
|
||||||
for user in users:
|
for _user in _users:
|
||||||
if isinstance(user, models.Model):
|
if isinstance(_user, models.Model):
|
||||||
user = user.id
|
_user = _user.id
|
||||||
oms_add.append(self.model(org_id=org.id, user_id=user, role=role))
|
oms_add.append(self.model(org_id=org.id, user_id=_user, role=_role))
|
||||||
|
|
||||||
send = partial(signals.m2m_changed.send, sender=self.model, instance=org, reverse=False,
|
send = partial(signals.m2m_changed.send, sender=self.model, instance=org, reverse=False,
|
||||||
model=User, pk_set=[*users, *admins, *auditors], using=self.db)
|
model=User, pk_set=_users2pks_if_need(users, admins, auditors), using=self.db)
|
||||||
|
|
||||||
send(action='pre_add')
|
send(action='pre_add')
|
||||||
self.bulk_create(oms_add)
|
self.bulk_create(oms_add)
|
||||||
|
|||||||
Reference in New Issue
Block a user