deletion of user
This commit is contained in:
parent
293fb060ed
commit
443eed8dd1
@ -4,6 +4,10 @@ from flask_login import current_user
|
|||||||
from ..models import User, Role
|
from ..models import User, Role
|
||||||
from .. import db
|
from .. import db
|
||||||
|
|
||||||
|
def is_current_admin():
|
||||||
|
return current_user.as_dict()['roles'][0]['parent_id'] is None
|
||||||
|
|
||||||
|
|
||||||
class UserAbl:
|
class UserAbl:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -36,6 +40,7 @@ class UserAbl:
|
|||||||
new_role = Role( \
|
new_role = Role( \
|
||||||
name=login, \
|
name=login, \
|
||||||
user_id=new_user.as_dict()['id'], \
|
user_id=new_user.as_dict()['id'], \
|
||||||
|
parent_id=current_user.as_dict()['roles'][0]['id'], \
|
||||||
permissions=permissions)
|
permissions=permissions)
|
||||||
db.session.add(new_role)
|
db.session.add(new_role)
|
||||||
new_user.roles.append(new_role)
|
new_user.roles.append(new_role)
|
||||||
@ -44,9 +49,28 @@ class UserAbl:
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
return jsonify(new_user.as_dict())
|
return jsonify(new_user.as_dict())
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def update(user_id, data):
|
||||||
|
return jsonify()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def list():
|
def list():
|
||||||
query = db.session.query(User).all()
|
query = db.session.query(User).all()
|
||||||
return jsonify([user.as_dict() for user in query])
|
return jsonify([user.as_dict() for user in query])
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def delete(user_id):
|
||||||
|
user = db.session.query(User).filter_by(id=user_id).first()
|
||||||
|
if not user:
|
||||||
|
return jsonify(message="This user doesn't exist or has already been deleted"), 404
|
||||||
|
|
||||||
|
if not is_current_admin and user.as_dict()['roles'][0]['parent_id'] != current_user.as_dict()['roles'][0]['id']:
|
||||||
|
# todo all parent should be able to delete
|
||||||
|
return jsonify(message="You cannot delete an user you are not the origin of"), 403
|
||||||
|
|
||||||
|
db.session.delete(user)
|
||||||
|
# todo check if need to delete the role
|
||||||
|
db.session.commit()
|
||||||
|
return jsonify(sucess=True)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
from flask import Blueprint, request, jsonify
|
from flask import Blueprint, request
|
||||||
from ..models import User
|
from flask_login import login_required
|
||||||
from werkzeug.security import generate_password_hash, check_password_hash
|
|
||||||
from ..models import User
|
|
||||||
from .. import db
|
|
||||||
from flask_login import login_required, current_user
|
|
||||||
from ..abl.UserAbl import UserAbl
|
from ..abl.UserAbl import UserAbl
|
||||||
from ..permissions import Perm, permissions
|
from ..permissions import Perm, permissions
|
||||||
|
|
||||||
@ -15,11 +11,19 @@ user = Blueprint('user', __name__)
|
|||||||
def create():
|
def create():
|
||||||
return UserAbl.create(request.get_json())
|
return UserAbl.create(request.get_json())
|
||||||
|
|
||||||
@user.route('delete', methods=['DELETE'])
|
@user.route('/users/<int:user_id>', methods=['DELETE'])
|
||||||
def delete():
|
@login_required
|
||||||
return "ok"
|
@permissions.require([Perm.CREATE_USER])
|
||||||
|
def delete(user_id):
|
||||||
|
return UserAbl.delete(user_id)
|
||||||
|
|
||||||
@user.route('/users', methods=['GET'])
|
@user.route('/users', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
def list():
|
def list():
|
||||||
return UserAbl.list()
|
return UserAbl.list()
|
||||||
|
|
||||||
|
@user.route('/users/<int:user_id>', methods=['PUT'])
|
||||||
|
@login_required
|
||||||
|
@permissions.require([Perm.CREATE_USER])
|
||||||
|
def update(user_id):
|
||||||
|
return UserAbl.update(user_id, request.get_json())
|
||||||
|
Loading…
Reference in New Issue
Block a user