From 897da17dbd45b42393ea39438fc674b3dd90c7ce Mon Sep 17 00:00:00 2001 From: darta Date: Tue, 24 May 2022 20:26:39 +0200 Subject: [PATCH] fix(api): added mail cerberus validator to user_mail endpoint --- admin/src/admin/schemas/mail.yml | 34 +++++++++++++++++++++++++++++++ admin/src/admin/views/ApiViews.py | 27 ++++++++++++++++++++++++ admin/src/start.py | 7 +------ 3 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 admin/src/admin/schemas/mail.yml diff --git a/admin/src/admin/schemas/mail.yml b/admin/src/admin/schemas/mail.yml new file mode 100644 index 0000000..a264378 --- /dev/null +++ b/admin/src/admin/schemas/mail.yml @@ -0,0 +1,34 @@ +user_id: + type: string + required: true +name: + type: string + required: false +email: + type: string + required: true + regex: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$ +inbound_host: + type: string + required: true +inbound_port: + type: integer + required: true +inbound_ssl_mode: + type: string + default: ssl +inbound_user: + type: string + required: true +outbound_host: + type: string + required: true +outbound_port: + type: integer + required: true +outbound_ssl_mode: + type: string + default: ssl +outbound_user: + type: string + required: true \ No newline at end of file diff --git a/admin/src/admin/views/ApiViews.py b/admin/src/admin/views/ApiViews.py index f095d18..e31a899 100644 --- a/admin/src/admin/views/ApiViews.py +++ b/admin/src/admin/views/ApiViews.py @@ -267,6 +267,33 @@ def ddapi_group(id=None): return json.dumps({}), 200, {"Content-Type": "application/json"} +@app.route("/ddapi/user_mail", methods=["POST"]) +@app.route("/ddapi/user_mail/", methods=["GET", "POST", "DELETE"]) +@has_token +def ddapi_user_mail(id=None): + if request.method == "GET": + return ( + json.dumps("Not implemented yet"), + 200, + {"Content-Type": "application/json"}, + ) + if request.method == "POST": + data = request.get_json(force=True) + + if not app.validators["mail"].validate(data): + raise Error( + "bad_request", + "Data validation for mail failed: " + + str(app.validators["mail"].errors), + traceback.format_exc(), + ) + return ( + json.dumps("Not implemented yet"), + 200, + {"Content-Type": "application/json"}, + ) + + def user_parser(user): return { "keycloak_id": user["id"], diff --git a/admin/src/start.py b/admin/src/start.py index 30532ad..2651b92 100644 --- a/admin/src/start.py +++ b/admin/src/start.py @@ -42,12 +42,7 @@ def socketio_disconnect(): @app.socketio.on("connect", namespace="/sio/events") def socketio_connect(): - try: - jwt = get_token_payload(request.args.get("jwt")) - except: - return Error("bad_request", "Missing websocket jwt authorization bearer token") - - payload = get_token_payload(jwt) + jwt = get_token_payload(request.args.get("jwt")) join_room("events") app.socketio.emit(