Compare commits

...

5 Commits
v4.4 ... v2.3.3

Author SHA1 Message Date
xinwen
9c9261e34d fix(orgs): 修复组织添加用户bug 2020-10-14 22:49:36 -05:00
xinwen
3353fbd06b fix(orgs): 组织添加成员bug 2020-10-14 06:13:15 -05:00
xinwen
628c034c53 feat(auth): sso 生成的地址重复访问的时候,重定向到用户指定的 next 地址 2020-10-08 22:23:27 -05:00
ibuler
8e6e8a0cbd fix: 修复资产列表有时的bug 2020-09-29 23:51:11 -05:00
xinwen
493e61aa34 fix(orgs): 用户修改组织角色报错 2020-09-29 23:46:45 -05:00
3 changed files with 24 additions and 9 deletions

View File

@@ -125,6 +125,8 @@ class TreeService(Tree):
def assets(self, nid):
node = self.get_node(nid)
if not node:
return set()
return node.data.get("assets", set())
def valid_assets(self, nid):
@@ -132,6 +134,8 @@ class TreeService(Tree):
def all_assets(self, nid):
node = self.get_node(nid)
if not node:
return set()
if node.data is None:
node.data = {}
all_assets = node.data.get("all_assets")

View File

@@ -73,12 +73,12 @@ class SSOViewSet(AuthMixin, JmsGenericViewSet):
token.save()
except (ValueError, SSOToken.DoesNotExist):
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:
self.send_auth_signal(success=False, reason='authkey_timeout')
return HttpResponseRedirect(reverse('authentication:login'))
return HttpResponseRedirect(next_url)
user = token.user
login(self.request, user, 'authentication.backends.api.SSOAuthentication')

View File

@@ -1,5 +1,6 @@
import uuid
from functools import partial
from itertools import chain
from django.db import models
from django.db.models import signals
@@ -229,6 +230,16 @@ def _none2list(*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):
def __init__(self, container=set):
super().__init__()
@@ -266,7 +277,7 @@ class OrgMemeberManager(models.Manager):
users, admins, auditors = _none2list(users, admins, auditors)
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")
self.filter(org_id=org.id).filter(
@@ -290,14 +301,14 @@ class OrgMemeberManager(models.Manager):
)
oms_add = []
for users, role in add_mapper:
for user in users:
if isinstance(user, models.Model):
user = user.id
oms_add.append(self.model(org_id=org.id, user_id=user, role=role))
for _users, _role in add_mapper:
for _user in _users:
if isinstance(_user, models.Model):
_user = _user.id
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,
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')
self.bulk_create(oms_add)