56 lines
1.8 KiB
Python
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)
|