Skip to content
Snippets Groups Projects
Verified Commit 4c400ae3 authored by Arun Joshua's avatar Arun Joshua
Browse files

Add "Manage users" route

Other changes:
* Fix for VSCode tab size setting
* Add some more dummy data to create_db.py
* Add route to toggle user role
* Remove settings from navbar
parent 7179d5c2
No related branches found
No related tags found
No related merge requests found
{ {
"python.formatting.provider": "black", "python.formatting.provider": "black",
"python.formatting.blackPath": "black", "python.formatting.blackPath": "black",
"editor.tabSize": 2,
"editor.formatOnSave": true, "editor.formatOnSave": true,
"[python]": { "[python]": {
"editor.defaultFormatter": null "editor.defaultFormatter": null,
"editor.tabSize": 4
} }
} }
...@@ -97,3 +97,19 @@ def deleteBook(bookid): ...@@ -97,3 +97,19 @@ def deleteBook(bookid):
db.session.delete(book) db.session.delete(book)
db.session.commit() db.session.commit()
return redirect(url_for("home")) return redirect(url_for("home"))
@app.route("/manage")
@login_required
def manageUsers():
return render_template("manage.html", users=User.query.all())
@app.route("/toggleRole/<int:userid>")
@login_required
def toggleRole(userid):
user = User.query.get(userid)
if user and current_user.is_admin():
user.role = "user" if user.is_admin() else "admin"
db.session.commit()
return redirect(url_for("manageUsers"))
\ No newline at end of file
.content {
width: var(--content-width);
}
.item {
font-size: 2rem;
margin-bottom: 5px;
font-weight: 400;
color: #ddd;
opacity: 0.85;
transition: all 0.3s ease;
}
.item:hover {
opacity: 1;
}
.italicize {
font-style: oblique;
font-weight: 300;
color: #aaa;
}
.heading {
font-size: 2.5rem;
padding: 30px 0 10px;
font-weight: 500;
}
.item a {
text-decoration: underline 1px dotted grey;
font-weight: 300;
color: #aaa;
transition: all 0.3s ease;
}
.item a:hover {
color: #ccc;
}
...@@ -33,7 +33,11 @@ ...@@ -33,7 +33,11 @@
>Add a book</a >Add a book</a
> >
<div class="space"></div> <div class="space"></div>
<a href="#">Settings</a> <a
href="{{ url_for('manageUsers') }}"
class="{{ 'active' if active_page == 'manage' else '' }}"
>Manage users</a
>
<a href="{{ url_for('logout') }}">Logout</a> <a href="{{ url_for('logout') }}">Logout</a>
</div> </div>
<div class="content">{% block content %}{% endblock %}</div> <div class="content">{% block content %}{% endblock %}</div>
......
{% extends "dash.html" %} {% set active_page = "manage" %} {% block head %}
<link
rel="stylesheet"
href="{{ url_for('static', filename='manageUsers.css') }}"
/>
{% endblock %} {% block content %} {% if current_user.is_admin() %}
<div class="heading">User List</div>
{% for user in users %}
<div class="item">
{{ user.username|e }} {% if user.username != current_user.username %} –
<a href="{{ url_for('toggleRole', userid=user.id) }}">
{{ "Demote to user" if user.is_admin() else "Promote to Administrator" }}
</a>
{% else %} <span class="italicize">(You)</span> {% endif %}
</div>
{% endfor %} {% else %}
<div class="heading">
Unauthorized. Request an existing admin to upgrade your account.
</div>
{% endif %} {% endblock %}
...@@ -12,12 +12,17 @@ def main(): ...@@ -12,12 +12,17 @@ def main():
users = [ users = [
["bookmaster", "bookmaster@example.com", "masterofbooks", "user"], ["bookmaster", "bookmaster@example.com", "masterofbooks", "user"],
["root", "root@example.com", "toor", "admin"], ["root", "root@example.com", "toor", "admin"],
["Jake", "jake@example.com", "justin", "user"],
["Anuj", "anuj@example.com", "youcan'tguessme", "admin"],
] ]
books = [ books = [
["Harry Potter", "JK Rowling", None, "400", 1], ["Harry Potter", "JK Rowling", None, "400", 3],
["Lord of the Rings", "JRR Tolkien", None, "700.50", 2], ["Lord of the Rings", "JRR Tolkien", None, "700.50", 2],
["Artemis Fowl", "Eoin Colfer", None, "356", 1], ["Artemis Fowl", "Eoin Colfer", None, "356", 1],
["Percy Jackson", "Rick Riordan", None, "499", 3],
["The Thief Lord", "Cornelia Funke", None, "375.25", 1],
["Sherlock Holmes", "Arthur Conan Doyle", None, "800", 3],
] ]
for username, email, passwd, role in users: for username, email, passwd, role in users:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment