Source code for noggin.utility.password_reset
import datetime
import os
from flask import current_app
[docs]
class PasswordResetLock:
def __init__(self, username):
self.username = username
[docs]
def valid_until(self):
try:
mtime = os.path.getmtime(self._get_file_path())
except FileNotFoundError:
return None
mtime = datetime.datetime.fromtimestamp(mtime)
return mtime + datetime.timedelta(
minutes=current_app.config["PASSWORD_RESET_EXPIRATION"]
)
[docs]
def store(self):
file_path = self._get_file_path()
try:
os.makedirs(os.path.dirname(file_path))
except FileExistsError:
pass
open(file_path, "w").close()
[docs]
def delete(self):
try:
os.remove(self._get_file_path())
except FileNotFoundError:
pass # It's already been removed
def _get_file_path(self):
base_dir = current_app.config["PASSWORD_RESET_LOCK_DIR"]
return os.path.join(base_dir, self.username)