fix(api): fixed websocket /sio/events namespace with jwt
parent
e0eee87370
commit
267d1e26a1
|
@ -1,8 +1,9 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from admin import app
|
|
||||||
from flask_login import LoginManager, UserMixin
|
from flask_login import LoginManager, UserMixin
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
""" OIDC TESTS """
|
""" OIDC TESTS """
|
||||||
# from flask_oidc import OpenIDConnect
|
# from flask_oidc import OpenIDConnect
|
||||||
# app.config.update({
|
# app.config.update({
|
||||||
|
|
|
@ -9,10 +9,11 @@ import os
|
||||||
import traceback
|
import traceback
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
from admin import app
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from jose import jwt
|
from jose import jwt
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
from ..lib.api_exceptions import Error
|
from ..lib.api_exceptions import Error
|
||||||
|
|
||||||
|
|
||||||
|
@ -55,12 +56,15 @@ 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))
|
||||||
try:
|
try:
|
||||||
claims = jwt.get_unverified_claims(token)
|
claims = jwt.get_unverified_claims(token)
|
||||||
secret = app.config["API_SECRET"]
|
secret = app.config["API_SECRET"]
|
||||||
|
|
||||||
except:
|
except:
|
||||||
log.warning("JWT token with invalid parameters. Can not parse it.")
|
log.warning(
|
||||||
|
"JWT token with invalid parameters. Can not parse it.: " + str(token)
|
||||||
|
)
|
||||||
raise Error(
|
raise Error(
|
||||||
"unauthorized",
|
"unauthorized",
|
||||||
"Unable to parse authentication parameters token.",
|
"Unable to parse authentication parameters token.",
|
||||||
|
@ -75,7 +79,7 @@ def get_token_payload(token):
|
||||||
options=dict(verify_aud=False, verify_sub=False, verify_exp=True),
|
options=dict(verify_aud=False, verify_sub=False, verify_exp=True),
|
||||||
)
|
)
|
||||||
except jwt.ExpiredSignatureError:
|
except jwt.ExpiredSignatureError:
|
||||||
log.info("Token expired")
|
log.warning("Token expired")
|
||||||
raise Error("unauthorized", "Token is expired", traceback.format_stack())
|
raise Error("unauthorized", "Token is expired", traceback.format_stack())
|
||||||
|
|
||||||
except jwt.JWTClaimsError:
|
except jwt.JWTClaimsError:
|
||||||
|
|
|
@ -6,12 +6,19 @@ from pprint import pprint
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
import diceware
|
import diceware
|
||||||
|
|
||||||
from admin import app
|
from admin import app
|
||||||
|
|
||||||
from .avatars import Avatars
|
from .avatars import Avatars
|
||||||
from .helpers import (filter_roles_list, filter_roles_listofdicts,
|
from .helpers import (
|
||||||
get_gids_from_kgroup_ids, get_group_from_group_id,
|
filter_roles_list,
|
||||||
gid2kpath, kpath2gid, system_username)
|
filter_roles_listofdicts,
|
||||||
|
get_gids_from_kgroup_ids,
|
||||||
|
get_group_from_group_id,
|
||||||
|
gid2kpath,
|
||||||
|
kpath2gid,
|
||||||
|
system_username,
|
||||||
|
)
|
||||||
from .keycloak_client import KeycloakClient
|
from .keycloak_client import KeycloakClient
|
||||||
from .moodle import Moodle
|
from .moodle import Moodle
|
||||||
from .nextcloud import Nextcloud
|
from .nextcloud import Nextcloud
|
||||||
|
@ -26,9 +33,14 @@ import secrets
|
||||||
from .api_exceptions import Error
|
from .api_exceptions import Error
|
||||||
from .events import Events, sio_event_send
|
from .events import Events, sio_event_send
|
||||||
from .exceptions import UserExists, UserNotFound
|
from .exceptions import UserExists, UserNotFound
|
||||||
from .helpers import (count_repeated, get_group_with_childs,
|
from .helpers import (
|
||||||
get_kid_from_kpath, kpath2gids, kpath2kpaths,
|
count_repeated,
|
||||||
rand_password)
|
get_group_with_childs,
|
||||||
|
get_kid_from_kpath,
|
||||||
|
kpath2gids,
|
||||||
|
kpath2kpaths,
|
||||||
|
rand_password,
|
||||||
|
)
|
||||||
|
|
||||||
MANAGER = os.environ["CUSTOM_ROLE_MANAGER"]
|
MANAGER = os.environ["CUSTOM_ROLE_MANAGER"]
|
||||||
TEACHER = os.environ["CUSTOM_ROLE_TEACHER"]
|
TEACHER = os.environ["CUSTOM_ROLE_TEACHER"]
|
||||||
|
|
|
@ -4,9 +4,10 @@ import logging as log
|
||||||
import os
|
import os
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from admin import app
|
|
||||||
from flask import jsonify, request
|
from flask import jsonify, request
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
content_type = {"Content-Type": "application/json"}
|
content_type = {"Content-Type": "application/json"}
|
||||||
ex = {
|
ex = {
|
||||||
"bad_request": {
|
"bad_request": {
|
||||||
|
|
|
@ -2,12 +2,13 @@ import logging as log
|
||||||
import os
|
import os
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
from admin import app
|
|
||||||
from minio import Minio
|
from minio import Minio
|
||||||
from minio.commonconfig import REPLACE, CopySource
|
from minio.commonconfig import REPLACE, CopySource
|
||||||
from minio.deleteobjects import DeleteObject
|
from minio.deleteobjects import DeleteObject
|
||||||
from requests import get, post
|
from requests import get, post
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
|
|
||||||
class Avatars:
|
class Avatars:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
|
@ -7,10 +7,11 @@ from pprint import pprint
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
import yaml
|
import yaml
|
||||||
from admin import app
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from schema import And, Optional, Schema, SchemaError, Use
|
from schema import And, Optional, Schema, SchemaError, Use
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
|
|
||||||
class Dashboard:
|
class Dashboard:
|
||||||
def __init__(
|
def __init__(
|
||||||
|
|
|
@ -9,11 +9,19 @@ import traceback
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
|
from flask import Response, jsonify, redirect, render_template, request, url_for
|
||||||
|
from flask_socketio import (
|
||||||
|
SocketIO,
|
||||||
|
close_room,
|
||||||
|
disconnect,
|
||||||
|
emit,
|
||||||
|
join_room,
|
||||||
|
leave_room,
|
||||||
|
rooms,
|
||||||
|
send,
|
||||||
|
)
|
||||||
|
|
||||||
from admin import app
|
from admin import app
|
||||||
from flask import (Response, jsonify, redirect, render_template, request,
|
|
||||||
url_for)
|
|
||||||
from flask_socketio import (SocketIO, close_room, disconnect, emit, join_room,
|
|
||||||
leave_room, rooms, send)
|
|
||||||
|
|
||||||
|
|
||||||
def sio_event_send(event, data):
|
def sio_event_send(event, data):
|
||||||
|
|
|
@ -5,7 +5,6 @@ import traceback
|
||||||
from admin import app
|
from admin import app
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
from admin import app
|
|
||||||
from minio import Minio
|
from minio import Minio
|
||||||
from minio.commonconfig import REPLACE, CopySource
|
from minio.commonconfig import REPLACE, CopySource
|
||||||
from minio.deleteobjects import DeleteObject
|
from minio.deleteobjects import DeleteObject
|
||||||
|
|
|
@ -7,9 +7,10 @@ import sys
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from admin import app
|
|
||||||
from cerberus import Validator, rules_set_registry, schema_registry
|
from cerberus import Validator, rules_set_registry, schema_registry
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
|
|
||||||
class AdminValidator(Validator):
|
class AdminValidator(Validator):
|
||||||
None
|
None
|
||||||
|
|
|
@ -2,9 +2,10 @@ import logging as log
|
||||||
import traceback
|
import traceback
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
from admin import app
|
|
||||||
from requests import get, post
|
from requests import get, post
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
from .exceptions import UserExists, UserNotFound
|
from .exceptions import UserExists, UserNotFound
|
||||||
from .postgres import Postgres
|
from .postgres import Postgres
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import traceback
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
# from ..lib.log import *
|
# from ..lib.log import *
|
||||||
from admin import app
|
from admin import app
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import json
|
||||||
import logging as log
|
import logging as log
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
|
|
||||||
# from .keycloak import Keycloak
|
# from .keycloak import Keycloak
|
||||||
# from .moodle import Moodle
|
# from .moodle import Moodle
|
||||||
import string
|
import string
|
||||||
|
@ -13,6 +14,7 @@ from datetime import datetime, timedelta
|
||||||
|
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from admin import app
|
from admin import app
|
||||||
|
|
||||||
from .postgres import Postgres
|
from .postgres import Postgres
|
||||||
|
|
|
@ -8,9 +8,10 @@ import sys
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from admin import app
|
|
||||||
from flask import request
|
from flask import request
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
from ..lib.api_exceptions import Error
|
from ..lib.api_exceptions import Error
|
||||||
from .decorators import has_token
|
from .decorators import has_token
|
||||||
|
|
||||||
|
|
|
@ -6,17 +6,18 @@ import logging as log
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# import Queue
|
# import Queue
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from admin 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 flask_login import current_user, login_required
|
from flask_login import current_user, login_required
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
from ..lib.helpers import system_group
|
from ..lib.helpers import system_group
|
||||||
from .decorators import login_or_token
|
from .decorators import login_or_token
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from admin import app
|
|
||||||
from flask import flash, redirect, render_template, request, url_for
|
from flask import flash, redirect, render_template, request, url_for
|
||||||
from flask_login import current_user, login_required, login_user, logout_user
|
from flask_login import current_user, login_required, login_user, logout_user
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
from ..auth.authentication import *
|
from ..auth.authentication import *
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,11 +11,19 @@ from pprint import pprint
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from admin import app
|
from flask import (
|
||||||
from flask import (Response, jsonify, redirect, render_template, request,
|
Response,
|
||||||
send_file, url_for)
|
jsonify,
|
||||||
|
redirect,
|
||||||
|
render_template,
|
||||||
|
request,
|
||||||
|
send_file,
|
||||||
|
url_for,
|
||||||
|
)
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
from ..lib.avatars import Avatars
|
from ..lib.avatars import Avatars
|
||||||
from .decorators import is_admin
|
from .decorators import is_admin
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,10 @@ import sys
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from admin import app
|
|
||||||
from flask import request
|
from flask import request
|
||||||
|
|
||||||
|
from admin import app
|
||||||
|
|
||||||
from .decorators import is_internal
|
from .decorators import is_internal
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ monkey_patch()
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
<<<<<<< HEAD
|
|
||||||
from flask_login import login_required
|
from flask_login import login_required
|
||||||
from flask_socketio import (
|
from flask_socketio import (
|
||||||
SocketIO,
|
SocketIO,
|
||||||
|
@ -19,14 +18,10 @@ from flask_socketio import (
|
||||||
send,
|
send,
|
||||||
)
|
)
|
||||||
|
|
||||||
=======
|
|
||||||
>>>>>>> fix(admin): applied jwt token verification at ws and black/isort
|
|
||||||
from admin import app
|
from admin import app
|
||||||
from admin.auth.tokens import get_token_payload
|
from admin.auth.tokens import get_token_payload
|
||||||
from admin.lib.api_exceptions import Error
|
from admin.lib.api_exceptions import Error
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_socketio import (SocketIO, close_room, disconnect, emit, join_room,
|
|
||||||
leave_room, rooms, send)
|
|
||||||
|
|
||||||
app.socketio = SocketIO(app)
|
app.socketio = SocketIO(app)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue