Skip to content

Commit 7dcddcb

Browse files
committed
Cleaned things up and created some addition admin functionality
1 parent 4566cbc commit 7dcddcb

File tree

4 files changed

+127
-9
lines changed

4 files changed

+127
-9
lines changed

app/routes.py

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,15 @@ def login_user():
5151
row = user_db.get_row("Username", username)
5252

5353
try:
54-
if (row["Username"] == username and sha512_crypt.verify(password, row["Password"]) == True):
54+
if (row["Username"] == username and sha512_crypt.verify(password, row["Password"]) == True and row["Type"] != "Admin"):
5555
user_db.close_db()
56-
flash(str("Welcome {0}!").format(username))
56+
flash(str("Welcome User {0}!").format(username))
5757
return render_template("account.html", title='Account', email=row["Email"], username=row["Username"], type=row["Type"])
58+
elif (row["Username"] == username and sha512_crypt.verify(password, row["Password"]) == True and row["Type"] == "Admin"):
59+
users = user_db.get_table()
60+
user_db.close_db()
61+
flash(str("Welcome Admin {0}!").format(username))
62+
return render_template("admin.html", title='Admin Account', email=row["Email"], username=row["Username"], type=row["Type"], users=users)
5863
else:
5964
user_db.close_db()
6065
flash("Login failed! Either the Username or Password was incorrect!")
@@ -71,15 +76,34 @@ def del_user():
7176
username = request.form['username']
7277
user_db.open_db()
7378
row = user_db.get_row("Username", username)
79+
7480
if (row["Type"] == "Admin"):
81+
users = user_db.get_table()
7582
user_db.close_db()
7683
flash("Error! Can't delete an Admin account!")
77-
return render_template("account.html", title='Account', email=row["Email"], username=row["Username"], type=row["Type"])
84+
return render_template("admin.html", title='Admin Account', email=row["Email"], username=row["Username"], type=row["Type"], users=users)
7885
else:
7986
user_db.drop_row("Username", username)
87+
users = user_db.get_table()
8088
user_db.close_db()
8189
flash(str("User {0} successfully deleted!").format(username))
8290
return render_template("index.html", title='Home')
91+
else:
92+
username = request.args.get('id')
93+
user_db.open_db()
94+
row = user_db.get_row("Username", username)
95+
96+
if (row["Type"] == "Admin"):
97+
users = user_db.get_table()
98+
user_db.close_db()
99+
flash("Error! Can't delete an Admin account!")
100+
return render_template("admin.html", title='Admin Account', email=row["Email"], username=row["Username"], type=row["Type"], users=users)
101+
else:
102+
user_db.drop_row("Username", username)
103+
users = user_db.get_table()
104+
user_db.close_db()
105+
flash(str("User {0} successfully deleted!").format(username))
106+
return render_template("admin.html", title='Admin Account', email=row["Email"], username=row["Username"], type=row["Type"], users=users)
83107

84108
@app.route('/change_password', methods = ['POST', 'GET'])
85109
def change_password():
@@ -88,14 +112,20 @@ def change_password():
88112
password = request.form['password']
89113
new_password = request.form['new_password']
90114
user_db.open_db()
115+
users = user_db.get_table()
91116
row = user_db.get_row("Username", username)
92117

93118
try:
94-
if (row != None and row["Username"] == username and sha512_crypt.verify(password, row["Password"]) == True):
119+
if (row != None and row["Username"] == username and sha512_crypt.verify(password, row["Password"]) == True and row["Type"] != "Admin"):
95120
user_db.update_row("Password", sha512_crypt.hash(new_password), "Username", username)
96121
user_db.close_db()
97122
flash("Password changed successfully!")
98123
return render_template("account.html", title='Account', email=row["Email"], username=row["Username"], type=row["Type"])
124+
elif (row != None and row["Username"] == username and sha512_crypt.verify(password, row["Password"]) == True and row["Type"] == "Admin"):
125+
user_db.update_row("Password", sha512_crypt.hash(new_password), "Username", username)
126+
user_db.close_db()
127+
flash("Password changed successfully!")
128+
return render_template("admin.html", title='Admin Account', email=row["Email"], username=row["Username"], type=row["Type"], users=users)
99129
else:
100130
user_db.close_db()
101131
flash("Password change failed! The current password provided is incorrect!")
@@ -112,12 +142,19 @@ def change_username():
112142
new_username = request.form['new_username']
113143
user_db.open_db()
114144

