from flask import jsonify, request from flask_jwt_extended import jwt_required from flask_cors import cross_origin from flask_expects_json import expects_json from areas import api_v1 from helpers import KratosApi from helpers.auth_guard import admin_required from .validation import schema, schema_multiple from .user_service import UserService @api_v1.route("/users", methods=["GET"]) @jwt_required() @cross_origin() @admin_required() def get_users(): res = UserService.get_users() return jsonify(res) @api_v1.route("/users/", methods=["GET"]) @jwt_required() @cross_origin() def get_user(id): res = UserService.get_user(id) return jsonify(res) @api_v1.route("/users", methods=["POST"]) @jwt_required() @cross_origin() @expects_json(schema) @admin_required() def post_user(): data = request.get_json() res = UserService.post_user(data) return jsonify(res) @api_v1.route("/users/", methods=["PUT"]) @jwt_required() @cross_origin() @expects_json(schema) def put_user(id): data = request.get_json() res = UserService.put_user(id, data) return jsonify(res) @api_v1.route("/users/", methods=["DELETE"]) @jwt_required() @cross_origin() @admin_required() def delete_user(id): res = KratosApi.delete("/identities/{}".format(id)) if res.status_code == 204: UserService.delete_user(id) return jsonify(), res.status_code return jsonify(res.json()), res.status_code @api_v1.route("/users-batch", methods=["POST"]) @jwt_required() @cross_origin() @expects_json(schema_multiple) @admin_required() def post_multiple_users(): data = request.get_json() res = UserService.post_multiple_users(data) return jsonify(res)