diff options
author | Philip Sargent <philip.sargent@gmail.com> | 2025-01-21 17:59:33 +0000 |
---|---|---|
committer | Philip Sargent <philip.sargent@gmail.com> | 2025-01-21 17:59:33 +0000 |
commit | d19b1e79abe11ebdee35d72e91d91975c6ad6755 (patch) | |
tree | 41f932162830f7f1802ec62f02510011726e513d /parsers/users.py | |
parent | 157f1fcf273f472515e9c66c1f2b18c4d61a0d79 (diff) | |
download | troggle-d19b1e79abe11ebdee35d72e91d91975c6ad6755.tar.gz troggle-d19b1e79abe11ebdee35d72e91d91975c6ad6755.tar.bz2 troggle-d19b1e79abe11ebdee35d72e91d91975c6ad6755.zip |
now saves encrypted file after new registration.
Diffstat (limited to 'parsers/users.py')
-rw-r--r-- | parsers/users.py | 35 |
1 files changed, 8 insertions, 27 deletions
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 + |