115-
if (user_db.get_row("Username", new_username) == None):
145+
if (user_db.get_row("Username", new_username) == None and user_db.get_row("Username", username)["Type"] != "Admin"):
116146
user_db.update_row("Username", new_username, "Username", username)
117147
row = user_db.get_row("Username", new_username)
118148
user_db.close_db()
119149
flash("Username changed successfully!")
120150
return render_template("account.html", title='Account', email=row["Email"], username=row["Username"], type=row["Type"])
151+
elif (user_db.get_row("Username", new_username) == None and user_db.get_row("Username", username)["Type"] == "Admin"):
152+
user_db.update_row("Username", new_username, "Username", username)
153+
row = user_db.get_row("Username", new_username)
154+
users = user_db.get_table()
155+
user_db.close_db()
156+
flash("Username changed successfully!")
157+
return render_template("admin.html", title='Admin Account', email=row["Email"], username=row["Username"], type=row["Type"], users=users)
121158
else:
122159
row = user_db.get_row("Username", username)
123160
user_db.close_db()

app/static/styles/flask-auth.css

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,10 @@ ol {
2626

2727
a {
2828
text-decoration: none;
29-
color: whitesmoke;
29+
color: black;
3030
padding: 2px;
3131
display: inline-block;
32-
border: 4px solid #14A76C;
33-
border-radius: 2px;
32+
border: transparent;
3433
font-style: normal;
3534
font-weight: lighter;
3635
font-size: 1.2rem;
@@ -58,6 +57,32 @@ form {
5857
align-items: center;
5958
}
6059

60+
table {
61+
padding: 1%;
62+
opacity: 60%;
63+
margin: auto;
64+
width: 50%;
65+
background-color: whitesmoke;
66+
}
67+
68+
th {
69+
border: thin solid black;
70+
border-radius: 2px;
71+
padding: 1%;
72+
font-style: normal;
73+
font-weight: normal;
74+
font-size: 1.2rem;
75+
}
76+
77+
td {
78+
border: thin solid black;
79+
border-radius: 2px;
80+
padding: 1%;
81+
font-style: normal;
82+
font-weight: normal;
83+
font-size: 1rem;
84+
}
85+
6186
.box {
6287
opacity: 70%;
6388
padding: 1%;
@@ -71,4 +96,10 @@ form {
7196

7297
.title {
7398
font-size: 3rem;
99+
}
100+
101+
@media only screen and (max-width: 1010px) {
102+
table {
103+
width: 100%;
104+
}
74105
}

app/templates/account.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ <h1>Account Info</h1>
66
<ol>
77
<li><strong>Username: </strong>{{ username }}</li>
88
<li><strong>Email: </strong>{{ email }}</li>
9-
<li><strong>Type: </strong>{{ type }}</li>
9+
<li><strong>Account Type: </strong>{{ type }}</li>
1010
</ol>
1111
<form action="{{ url_for('del_user') }}" method="POST">
1212
<input type="hidden" id="username" name="username" value="{{ username }}">

app/templates/admin.html

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
{% extends "base.html" %}
2+
3+
{% block content %}
4+
<div class="box">
5+
<h1>Account Info</h1>
6+
<ol>
7+
<li><strong>Username: </strong>{{ username }}</li>
8+
<li><strong>Email: </strong>{{ email }}</li>
9+
<li><strong>Account Type: </strong>{{ type }}</li>
10+
</ol>
11+
<form action="{{ url_for('del_user') }}" method="POST">
12+
<input type="hidden" id="username" name="username" value="{{ username }}">
13+
<input type="submit" value="Delete Account">
14+
</form>
15+
16+
<form action="{{ url_for('change_username') }}" method="POST" accept-charset="UTF-8" autocomplete="off" autofocus="off" enctype="multipart/form-data">
17+
<h2>Change Username</h2><br/>
18+
<input type="hidden" id="username" name="username" value="{{ username }}" required/></br>
19+
<label for="new_username">New Username</label>
20+
<input type="text" id="new_username" name="new_username" size="32" minlength="8" maxlength="32" required/></br>
21+
<input type="submit" value="Submit"/>
22+
</form>
23+
<form action="{{ url_for('change_password') }}" method="POST" accept-charset="UTF-8" autocomplete="off" autofocus="off" enctype="multipart/form-data">
24+
<h2>Change Password</h2><br/>
25+
<input type="hidden" id="username" name="username" value="{{ username }}" required/></br>
26+
<label for="password">Password</label>
27+
<input type="password" id="password" name="password" size="32" minlength="8" maxlength="32" required/></br>
28+
<label for="new_password">New Password</label>
29+
<input type="password" id="new_password" name="new_password" size="32" minlength="8" maxlength="32" required/></br>
30+
<input type="submit" value="Submit"/>
31+
</form>
32+
33+
<h2>Users</h2>
34+
<table>
35+
<tr>
36+
<th>Email</th>
37+
<th>Username</th>
38+
<th>Account Type</th>
39+
</tr>
40+
{% for user in users %}
41+
<tr>
42+
<td>{{ user.Email }}</td>
43+
<td>{{ user.Username }}</td>
44+
<td>{{ user.Type }}</td>
45+
<td><a href="/del_user?id={{ user.Username }}">Delete Account</a></td>
46+
</tr>
47+
{% endfor %}
48+
</table>
49+
</div>
50+
{% endblock %}

0 commit comments

Comments
 (0)