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 .validation import schema @api_v1.route("/users", methods=["GET"]) @jwt_required() @cross_origin() def get_users(): res = KratosApi.get("/identities") return jsonify(res.json()) @api_v1.route("/users/", methods=["GET"]) @jwt_required() @cross_origin() def get_user(id): res = KratosApi.get("/identities/{}".format(id)) return jsonify(res.json()) @api_v1.route("/users", methods=["POST"]) @jwt_required() @cross_origin() @expects_json(schema) def post_user(): data = request.get_json() kratos_data = {"schema_id": "default", "traits": data} res = KratosApi.post("/identities", kratos_data) return jsonify(res.json()), res.status_code @api_v1.route("/users/", methods=["PUT"]) @jwt_required() @cross_origin() @expects_json(schema) def put_user(id): data = request.get_json() kratos_data = {"schema_id": "default", "traits": data} res = KratosApi.put("/identities/{}".format(id), kratos_data) return jsonify(res.json()), res.status_code @api_v1.route("/users/", methods=["DELETE"]) @jwt_required() @cross_origin() def delete_user(id): res = KratosApi.delete("/identities/{}".format(id)) if res.status_code == 204: return jsonify(), res.status_code return jsonify(res.json()), res.status_code