diff --git a/db/sqlite.py b/db/sqlite.py index 22b252e..527b95e 100644 --- a/db/sqlite.py +++ b/db/sqlite.py @@ -466,6 +466,15 @@ class DB: (until, user_id) ) + def set_user_role(self, user_id, role): + return self.change_one(''' + update users + set role = ? + where user_id = ? + ''', + (role, user_id) + ) + def change_one(self, query, values): db = self._db() c = db.cursor() diff --git a/main.py b/main.py index 0e77861..a7acda1 100644 --- a/main.py +++ b/main.py @@ -530,6 +530,19 @@ def admin_new_user(): flash(str(e), 'error') return redirect(url_for('admin')) +@app.route('/admin/user//edit/role/', methods = ['POST']) +def admin_set_role(user_id): + try: + role = request.form['role'] + if role not in ('0', '1', '2'): + flash(f'Invalid role type ({role})', 'error') + else: + db.set_user_role(user_id, role) + flash('Set user role', 'success') + except Exception as e: + flash(str(e), 'error') + return redirect(url_for('admin')) + @app.route('/admin/restart/', methods = ['POST']) def admin_restart(): chk, user = _admin_check()