from flask import request, jsonify, redirect from flask_classful import route from werkzeug.datastructures import MultiDict from app.sql.common import db, Session from app.sql.models.user import User, UserForm from app.controllers.crud_controller import CrudView from flask_jwt import current_identity class UserView(CrudView): model = User form = UserForm def on_create(self, session, form, item): if not current_identity.is_admin: raise ValueError("Unauthorized") if 'password' in form: item.password = encrypt_password(form['password']) if 'settings' in form: item.settings = form['settings'] def on_update(self, session, form, item): if not current_identity.is_admin: if item.id != current_identity.id: raise ValueError("Unauthorized") if current_identity.is_admin != item.is_admin: raise ValueError("Unauthorized") if 'password' in form: item.password = encrypt_password(form['password']) if 'settings' in form: item.settings = form['settings'] def on_destroy(self, session, form, item): if not current_identity.is_admin: raise ValueError("Unauthorized") if item.id == current_identity.id: raise ValueError("Unauthorized")