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 /core/views | |
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 'core/views')
-rw-r--r-- | core/views/logbook_edit.py | 2 | ||||
-rw-r--r-- | core/views/user_registration.py | 59 |
2 files changed, 56 insertions, 5 deletions
diff --git a/core/views/logbook_edit.py b/core/views/logbook_edit.py index 56b040f..7bb5987 100644 --- a/core/views/logbook_edit.py +++ b/core/views/logbook_edit.py @@ -274,7 +274,7 @@ def logbookedit(request, year=None, slug=None): See /handbook/computing/newyear.html
WHAT TO DO NOW:
- 1. Press the Back button on your proswer to return to the screen where you typed up the entry,
+ 1. Press the Back button on your broswer to return to the screen where you typed up the entry,
2. Copy the text of what you wrote into a new text file,
3. Direct a nerd to fix this. It should take only a couple of minutes.'''
print(message)
diff --git a/core/views/user_registration.py b/core/views/user_registration.py index 0648a28..902a02d 100644 --- a/core/views/user_registration.py +++ b/core/views/user_registration.py @@ -1,17 +1,28 @@ +import json
+
from django import forms
+from django.conf import settings
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.core.exceptions import ValidationError
from django.contrib.auth.models import User
from troggle.core.models.troggle import DataIssue, Person
-from troggle.parsers.users import register_user, save_users
-
+from troggle.parsers.users import register_user, get_encryptor, ENCRYPTED_DIR, USERS_FILE
+from troggle.core.utils import (
+ add_commit,
+)
"""
This is the new individual user login registration, instead of everyone signing
in as "expo". This will be useful for the kanban expo organisation tool.
"""
+todo = """
+- Make all this work with New people who have never been on expo before
+
+- login automatically, and redirect to control panel ?
+"""
+
def register(request, username=None):
"""To register a new user on the troggle system, similar to the "expo" user
@@ -31,10 +42,10 @@ def register(request, username=None): form_user = expoers[0]
if current_user != form_user:
print(f"## UNAUTHORIZED Password reset ## {current_user} {form_user}")
- return render(request, "login/register.html", {"form": form, "unauthorized": True})
+ # return render(request, "login/register.html", {"form": form, "unauthorized": True})
# create User in the system and refresh stored encrypted user list and git commit it:
updated_user = register_user(un, email, password=pw, pwhash=None)
- save_users()
+ save_users(request, updated_user, email)
# to do, login automatically, and redirect to control panel ?
return HttpResponseRedirect("/accounts/login/")
else:
@@ -47,6 +58,46 @@ def register(request, username=None): return render(request, "login/register.html", {"form": form})
+def save_users(request, updated_user, email):
+ f = get_encryptor()
+ 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}")
+
+ encryptedfile = settings.EXPOWEB / ENCRYPTED_DIR / USERS_FILE
+ try:
+ print(f"- Rewriting the entire encrypted set of registered users to disc ")
+ write_users(ru, encryptedfile, updated_user, email)
+ except:
+ message = f'! - Users encrypted data saving failed - \n!! Permissions failure ?! on attempting to save file "{encryptedfile}"'
+ print(message)
+ return render(request, "errors/generic.html", {"message": message})
+
+def write_users(registered_users, encryptedfile, updated_user, email):
+ jsondict = { "registered_users": registered_users }
+ try:
+ if settings.DEVSERVER:
+ with open(encryptedfile, 'w', encoding='utf-8') as json_f:
+ json.dump(jsondict, json_f, indent=1)
+ except Exception as e:
+ print(f" ! Exception dumping json <{e}>")
+ raise
+
+ commit_msg = f"Online (re-)registration of a troggle User"
+ editor = f"{updated_user.username} <{email}>"
+ try:
+ add_commit(encryptedfile, commit_msg, editor)
+ except Exception as e:
+ print(f" ! Exception doing git add/commit <{e}>")
+ raise
+ return True
class register_form(forms.Form): # not a model-form, just a form-form
username = forms.CharField(strip=True, required=True,
|