From fe89af9d8fdae0e5d2d76a643fb22ea83d78e318 Mon Sep 17 00:00:00 2001 From: "Ing. Jan KRCMAR" Date: Fri, 31 Mar 2017 14:29:27 +0200 Subject: [PATCH] using custom accounts.backends.MyRemoteUserBackend, which adds default instances and attributes for user create_missing_userattributes removed from accounts view --- accounts/backends.py | 25 ++++++++++++++++++++++++- accounts/views.py | 10 ---------- webvirtcloud/settings.py | 4 ++-- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/accounts/backends.py b/accounts/backends.py index 77aa509..3fb208b 100644 --- a/accounts/backends.py +++ b/accounts/backends.py @@ -1,7 +1,30 @@ from django.contrib.auth.backends import RemoteUserBackend +from accounts.models import UserInstance, UserAttributes +from instances.models import Instance class MyRemoteUserBackend(RemoteUserBackend): + + #create_unknown_user = True + default_instances = [ 'debian8-template' ] + + def create_missing_userattributes(self, user): + try: + userattributes = user.userattributes + except UserAttributes.DoesNotExist: + userattributes = UserAttributes(user=user) + userattributes.save() + + def add_default_instances(self, user): + existing_instances = UserInstance.objects.filter(user=user) + if not existing_instances: + for instance_name in self.default_instances: + instance = Instance.objects.get(name=instance_name) + user_instance = UserInstance(user=user, instance=instance) + user_instance.save() + def configure_user(self, user): - user.is_superuser = True + #user.is_superuser = True + self.create_missing_userattributes(user) + self.add_default_instances(user) return user diff --git a/accounts/views.py b/accounts/views.py index 155ecc8..568eb6a 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -70,21 +70,11 @@ def accounts(request): :param request: :return: """ - - def create_missing_userattributes(users): - for user in users: - try: - userattributes = user.userattributes - except UserAttributes.DoesNotExist: - userattributes = UserAttributes(user=user) - userattributes.save() - if not request.user.is_superuser: return HttpResponseRedirect(reverse('index')) error_messages = [] users = User.objects.all().order_by('username') - create_missing_userattributes(users) allow_empty_password = settings.ALLOW_EMPTY_PASSWORD if request.method == 'POST': diff --git a/webvirtcloud/settings.py b/webvirtcloud/settings.py index 0c31433..9e0ff3a 100644 --- a/webvirtcloud/settings.py +++ b/webvirtcloud/settings.py @@ -45,8 +45,8 @@ MIDDLEWARE_CLASSES = ( ) AUTHENTICATION_BACKENDS = ( - 'django.contrib.auth.backends.RemoteUserBackend', - #'accounts.backends.MyRemoteUserBackend', + #'django.contrib.auth.backends.RemoteUserBackend', + 'accounts.backends.MyRemoteUserBackend', ) LOGIN_URL = '/accounts/login'