Inform user if password-reset failed to send.
Remove unused db code.
This commit is contained in:
parent
c262762bdc
commit
ae1a743855
|
@ -30,25 +30,20 @@ class UserWithHash:
|
||||||
host = os.environ.get('UNDERCOVER_POSTGRES_HOST')
|
host = os.environ.get('UNDERCOVER_POSTGRES_HOST')
|
||||||
db_name = os.environ.get('UNDERCOVER_POSTGRES_DBNAME')
|
db_name = os.environ.get('UNDERCOVER_POSTGRES_DBNAME')
|
||||||
port = os.environ.get('UNDERCOVER_POSTGRES_PORT')
|
port = os.environ.get('UNDERCOVER_POSTGRES_PORT')
|
||||||
user = os.environ.get('UNDERCOVER_POSTGRES_USER')
|
db_user = os.environ.get('UNDERCOVER_POSTGRES_USER')
|
||||||
|
|
||||||
|
db_available = host and db_name and port and db_user and os.environ.get('UNDERCOVER_POSTGRES_PASSWORD')
|
||||||
|
|
||||||
db_available = host and db_name and port and user and os.environ.get('UNDERCOVER_POSTGRES_PASSWORD')
|
|
||||||
|
|
||||||
def connect():
|
def connect():
|
||||||
return psycopg.connect(
|
return psycopg.connect(
|
||||||
host=host,
|
host=host,
|
||||||
dbname=db_name,
|
dbname=db_name,
|
||||||
port=port,
|
port=port,
|
||||||
user=user,
|
user=db_user,
|
||||||
password=os.environ.get('UNDERCOVER_POSTGRES_PASSWORD'))
|
password=os.environ.get('UNDERCOVER_POSTGRES_PASSWORD'))
|
||||||
|
|
||||||
|
|
||||||
def connected(action):
|
|
||||||
with connect() as con:
|
|
||||||
cur = con.cursor()
|
|
||||||
return action(cur, con)
|
|
||||||
|
|
||||||
|
|
||||||
def login(user_email: str, password: str):
|
def login(user_email: str, password: str):
|
||||||
pw_bytes: bytes = password.encode('utf-8')
|
pw_bytes: bytes = password.encode('utf-8')
|
||||||
user = __get_user(user_email)
|
user = __get_user(user_email)
|
||||||
|
@ -79,13 +74,6 @@ def delete_user(username: str):
|
||||||
con.commit()
|
con.commit()
|
||||||
|
|
||||||
|
|
||||||
def add_user_lambda(username: str, password: str):
|
|
||||||
def f(cur, con):
|
|
||||||
cur.execute("INSERT INTO users(email, password) VALUES (%s, %s)", (username, password))
|
|
||||||
con.commit()
|
|
||||||
connected(f)
|
|
||||||
|
|
||||||
|
|
||||||
def add_letter(user_id: int, letter_title: str, letter_content: str):
|
def add_letter(user_id: int, letter_title: str, letter_content: str):
|
||||||
with connect() as con:
|
with connect() as con:
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
|
@ -131,13 +119,6 @@ def __get_user(email: str) -> Optional[UserWithHash]:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_users() -> [UserWithHash]:
|
|
||||||
with connect() as con:
|
|
||||||
cur = con.cursor()
|
|
||||||
cur.execute("SELECT id, email, password FROM users")
|
|
||||||
return map(lambda row: UserWithHash(row[0], row[1], row[2]), cur.fetchall())
|
|
||||||
|
|
||||||
|
|
||||||
def initiate_password_reset(email: str) -> Optional[UUID]:
|
def initiate_password_reset(email: str) -> Optional[UUID]:
|
||||||
user = get_user(email)
|
user = get_user(email)
|
||||||
if not user:
|
if not user:
|
||||||
|
@ -167,25 +148,3 @@ def complete_reset(reset_id: str, new_password: str):
|
||||||
con.commit()
|
con.commit()
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
add_user("hash_man", "hashword")
|
|
||||||
print("Can pull correctly: " + str(login("hash_man", "hashword")))
|
|
||||||
delete_user("hash_man")
|
|
||||||
# add_letter(1, "Dynamically-added", "This is a letter added from Python!")
|
|
||||||
# edit_letter(3, "Dynamically edited!", "This letter was dynamically edited from Python!")
|
|
||||||
|
|
||||||
|
|
||||||
# for letter in get_user_letters(1):
|
|
||||||
# print("\'" + letter.title + "\"" + ":")
|
|
||||||
# print(" id: " + str(letter.id))
|
|
||||||
# print(" letter-data: " + letter.contents)
|
|
||||||
# print()
|
|
||||||
|
|
||||||
# for user in get_users():
|
|
||||||
# print(user.email + ":")
|
|
||||||
# print(" id: " + str(user.id))
|
|
||||||
# print(" password: " + user.password_hash)
|
|
||||||
# print()
|
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,7 @@ def send_password_reset(to_email: str, reset_link: str):
|
||||||
}
|
}
|
||||||
|
|
||||||
result = mailjet.send.create(data=data)
|
result = mailjet.send.create(data=data)
|
||||||
print(result.status_code)
|
return 200 <= result.status_code <= 299
|
||||||
print(result.json())
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -161,9 +161,10 @@ def reset_password():
|
||||||
if email_address:
|
if email_address:
|
||||||
reset_id = db.initiate_password_reset(email_address)
|
reset_id = db.initiate_password_reset(email_address)
|
||||||
if reset_id:
|
if reset_id:
|
||||||
email.send_password_reset(email_address, 'https://undercover.cafe/reset?id=' + str(reset_id))
|
if not email.send_password_reset(email_address, 'https://undercover.cafe/reset?id=' + str(reset_id)):
|
||||||
# TODO: Eventually remove db entry whether or not link is clicked
|
return render_index(error="Failed to send reset email. Please try again later.", status=500)
|
||||||
elif existing_reset_id:
|
elif existing_reset_id:
|
||||||
|
# TODO: Eventually remove db entry whether or not link is clicked
|
||||||
new_password = request.form['password']
|
new_password = request.form['password']
|
||||||
db.complete_reset(existing_reset_id, new_password)
|
db.complete_reset(existing_reset_id, new_password)
|
||||||
# TODO: Log in?
|
# TODO: Log in?
|
||||||
|
|
Loading…
Reference in New Issue