12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from django.contrib.auth import get_user_model
- from ..users.setupnewuser import setup_new_user
- User = get_user_model()
- def get_or_create_user(request, user_data):
- try:
- user = User.objects.get(sso_id=user_data["id"])
- if user_needs_updating(user, user_data):
- update_user(user, user_data)
- return user
- except User.DoesNotExist:
- user = User.objects.create_user(
- user_data["username"],
- user_data["email"],
- is_active=user_data.get("is_active", True),
- sso_id=user_data["id"],
- )
- user.update_acl_key()
- setup_new_user(request.settings, user)
- return user
- def user_needs_updating(user, user_data):
- return any(
- (
- user.username != user_data["username"],
- user.email != user_data["email"],
- user.is_active != user_data.get("is_active", user.is_active),
- )
- )
- def update_user(user, user_data):
- if user.username != user_data["username"]:
- user.set_username(user_data["username"])
- if user.email != user_data["email"]:
- user.set_email(user_data["email"])
- if user.is_active != user_data.get("is_active", user.is_active):
- user.is_active = user_data["is_active"]
- user.save()
|