From d19b1e79abe11ebdee35d72e91d91975c6ad6755 Mon Sep 17 00:00:00 2001 From: Philip Sargent Date: Tue, 21 Jan 2025 17:59:33 +0000 Subject: now saves encrypted file after new registration. --- parsers/users.py | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) (limited to 'parsers/users.py') diff --git a/parsers/users.py b/parsers/users.py index 4bcc4fb..29009cf 100644 --- a/parsers/users.py +++ b/parsers/users.py @@ -8,18 +8,18 @@ from django.conf import settings from django.contrib.auth.models import User from django.db import models -from troggle.core.models.troggle import DataIssue, Expedition, Person, PersonExpedition +from troggle.core.models.troggle import DataIssue """This imports the registered troggle users, who are nearly-all, but not quite, Persons. exceptions are "expo" and "expoadmin" which are created by the databaseReset.py import program. -This imports unencrypted email addresses but never exports them. +This can import unencrypted email addresses but never exports them. Passwords are only ever stored as hashes using the standard Django functions. """ todo = """ -- [copy these from paper notes] +- Make all this work with New people who have never been on expo before """ USERS_FILE = "users.json" @@ -48,20 +48,19 @@ def register_user(u, email, password=None, pwhash=None): raise return user -def get_key(): +def get_encryptor(): key = settings.LONGTERM_SECRET_KEY # Django generated k = base64.urlsafe_b64encode(key.encode("utf8")[:32]) # make Fernet compatible f = Fernet(k) return f - - + def load_users(): """These are the previously registered users of the troggle system. """ PARSER_USERS = "_users" DataIssue.objects.filter(parser=PARSER_USERS).delete() - f = get_key() + f = get_encryptor() jsonfile = settings.EXPOWEB / ENCRYPTED_DIR / USERS_FILE jsonurl = "/" + str(Path(ENCRYPTED_DIR) / USERS_FILE) @@ -116,25 +115,7 @@ def load_users(): new_user = register_user(u, email, pwhash=pwhash) else: new_user = register_user(u, email) - save_users() + # save_users() no need on initial parsing -def save_users(): - f = get_key() - ru = [] - print(f"\n + Saving users, encrypted emails, and password hashes") - for u in User.objects.all(): - if u.username in ["expo", "expoadmin"]: - continue - e_email = f.encrypt(u.email.encode("utf8")).decode() - 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(f" - {u.username} - {original}") - - jsondict = { "registered_users": ru } - encryptedfile = settings.EXPOWEB / ENCRYPTED_DIR / USERS_FILE - if settings.DEVSERVER: - with open(encryptedfile, 'w', encoding='utf-8') as json_f: - json.dump(jsondict, json_f, indent=1) - return True + -- cgit v1.2.3