From 682322c98063c596d2e46f1e7844551c5a7226db Mon Sep 17 00:00:00 2001 From: Piotr Dobrowolski Date: Fri, 29 Apr 2022 22:48:21 +0200 Subject: [PATCH] sso: implement populate_obj, fix membership edit form --- sso/forms.py | 21 +++++++++++++++++++++ sso/views.py | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/sso/forms.py b/sso/forms.py index 22a022d..7ee6a19 100644 --- a/sso/forms.py +++ b/sso/forms.py @@ -86,3 +86,24 @@ class ClientForm(FlaskForm): default=True, description="User will be refused authorization to this client if their membership in Kasownik is not active", ) + + def populate_obj(self, obj): + client_metadata_keys = [ + "client_name", + "client_uri", + "redirect_uris", + "grant_types", + "response_types", + "token_endpoint_auth_method", + "scope", + ] + + metadata = {} + + for name, field in self._fields.items(): + if name in client_metadata_keys: + metadata[name] = self.data[name] + else: + field.populate_obj(obj, name) + + obj.set_client_metadata(metadata) diff --git a/sso/views.py b/sso/views.py index 08f8a7f..fdbf8de 100644 --- a/sso/views.py +++ b/sso/views.py @@ -96,7 +96,7 @@ def client_create(): client.client_id = str(uuid.uuid4()) client.client_secret = generate_token() client.owner_id = current_user.get_user_id() - client.set_client_metadata(form.data) + form.populate_obj(client) db.session.add(client) db.session.commit() @@ -117,7 +117,7 @@ def client_edit(client_id): form = ClientForm(obj=client) if form.validate_on_submit(): - client.set_client_metadata(form.data) + form.populate_obj(client) db.session.commit() flash("Client has been changed.", "success") return redirect(url_for(".client_edit", client_id=client.id))