You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jumpserver/apps/orgs/views.py

50 lines
1.7 KiB

from django.shortcuts import redirect, reverse
from django.http import HttpResponseForbidden
from django.views.generic import DetailView, View
from .models import Organization
from common.utils import UUID_PATTERN
class SwitchOrgView(DetailView):
model = Organization
object = None
def get(self, request, *args, **kwargs):
pk = kwargs.get('pk')
self.object = Organization.get_instance(pk)
oid = str(self.object.id)
request.session['oid'] = oid
host = request.get_host()
referer = request.META.get('HTTP_REFERER', '')
if referer.find(host) == -1:
return redirect(reverse('index'))
if UUID_PATTERN.search(referer):
return redirect(reverse('index'))
# 组织管理员切换到组织审计员时(403)
if not self.object.get_org_admins().filter(id=request.user.id):
return redirect(reverse('index'))
return redirect(referer)
class SwitchToAOrgView(View):
def get(self, request, *args, **kwargs):
if request.user.is_common_user:
return HttpResponseForbidden()
admin_orgs = request.user.admin_orgs
audit_orgs = request.user.audit_orgs
default_org = Organization.default()
if admin_orgs:
if default_org in admin_orgs:
redirect_org = default_org
else:
redirect_org = admin_orgs[0]
return redirect(reverse('orgs:org-switch', kwargs={'pk': redirect_org.id}))
if audit_orgs:
if default_org in audit_orgs:
redirect_org = default_org
else:
redirect_org = audit_orgs[0]
return redirect(reverse('orgs:org-switch', kwargs={'pk': redirect_org.id}))