-
Notifications
You must be signed in to change notification settings - Fork 0
/
072_journal-v2.py
84 lines (74 loc) · 2.07 KB
/
072_journal-v2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from replit import db
import datetime, os, time, random
timestamp = datetime.datetime.now()
keys = db.keys()
# to delete keys in database
# for key in keys:
# del db[key]
# print(list(keys))
# Creates username and password if none exists
def addUser():
print("Welcome to the Journal Tracker. Please create a username and password.\n")
username = input("Username: ")
password = input("Password: ")
if username in keys:
print("Error: username already exists.")
return
salt = random.randint(1000,9999)
saltPass = f"{password}{salt}"
hashPass = hash(saltPass)
db[username] = {"hashed password": hashPass, "salt": salt}
print("Details stored.")
time.sleep(1)
os.system("clear")
# Checks to see if user credentials match entry in database
def login():
print("Welcome to the Journal Tracker. Please use your credentials to log in.\n")
username = input("Username: ")
password = input("Password: ")
if username not in keys:
print("ERROR: username does not exist. Exiting program.")
exit()
salt = db[username]["salt"]
saltPass = f"{password}{salt}"
hashPass = hash(saltPass)
if hashPass == db[username]["hashed password"]:
print("Login successful.")
else:
print("Access denied.")
exit()
time.sleep(1)
os.system("clear")
# Adds journal entry
def addEntry():
time.sleep(1)
os.system("clear")
timestamp = datetime.datetime.now()
print(f"Diary entry for {timestamp}")
print()
entry = input("> ")
db[timestamp] = entry
# Views journal entry
def viewEntry():
keys = db.prefix("2")
for key in keys:
time.sleep(1)
os.system("clear")
print(f"""{key}
{db[key]}""")
print()
opt = input("Next or exit? > ")
if(opt.lower()[0]=="e"):
break
# The first time the diary is run, the user must create a username and password. If the database is empty, assume this is the first time the diary has been run and create a username and password.
if list(keys):
login()
else:
addUser()
while True:
os.system("clear")
menu = input("1: Add\n2: View\n> ")
if menu == "1":
addEntry()
else:
viewEntry()