mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-17 07:37:19 +00:00
Registering existing and new users works, but is ephemeral.
This commit is contained in:
@@ -24,6 +24,29 @@ todo = """
|
||||
|
||||
USERS_FILE = "users_e.json"
|
||||
ENCRYPTED_DIR = "encrypted"
|
||||
|
||||
def register_user(u, email, password=None, pwhash=None):
|
||||
try:
|
||||
if existing_user := User.objects.filter(username=u): # WALRUS
|
||||
print(f" - deleting existing user '{existing_user[0]}' before importing")
|
||||
existing_user[0].delete()
|
||||
user = User.objects.create_user(u, email)
|
||||
if pwhash:
|
||||
user.password = pwhash
|
||||
elif password:
|
||||
user.set_password(password) # function creates hash and stores hash
|
||||
print(f" # hashing provided clear-text password {password} to make pwhash for user {u}")
|
||||
else:
|
||||
user.set_password('secret') # function creates hash and stores hash
|
||||
print(f" # hashing 'secret' password to make pwhash for user {u}")
|
||||
user.is_staff = False
|
||||
user.is_superuser = False
|
||||
user.save()
|
||||
print(f" - receated and reset user '{user}'")
|
||||
except Exception as e:
|
||||
print(f"Exception <{e}>\n{len(User.objects.all())} users now in db:\n{User.objects.all()}")
|
||||
raise
|
||||
|
||||
def load_users():
|
||||
"""These are the previously registered users of the troggle system.
|
||||
"""
|
||||
@@ -71,34 +94,30 @@ def load_users():
|
||||
if userdata["encrypted"]:
|
||||
email = f.decrypt(email).decode()
|
||||
print(f" - user: '{u} <{email}>' ")
|
||||
if existing_user := User.objects.filter(username=userdata["username"]): # WALRUS
|
||||
# print(f" - deleting existing user '{existing_user[0]}' before importing")
|
||||
existing_user[0].delete()
|
||||
user = User.objects.create_user(userdata["username"], email, "secret")
|
||||
user.set_password = "secret" # special attribute stores hash not password
|
||||
user.is_staff = False
|
||||
user.is_superuser = False
|
||||
user.save()
|
||||
except Exception as e:
|
||||
print(f"Exception <{e}>\n{len(User.objects.all())} users now in db:\n{User.objects.all()}")
|
||||
print(f"Exception <{e}>\n")
|
||||
formatted_json = json.dumps(userdata, indent=4)
|
||||
print(formatted_json)
|
||||
raise
|
||||
return None
|
||||
if "pwhash" in userdata:
|
||||
pwhash = userdata["pwhash"]
|
||||
register_user(u, email, pwhash=pwhash)
|
||||
else:
|
||||
register_user(u, email)
|
||||
else:
|
||||
print(f" - user: BAD username for {userdata} ")
|
||||
|
||||
ru = []
|
||||
print(f"\n + Exporting users, encrypted emails, and password hashes")
|
||||
for u in User.objects.all():
|
||||
if u.username == "expo":
|
||||
continue
|
||||
if u.username == "expoadmin":
|
||||
if u.username in ["expo", "expoadmin"]:
|
||||
continue
|
||||
e_email = f.encrypt(u.email.encode("utf8")).decode()
|
||||
ru.append({"username":u.username, "email": e_email, "password": u.password, "encrypted": True})
|
||||
ru.append({"username":u.username, "email": e_email, "pwhash": u.password, "encrypted": True})
|
||||
# print(u.username, e_email)
|
||||
original = f.decrypt(e_email).decode()
|
||||
print(u.username, original)
|
||||
print(f" - {u.username} - {original}")
|
||||
|
||||
jsondict = { "registered_users": ru }
|
||||
encryptedfile = settings.EXPOWEB / ENCRYPTED_DIR / "encrypt.json"
|
||||
|
||||
Reference in New Issue
Block a user