Generate missing LDAP users

master
Tanner Collin 2 years ago
parent 6a3ce847d6
commit 8504b77e57
  1. 2
      apiserver/apiserver/api/utils_auth.py
  2. 2
      apiserver/apiserver/api/utils_ldap.py
  3. 43
      apiserver/scripts/generate_ldap_users.py

@ -23,6 +23,8 @@ def auth_api(url, data=None, json=None):
logger.info('Auth {} - {} - {}'.format(url, e.__class__.__name__, str(e)))
logger.info('Auth timeout occured, assuming it worked and returning 200.')
return 200
except KeyboardInterrupt:
raise
except BaseException as e:
logger.error('Auth {} - {} - {}'.format(url, e.__class__.__name__, str(e)))
return None

@ -16,6 +16,8 @@ def ldap_api(route, data):
url = secrets.LDAP_API_URL + route
r = requests.post(url, data=data, headers=headers, timeout=10)
return r.status_code
except KeyboardInterrupt:
raise
except BaseException as e:
logger.error('LDAP {} - {} - {}'.format(url, e.__class__.__name__, str(e)))
return None

@ -0,0 +1,43 @@
# Generates missing LDAP users from Spaceport members
# this fixes an issue when a very old member resets their password
# and their LDAP user can't be found in the system.
#
# Assigns a random password to the user.
import django, sys, os
os.environ['DJANGO_SETTINGS_MODULE'] = 'apiserver.settings'
django.setup()
from apiserver.api import models, utils, utils_ldap
from uuid import uuid4
import re
random_password = lambda: str(uuid4())[:23]
members = models.Member.objects.all()
for member in members:
print()
username = member.user.username
print('Checking LDAP for member id:', member.id, 'username:', username)
if utils_ldap.is_configured():
result = utils_ldap.find_user(member.user.username)
if result == 200:
print(' username found, skipping')
continue
print(' generating LDAP user...')
data = dict(
first_name=member.first_name,
last_name=member.last_name,
username=username,
email=member.user.email,
password1=random_password(),
)
result = utils_ldap.create_user(data)
print(' result:', result)
Loading…
Cancel
Save