mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-11-15 17:25:44 +00:00
50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
|
from flask_login import current_user
|
||
|
from flask_socketio import disconnect, Namespace
|
||
|
from app import db, hashids
|
||
|
from app.extensions.flask_socketio_extras import admin_required
|
||
|
from app.models import User
|
||
|
|
||
|
|
||
|
class AdminNamespace(Namespace):
|
||
|
def on_connect(self):
|
||
|
# Check if the user is authenticated and is an administrator
|
||
|
if not (current_user.is_authenticated and current_user.is_administrator):
|
||
|
disconnect()
|
||
|
|
||
|
|
||
|
@admin_required
|
||
|
def on_set_user_confirmed(self, user_hashid: str, confirmed_value: bool):
|
||
|
# Decode the user hashid
|
||
|
user_id = hashids.decode(user_hashid)
|
||
|
|
||
|
# Validate user_id
|
||
|
if not isinstance(user_id, int):
|
||
|
return {
|
||
|
'code': 400,
|
||
|
'body': 'user_id is invalid'
|
||
|
}
|
||
|
|
||
|
# Validate confirmed_value
|
||
|
if not isinstance(confirmed_value, bool):
|
||
|
return {
|
||
|
'code': 400,
|
||
|
'body': 'confirmed_value is invalid'
|
||
|
}
|
||
|
|
||
|
# Load user from database
|
||
|
user = User.query.get(user_id)
|
||
|
if user is None:
|
||
|
return {
|
||
|
'code': 404,
|
||
|
'body': 'User not found'
|
||
|
}
|
||
|
|
||
|
# Update user confirmed status
|
||
|
user.confirmed = confirmed_value
|
||
|
db.session.commit()
|
||
|
|
||
|
return {
|
||
|
'code': 200,
|
||
|
'body': f'User "{user.username}" is now {"confirmed" if confirmed_value else "unconfirmed"}'
|
||
|
}
|