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):
|
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:
|
try:
|
||||||
claims = jwt.get_unverified_claims(token)
|
claims = jwt.get_unverified_claims(token)
|
||||||
secret = app.config["API_SECRET"]
|
secret = app.config["API_SECRET"]
|
||||||
|
|
|
@ -1906,3 +1906,22 @@ class Admin:
|
||||||
self.moodle.delete_cohorts(cohort)
|
self.moodle.delete_cohorts(cohort)
|
||||||
self.nextcloud.delete_group(gid)
|
self.nextcloud.delete_group(gid)
|
||||||
self.resync_data()
|
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":
|
if request.method == "POST":
|
||||||
data = request.get_json(force=True)
|
data = request.get_json(force=True)
|
||||||
|
|
||||||
if not app.validators["mail"].validate(data):
|
if not app.validators["mails"].validate(data):
|
||||||
raise Error(
|
raise Error(
|
||||||
"bad_request",
|
"bad_request",
|
||||||
"Data validation for mail failed: "
|
"Data validation for mail failed: "
|
||||||
+ str(app.validators["mail"].errors),
|
+ str(app.validators["mail"].errors),
|
||||||
traceback.format_exc(),
|
traceback.format_exc(),
|
||||||
)
|
)
|
||||||
|
for user in data:
|
||||||
|
log.info("Added user email")
|
||||||
|
app.admin.set_nextcloud_user_mail(user)
|
||||||
return (
|
return (
|
||||||
json.dumps("Not implemented yet"),
|
json.dumps("Not implemented yet"),
|
||||||
200,
|
200,
|
||||||
|
|
|
@ -7,6 +7,11 @@ monkey_patch()
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from flask_login import login_required
|
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 (
|
from flask_socketio import (
|
||||||
SocketIO,
|
SocketIO,
|
||||||
close_room,
|
close_room,
|
||||||
|
@ -18,10 +23,6 @@ from flask_socketio import (
|
||||||
send,
|
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)
|
app.socketio = SocketIO(app)
|
||||||
|
|
||||||
|
@ -29,15 +30,18 @@ app.socketio = SocketIO(app)
|
||||||
@app.socketio.on("connect", namespace="/sio")
|
@app.socketio.on("connect", namespace="/sio")
|
||||||
@login_required
|
@login_required
|
||||||
def socketio_connect():
|
def socketio_connect():
|
||||||
join_room("admin")
|
if current_user.id:
|
||||||
app.socketio.emit(
|
join_room("admin")
|
||||||
"update", json.dumps("Joined admins room"), namespace="/sio", room="admin"
|
app.socketio.emit(
|
||||||
)
|
"update", json.dumps("Joined admins room"), namespace="/sio", room="admin"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
@app.socketio.on("disconnect", namespace="/sio")
|
@app.socketio.on("disconnect", namespace="/sio")
|
||||||
def socketio_disconnect():
|
def socketio_disconnect():
|
||||||
None
|
leave_room("admin")
|
||||||
|
|
||||||
|
|
||||||
@app.socketio.on("connect", namespace="/sio/events")
|
@app.socketio.on("connect", namespace="/sio/events")
|
||||||
|
|
|
@ -9,8 +9,15 @@ import traceback
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from api import app
|
from api import app
|
||||||
from flask import (Response, jsonify, redirect, render_template, request,
|
from flask import (
|
||||||
send_from_directory, url_for)
|
Response,
|
||||||
|
jsonify,
|
||||||
|
redirect,
|
||||||
|
render_template,
|
||||||
|
request,
|
||||||
|
send_from_directory,
|
||||||
|
url_for,
|
||||||
|
)
|
||||||
|
|
||||||
from ..lib.avatars import Avatars
|
from ..lib.avatars import Avatars
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,7 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from api import app
|
from api import app
|
||||||
from flask import (Response, jsonify, redirect, render_template, request,
|
from flask import Response, jsonify, redirect, render_template, request, url_for
|
||||||
url_for)
|
|
||||||
|
|
||||||
from .decorators import is_internal
|
from .decorators import is_internal
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,7 @@ import traceback
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from api import app
|
from api import app
|
||||||
from flask import (Response, jsonify, redirect, render_template, request,
|
from flask import Response, jsonify, redirect, render_template, request, url_for
|
||||||
url_for)
|
|
||||||
|
|
||||||
from ..lib.menu import Menu
|
from ..lib.menu import Menu
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue