diff --git a/backend/areas/apps/apps_service.py b/backend/areas/apps/apps_service.py index 98971d8ce13e2bd0e4ad07a387645470bb9b43bd..37025e936bcd7a70c80ac770d38ca560fb28572f 100644 --- a/backend/areas/apps/apps_service.py +++ b/backend/areas/apps/apps_service.py @@ -25,7 +25,7 @@ class AppsService: def get_accessible_apps(): apps = App.query.all() - kratos_admin_api_configuration = ory_kratos_client.Configuration(host=KRATOS_ADMIN_URL, discard_unknown_keys=True) + kratos_admin_api_configuration = ory_kratos_client.Configuration(host=KRATOS_ADMIN_URL) with ory_kratos_client.ApiClient(kratos_admin_api_configuration) as kratos_admin_client: kratos_identity_api = identity_api.IdentityApi(kratos_admin_client) diff --git a/backend/areas/users/user_service.py b/backend/areas/users/user_service.py index 79746a50ac7fbbd0f224974744f5b239aa04b1fd..5b62ebcee43615e0e9b1685b5c6b1e0081f1cbe7 100644 --- a/backend/areas/users/user_service.py +++ b/backend/areas/users/user_service.py @@ -1,9 +1,7 @@ import ory_kratos_client -from ory_kratos_client.model.json_patch \ +from ory_kratos_client.models.json_patch \ import JsonPatch -from ory_kratos_client.model.json_patch_document \ - import JsonPatchDocument -from ory_kratos_client.model.update_recovery_flow_body \ +from ory_kratos_client.models.update_recovery_flow_body \ import UpdateRecoveryFlowBody from ory_kratos_client.api import frontend_api, identity_api @@ -24,8 +22,7 @@ from helpers.provision import Provision from helpers.threads import request_provision -kratos_admin_api_configuration = \ - ory_kratos_client.Configuration(host=KRATOS_ADMIN_URL, discard_unknown_keys=True) +kratos_admin_api_configuration = ory_kratos_client.Configuration(host=KRATOS_ADMIN_URL) kratos_client = ory_kratos_client.ApiClient(kratos_admin_api_configuration) kratos_frontend_api = frontend_api.FrontendApi(kratos_client) kratos_identity_api = identity_api.IdentityApi(kratos_client) @@ -148,8 +145,7 @@ class UserService: # We used a PUT before, but that deletes any attributes that we don't # specify, which is not so convenient. So we PATCH just the attributes # we're changing instead. - patch_doc = JsonPatchDocument(value=patches) - kratos_identity_api.patch_identity(id, json_patch_document=patch_doc) + kratos_identity_api.patch_identity(id, json_patch=patches) if data["app_roles"]: app_roles = data["app_roles"] diff --git a/backend/cliapp/cliapp/cli.py b/backend/cliapp/cliapp/cli.py index c8dfdf8c788b19dd145097fa68f4c1aa584f605e..73ab8824569dac7177c58c388f5f8a233c16a14d 100644 --- a/backend/cliapp/cliapp/cli.py +++ b/backend/cliapp/cliapp/cli.py @@ -27,10 +27,7 @@ from database import db # APIs # Kratos has an admin and public end-point. We create an API for the admin one. -# The kratos implementation has bugs, which forces us to set the -# discard_unknown_keys to True. -kratos_admin_api_configuration = \ - ory_kratos_client.Configuration(host=KRATOS_ADMIN_URL, discard_unknown_keys=True) +kratos_admin_api_configuration = ory_kratos_client.Configuration(host=KRATOS_ADMIN_URL) kratos_admin_client = ory_kratos_client.ApiClient(kratos_admin_api_configuration) kratos_identity_api = identity_api.IdentityApi(kratos_admin_client) diff --git a/backend/helpers/kratos_user.py b/backend/helpers/kratos_user.py index a71ef7213432adc1905b1e898aacc0d45a1b9d1c..67fdbe7dfa62175528e6efe3d1959959734699c2 100644 --- a/backend/helpers/kratos_user.py +++ b/backend/helpers/kratos_user.py @@ -10,14 +10,12 @@ import urllib.request from typing import Dict from urllib.request import Request -from ory_kratos_client.model.create_identity_body import CreateIdentityBody -from ory_kratos_client.model.create_recovery_link_for_identity_body \ +from ory_kratos_client.models.create_identity_body import CreateIdentityBody +from ory_kratos_client.models.create_recovery_link_for_identity_body \ import CreateRecoveryLinkForIdentityBody -from ory_kratos_client.model.json_patch \ +from ory_kratos_client.models.json_patch \ import JsonPatch -from ory_kratos_client.model.json_patch_document \ - import JsonPatchDocument -from ory_kratos_client.model.update_identity_body import UpdateIdentityBody +from ory_kratos_client.models.update_identity_body import UpdateIdentityBody from ory_kratos_client.rest import ApiException as KratosApiException from .classes import RedirectFilter @@ -122,8 +120,7 @@ class KratosUser(): for k, v in kwargs.items(): current_app.logger.info(f" {k}={v}") patches.append(JsonPatch(op="replace", path=f"/metadata_admin/{k}", value=v)) - patch_doc = JsonPatchDocument(value=patches) - self.api.patch_identity(self.__uuid, json_patch_document=patch_doc) + self.api.patch_identity(self.__uuid, json_patch=patches) def delete(self): """Deletes the object from kratos diff --git a/backend/helpers/provision.py b/backend/helpers/provision.py index 237ad5d1662642a7227b6e0d434a8192c77e7127..c9eee5570685f2e9728a61fd81ee6cb34f74f253 100644 --- a/backend/helpers/provision.py +++ b/backend/helpers/provision.py @@ -140,7 +140,7 @@ class ScimUser: class Provision: def __init__(self): # Set up kratos API client. - kratos_admin_api_configuration = ory_kratos_client.Configuration(host=config.KRATOS_ADMIN_URL, discard_unknown_keys=True) + kratos_admin_api_configuration = ory_kratos_client.Configuration(host=config.KRATOS_ADMIN_URL) kratos_admin_client = ory_kratos_client.ApiClient(kratos_admin_api_configuration) self.kratos_identity_api = identity_api.IdentityApi(kratos_admin_client) diff --git a/backend/web/login/login.py b/backend/web/login/login.py index 344a046f74835fe24de7d4d3b94952a80361078c..e31958ab17a3847fc277b3ebd63175cea267047c 100644 --- a/backend/web/login/login.py +++ b/backend/web/login/login.py @@ -17,7 +17,7 @@ from ory_hydra_client.models import AcceptConsentRequest, AcceptLoginRequest, Co import ory_hydra_client.exceptions as hydra_exceptions import ory_kratos_client from ory_kratos_client.api import frontend_api, identity_api -from ory_kratos_client.model.authenticator_assurance_level import AuthenticatorAssuranceLevel +from ory_kratos_client.models.authenticator_assurance_level import AuthenticatorAssuranceLevel from flask import abort, current_app, jsonify, redirect, render_template, request from database import db @@ -43,16 +43,13 @@ hydra_client = ory_hydra_client.ApiClient(hydra_admin_api_configuration) hydra_admin_api = admin_api.AdminApi(hydra_client) # Kratos has an admin and public end-point. We create an API for them -# both. The kratos implementation has bugs, which forces us to set -# the discard_unknown_keys to True. -kratos_admin_api_configuration = \ - ory_kratos_client.Configuration(host=KRATOS_ADMIN_URL, discard_unknown_keys=True) +# both. +kratos_admin_api_configuration = ory_kratos_client.Configuration(host=KRATOS_ADMIN_URL) kratos_admin_client = ory_kratos_client.ApiClient(kratos_admin_api_configuration) admin_identity_api = identity_api.IdentityApi(kratos_admin_client) admin_frontend_api = frontend_api.FrontendApi(kratos_admin_client) -kratos_public_api_configuration = \ - ory_kratos_client.Configuration(host=KRATOS_PUBLIC_URL, discard_unknown_keys=True) +kratos_public_api_configuration = ory_kratos_client.Configuration(host=KRATOS_PUBLIC_URL) kratos_public_client = ory_kratos_client.ApiClient(kratos_public_api_configuration) kratos_public_frontend_api = frontend_api.FrontendApi(kratos_public_client) @@ -152,7 +149,7 @@ def login(): cookies = request.headers['cookie'] flow = kratos_public_frontend_api.get_login_flow(flow, cookie=cookies) # current_app.logger.info("flow found in login: {}".format(flow)) - refresh = flow['refresh'] + refresh = flow.refresh if refresh: message = { "id": "S_CONFIRM_CREDENTIALS", @@ -196,10 +193,10 @@ def login(): if identity and not refresh: # We are already logged in, and don't need to refresh. - if 'name' in identity['traits']: + if 'name' in identity.traits: # Add a space in front of the "name" so the template can put it # between "Welcome" and the comma - name = " " + identity['traits']['name'] + name = " " + identity.traits['name'] else: name = "" return render_template("loggedin.html",