forked from enviPath/enviPy
Implement Admin approval (#29)
This PR fixes #7 Co-authored-by: Tim Lorsbach <tim@lorsba.ch> Reviewed-on: enviPath/enviPy#29
This commit is contained in:
@ -4,6 +4,7 @@ from typing import Union, List, Optional, Set, Dict
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db import transaction
|
||||
from django.conf import settings as s
|
||||
|
||||
from epdb.models import User, Package, UserPackagePermission, GroupPackagePermission, Permission, Group, Setting, \
|
||||
EPModel, UserSettingPermission, Rule, Pathway, Node, Edge
|
||||
@ -12,11 +13,15 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
class UserManager(object):
|
||||
@staticmethod
|
||||
def create_user(username, email, password):
|
||||
def create_user(username, email, password, *args, **kwargs):
|
||||
# avoid circular import :S
|
||||
from .tasks import send_registration_mail
|
||||
# TODO flip to False
|
||||
u = get_user_model().objects.create_user(username, email, password, is_active=True)
|
||||
|
||||
is_active = not s.ADMIN_APPROVAL_REQUIRED
|
||||
if 'is_active' in kwargs:
|
||||
is_active = kwargs['is_active']
|
||||
|
||||
u = get_user_model().objects.create_user(username, email, password, is_active=is_active)
|
||||
|
||||
# Create package
|
||||
package_name = f"{u.username}{'’' if u.username[-1] in 'sxzß' else 's'} Package"
|
||||
|
||||
@ -13,12 +13,12 @@ class Command(BaseCommand):
|
||||
def create_users(self):
|
||||
|
||||
if not User.objects.filter(email='anon@lorsba.ch').exists():
|
||||
anon = UserManager.create_user("anonymous", "anon@lorsba.ch", "SuperSafe")
|
||||
anon = UserManager.create_user("anonymous", "anon@lorsba.ch", "SuperSafe", is_active=True)
|
||||
else:
|
||||
anon = User.objects.get(email='anon@lorsba.ch')
|
||||
|
||||
if not User.objects.filter(email='admin@lorsba.ch').exists():
|
||||
admin = UserManager.create_user("admin", "admin@lorsba.ch", "SuperSafe",)
|
||||
admin = UserManager.create_user("admin", "admin@lorsba.ch", "SuperSafe", is_active=True)
|
||||
admin.is_staff = True
|
||||
admin.is_superuser = True
|
||||
admin.save()
|
||||
@ -36,7 +36,7 @@ class Command(BaseCommand):
|
||||
admin.save()
|
||||
|
||||
if not User.objects.filter(email='jebus@lorsba.ch').exists():
|
||||
jebus = UserManager.create_user("jebus", "jebus@lorsba.ch", "SuperSafe",)
|
||||
jebus = UserManager.create_user("jebus", "jebus@lorsba.ch", "SuperSafe", is_active=True)
|
||||
jebus.is_staff = True
|
||||
jebus.is_superuser = True
|
||||
jebus.save()
|
||||
|
||||
@ -1176,9 +1176,14 @@ def users(request):
|
||||
username = request.POST.get('username')
|
||||
password = request.POST.get('password')
|
||||
|
||||
# Get email for username
|
||||
# Get email for username and check if account is active
|
||||
try:
|
||||
email = get_user_model().objects.get(username=username).email
|
||||
temp_user = get_user_model().objects.get(username=username)
|
||||
|
||||
if not temp_user.is_active:
|
||||
return render(request, 'errors/user_account_inactive.html', status=403)
|
||||
|
||||
email = temp_user.email
|
||||
except get_user_model().DoesNotExists:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user