]> git.lizzy.rs Git - cheatdb.git/blob - app/views/admin.py
Add switch user admin tool
[cheatdb.git] / app / views / admin.py
1 from flask import *
2 from flask_user import *
3 from flask.ext import menu
4 from app import app
5 from app.models import *
6 from flask_wtf import FlaskForm
7 from wtforms import *
8 from .utils import loginUser, rank_required
9
10 @menu.register_menu(app, ".admin", "Admin", order=30,
11                 visible_when=lambda: current_user.rank.atLeast(UserRank.ADMIN))
12 @app.route("/admin/")
13 @rank_required(UserRank.ADMIN)
14 def admin_page():
15         return render_template("admin/list.html")
16
17 class SwitchUserForm(FlaskForm):
18         username = StringField("Username")
19         submit = SubmitField("Switch")
20
21
22 @app.route("/admin/switchuser/", methods=["GET", "POST"])
23 @rank_required(UserRank.ADMIN)
24 def switch_user_page():
25         form = SwitchUserForm(formdata=request.form)
26         if request.method == "POST" and form.validate():
27                 user = User.query.filter_by(username=form["username"].data).first()
28                 if user is None:
29                         flash("Unable to find user", "error")
30                 elif loginUser(user):
31                         return redirect(url_for("user_profile_page", username=current_user.username))
32                 else:
33                         flash("Unable to login as user", "error")
34
35
36         # Process GET or invalid POST
37         return render_template("admin/switch_user_page.html", form=form)