[dd-sso] Fix minio issue and MailViews API

Email service sends a JSON with: {"config": {...}, "users": [...]}
merge-requests/7/head
Evilham 2022-08-03 08:16:19 +02:00
parent d26df2779e
commit cf05b9675c
No known key found for this signature in database
GPG Key ID: AE3EE30D970886BF
5 changed files with 17 additions and 13 deletions

View File

@ -30,7 +30,8 @@ mysql-connector-python==8.0.30
psycopg2==2.9.3 psycopg2==2.9.3
# python-keycloak can't be upgraded without issues # python-keycloak can't be upgraded without issues
python-keycloak==0.26.1 python-keycloak==0.26.1
minio==7.1.11 # minio can't be upgraded without issues
minio==7.0.3
urllib3==1.26.11 urllib3==1.26.11
schema==0.7.5 schema==0.7.5
Werkzeug==2.2.1 Werkzeug==2.2.1

View File

@ -75,6 +75,7 @@ class AdminFlaskApp(Flask):
domain : str domain : str
node_modules_dir : str node_modules_dir : str
ready: bool = False ready: bool = False
validators: Dict
def __init__(self, *args: Any, **kwargs: Any): def __init__(self, *args: Any, **kwargs: Any):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -83,7 +84,7 @@ class AdminFlaskApp(Flask):
self.url_map.strict_slashes = False self.url_map.strict_slashes = False
self._load_config() self._load_config()
# Minor setup tasks # Minor setup tasks
self._load_validators() self.validators = self._load_validators()
self._setup_routes() self._setup_routes()
self._setup_api_3p() self._setup_api_3p()
setup_api_views(self) setup_api_views(self)

View File

@ -137,7 +137,7 @@ class Admin:
update_cmd = f"""mail:account:update \ update_cmd = f"""mail:account:update \
--imap-host '{ kw['inbound_host'] }' --imap-port '{ kw['inbound_port'] }' --imap-ssl-mode '{ kw['inbound_ssl_mode'] }' \\ --imap-host '{ kw['inbound_host'] }' --imap-port '{ kw['inbound_port'] }' --imap-ssl-mode '{ kw['inbound_ssl_mode'] }' \\
--imap-user '{ user['email'] }' --imap-password '{ user['password'] }' \\ --imap-user '{ user['email'] }' --imap-password '{ user['password'] }' \\
--smtp-host '{ kw['outbound_host'] }' --smtp-port'{ kw['outbound_port'] }' --smtp-ssl-mode '{ kw['outbound_ssl_mode'] }' \\ --smtp-host '{ kw['outbound_host'] }' --smtp-port '{ kw['outbound_port'] }' --smtp-ssl-mode '{ kw['outbound_ssl_mode'] }' \\
--smtp-user '{ user['email'] }' --smtp-password '{ user['password'] }' \\ --smtp-user '{ user['email'] }' --smtp-password '{ user['password'] }' \\
-- '{ user['user_id'] }' '{ user['email']}'""" -- '{ user['user_id'] }' '{ user['email']}'"""
create_cmd = f"""mail:account:create '{ user['user_id'] }' '{ account_name }' '{ user['email'] }' \\ create_cmd = f"""mail:account:create '{ user['user_id'] }' '{ account_name }' '{ user['email'] }' \\

View File

@ -45,7 +45,7 @@ class Avatars:
# self.update_missing_avatars() # self.update_missing_avatars()
def add_user_default_avatar(self, userid : str, role : str="unknown") -> None: def add_user_default_avatar(self, userid : str, role : str="unknown") -> None:
path = os.path.join(self.avatars_path, role) + ".jpg", path = os.path.join(self.avatars_path, role) + ".jpg"
self.mclient.fput_object( self.mclient.fput_object(
self.bucket, self.bucket,
userid, userid,

View File

@ -77,17 +77,19 @@ def setup_mail_views(app: "AdminFlaskApp") -> None:
Dict, mail_3p.verify_and_decrypt_incoming_json(request.get_data()) Dict, mail_3p.verify_and_decrypt_incoming_json(request.get_data())
) )
users = dec_data.pop("users") users = dec_data.pop("users")
for user in users: config = dec_data.pop("config", {})
if not app.validators["mail"].validate(user): # TODO: fix these validators
raise Error( #for user in users:
"bad_request", # if not app.validators["mail"].validate(user):
"Data validation for mail failed: " # raise Error(
+ str(app.validators["mail"].errors), # "bad_request",
traceback.format_exc(), # "Data validation for mail failed: "
) # + str(app.validators["mail"].errors),
# traceback.format_exc(),
# )
res: Dict res: Dict
if request.method in ["POST", "PUT"]: if request.method in ["POST", "PUT"]:
res = app.admin.nextcloud_mail_set(users, dec_data) res = app.admin.nextcloud_mail_set(users, config)
return ( return (
json.dumps(res), json.dumps(res),
200, 200,