fix(api,admin): refactor and events websocket fixed
parent
897da17dbd
commit
02e1bcf331
|
@ -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"]
|
||||
|
|
|
@ -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"],
|
||||
)
|
||||
)
|
||||
|
|
|
@ -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
|
|
@ -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,
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue