Generate missing LDAP users

This commit is contained in:
Tanner Collin 2022-08-30 20:49:04 +00:00
parent 6a3ce847d6
commit 8504b77e57
3 changed files with 47 additions and 0 deletions

View File

@ -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 {} - {} - {}'.format(url, e.__class__.__name__, str(e)))
logger.info('Auth timeout occured, assuming it worked and returning 200.') logger.info('Auth timeout occured, assuming it worked and returning 200.')
return 200 return 200
except KeyboardInterrupt:
raise
except BaseException as e: except BaseException as e:
logger.error('Auth {} - {} - {}'.format(url, e.__class__.__name__, str(e))) logger.error('Auth {} - {} - {}'.format(url, e.__class__.__name__, str(e)))
return None return None

View File

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

View File

@ -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)