hobo/hobo/contrib/ozwillo/scripts/create_user_ozwillo.py

56 lines
1.8 KiB
Python

import sys
import logging
from django.contrib.auth import get_user_model
from authentic2_auth_oidc.models import OIDCAccount
from authentic2_auth_oidc.models import OIDCProvider
from authentic2.a2_rbac.models import Role, OrganizationalUnit
def create_user(user_id, email_addressi, user_name, provider):
while True:
new_user = User.objects.create()
oidc_account, created = OIDCAccount.objects.select_related().get_or_create(provider=provider, sub=user_id, defaults={'user': new_user})
if created:
if OIDCAccount.objects.filter(provider=provider, sub=user_id).count() > 1:
oidc_account.delete()
new_user.delete()
continue
break
else:
new_user.delete()
new_user = oidc_account.user
break
new_user.email = email_address
new_user.ou = provider.ou
new_user.is_superuser = True
new_user.is_staff = True
new_user.first_name = 'admin'
new_user.last_name = user_name
new_user.save()
return new_user
# create agent_sve role
ou = OrganizationalUnit.objects.get(default=True)
role, created = Role.objects.get_or_create(uuid='3f3367d817bb4a9aa98e7ed6c83b5b09',
defaults={'name': u'Agents SVE',
'ou': ou})
# set the provider for the user creation
provider = OIDCProvider.objects.get(name='Ozwillo')
# get user info from args sent to the script
args = sys.argv
email_address = args[1]
user_id = args[2]
user_name = args[3]
# create admin user in Publik from Ozwillo
User = get_user_model()
user = create_user(user_id, email_address, user_name, provider)
logging.info('owzillo provisionning: user created with uuid: %s', user.uuid)