From 4d88fa3eadc2265a816f1a41d4d693435b6af266 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 5 Nov 2019 10:26:36 +0000 Subject: [PATCH] Functions for activating and deactivating accounts --- daemon.py | 5 ++++- person.py | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/daemon.py b/daemon.py index d4d28ba0..765916f1 100644 --- a/daemon.py +++ b/daemon.py @@ -23,6 +23,7 @@ from session import createSession from webfinger import webfingerMeta from webfinger import webfingerLookup from webfinger import webfingerHandle +from person import activateAccount from person import registerAccount from person import personLookup from person import personBoxJson @@ -3024,10 +3025,12 @@ class PubServer(BaseHTTPRequestHandler): self._login_headers('text/html',len(msg)) self._write(msg) self.server.POSTbusy=False - return + return # login success - redirect with authorization print('Login success: '+loginNickname) self.send_response(303) + # re-activate account if needed + activateAccount(baseDir,loginNickname,self.server.domain) # This produces a deterministic token based on nick+password+salt saltFilename= \ self.server.baseDir+'/accounts/'+ \ diff --git a/person.py b/person.py index f5aada2c..52cdede1 100644 --- a/person.py +++ b/person.py @@ -696,3 +696,24 @@ def removeAccount(baseDir: str,nickname: str,domain: str,port: int) -> bool: if os.path.isdir(baseDir+'/sharefiles/'+nickname): shutil.rmtree(baseDir+'/sharefiles/'+nickname) return True + +def deactivateAccount(baseDir: str,nickname: str,domain: str) -> None: + """Makes an account temporarily unavailable + """ + accountDir=baseDir+'/accounts/'+nickname+'@'+domain + if not os.path.isdir(accountDir): + return + deactivatedDir=baseDir+'/deactivated' + if not os.path.isdir(deactivatedDir): + os.mkdir(deactivatedDir) + shutil.move(accountDir,deactivatedDir+'/'+nickname+'@'+domain) + +def activateAccount(baseDir: str,nickname: str,domain: str) -> None: + """Makes a deactivated account available + """ + deactivatedDir=baseDir+'/deactivated' + deactivatedAccountDir=deactivatedDir+'/'+nickname+'@'+domain + if not os.path.isdir(deactivatedAccountDir): + return + accountDir=baseDir+'/accounts/'+nickname+'@'+domain + shutil.move(deactivatedAccountDir,accountDir)