def wrapper(request, *args, **kwargs): resolved_redirect_url = force_str( resolve_url(redirect_url or reverse_lazy("auth_login")) ) if not request.session.get(session_var): if not request.user.is_authenticated: # we want to redirect back to current view URL refer = request.get_full_path() redirect = '{}?next={}'.format( reverse_lazy("auth_login"), refer ) # UserID value from the portal guid = request.GET.get('uid') if guid: if encryption: test = 1 guid = decrypt(guid) uid = get_userid(guid) if uid: uid = int(uid) try: user = User.objects.get(pk=uid) except: try: # create a new django user l = LDAPManager() luser = l.search(uid) data = luser[0][1] password = User.objects.make_random_password( length=32 ) user = User.objects.create( pk=uid, username=data['cn'][0], email=data['mail'][0], last_login=NOW ) user.set_password(password) user.first_name = data['givenName'][0] user.last_name = data['sn'][0] user.save() # add to groups try: for key, val in settings.LDAP_GROUPS.items(): grp = data.get(key) if grp and grp[0] == 'A': g = Group.objects.get(name__iexact=key) g.user_set.add(user) except: pass except: return HttpResponseRedirect(redirect) else: # we could not find a user from portal's UID return HttpResponseRedirect(redirect) else: return HttpResponseRedirect(redirect) else: user = request.user if group: if not in_group(user, group) and not user.is_superuser: return HttpResponseRedirect(resolved_redirect_url) # sign in the user manually user.backend = 'django.contrib.auth.backends.ModelBackend' login(request, user) request.session[session_var] = True return view_func(request, *args, **kwargs)