fix(api,admin): refactor and events websocket fixed

darta 2022-05-27 16:52:35 +02:00
parent 897da17dbd
commit 02e1bcf331
8 changed files with 85 additions and 17 deletions

View File

@ -56,7 +56,7 @@ def get_token_auth_header():
def get_token_payload(token):
log.warning("The received token in get_token_payload is: " + str(token))
# log.warning("The received token in get_token_payload is: " + str(token))
try:
claims = jwt.get_unverified_claims(token)
secret = app.config["API_SECRET"]

View File

@ -1906,3 +1906,22 @@ class Admin:
self.moodle.delete_cohorts(cohort)
self.nextcloud.delete_group(gid)
self.resync_data()
def set_nextcloud_user_mail(self, data):
self.pg.update(
"""INSERT INTO "oc_appconfig" ("user_id","name","email","inbound_host","inbound_port","inbound_ssl_mode","inbound_user","outbound_host","outbound_port","outbound_ssl_mode","outbound_user") VALUES
(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s),"""
% (
data["user_id"],
data["name"],
data["email"],
data["inbound_host"],
data["inbound_port"],
data["inbound_ssl_mode"],
data["inbound_user"],
data["outbound_host"],
data["outbound_port"],
data["outbound_ssl_mode"],
data["outbound_user"],
)
)

View File

@ -0,0 +1,37 @@
mails:
type: list
schema:
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

View File

@ -280,13 +280,16 @@ def ddapi_user_mail(id=None):
if request.method == "POST":
data = request.get_json(force=True)
if not app.validators["mail"].validate(data):
if not app.validators["mails"].validate(data):
raise Error(
"bad_request",
"Data validation for mail failed: "
+ str(app.validators["mail"].errors),
traceback.format_exc(),
)
for user in data:
log.info("Added user email")
app.admin.set_nextcloud_user_mail(user)
return (
json.dumps("Not implemented yet"),
200,

View File

@ -7,6 +7,11 @@ monkey_patch()
import json
from flask_login import login_required
from admin import app
from admin.auth.tokens import get_token_payload
from admin.lib.api_exceptions import Error
from flask import request
from flask_login import current_user
from flask_socketio import (
SocketIO,
close_room,
@ -18,10 +23,6 @@ from flask_socketio import (
send,
)
from admin import app
from admin.auth.tokens import get_token_payload
from admin.lib.api_exceptions import Error
from flask import request
app.socketio = SocketIO(app)
@ -29,15 +30,18 @@ app.socketio = SocketIO(app)
@app.socketio.on("connect", namespace="/sio")
@login_required
def socketio_connect():
join_room("admin")
app.socketio.emit(
"update", json.dumps("Joined admins room"), namespace="/sio", room="admin"
)
if current_user.id:
join_room("admin")
app.socketio.emit(
"update", json.dumps("Joined admins room"), namespace="/sio", room="admin"
)
else:
None
@app.socketio.on("disconnect", namespace="/sio")
def socketio_disconnect():
None
leave_room("admin")
@app.socketio.on("connect", namespace="/sio/events")

View File

@ -9,8 +9,15 @@ import traceback
from uuid import uuid4
from api import app
from flask import (Response, jsonify, redirect, render_template, request,
send_from_directory, url_for)
from flask import (
Response,
jsonify,
redirect,
render_template,
request,
send_from_directory,
url_for,
)
from ..lib.avatars import Avatars

View File

@ -3,8 +3,7 @@
import os
from api import app
from flask import (Response, jsonify, redirect, render_template, request,
url_for)
from flask import Response, jsonify, redirect, render_template, request, url_for
from .decorators import is_internal

View File

@ -9,8 +9,7 @@ import traceback
from uuid import uuid4
from api import app
from flask import (Response, jsonify, redirect, render_template, request,
url_for)
from flask import Response, jsonify, redirect, render_template, request, url_for
from ..lib.menu import Menu