diff --git a/.github/workflows/ci-outpost.yml b/.github/workflows/ci-outpost.yml index 517407003..a3e80d396 100644 --- a/.github/workflows/ci-outpost.yml +++ b/.github/workflows/ci-outpost.yml @@ -124,7 +124,7 @@ jobs: - uses: actions/setup-go@v4 with: go-version-file: "go.mod" - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" diff --git a/.github/workflows/ci-web.yml b/.github/workflows/ci-web.yml index c3659792f..e47e9b2df 100644 --- a/.github/workflows/ci-web.yml +++ b/.github/workflows/ci-web.yml @@ -21,7 +21,7 @@ jobs: - tests/wdio steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" @@ -59,7 +59,7 @@ jobs: - tests/wdio steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" @@ -75,7 +75,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" @@ -107,7 +107,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" diff --git a/.github/workflows/ci-website.yml b/.github/workflows/ci-website.yml index 8aa0064c4..0b3376e01 100644 --- a/.github/workflows/ci-website.yml +++ b/.github/workflows/ci-website.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" @@ -50,7 +50,7 @@ jobs: - build-docs-only steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index d6ab7f6f4..297d266d5 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -113,7 +113,7 @@ jobs: - uses: actions/setup-go@v4 with: go-version-file: "go.mod" - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" diff --git a/.github/workflows/web-api-publish.yml b/.github/workflows/web-api-publish.yml index 37174f5c1..a6dfaeaa9 100644 --- a/.github/workflows/web-api-publish.yml +++ b/.github/workflows/web-api-publish.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v4 with: token: ${{ steps.generate_token.outputs.token }} - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" registry-url: "https://registry.npmjs.org" diff --git a/authentik/core/templates/if/end_session.html b/authentik/core/templates/if/end_session.html index 73cc3532d..e6bfccb1b 100644 --- a/authentik/core/templates/if/end_session.html +++ b/authentik/core/templates/if/end_session.html @@ -16,8 +16,8 @@ You've logged out of {{ application }}. {% block card %}

- {% blocktrans with application=application.name %} - You've logged out of {{ application }}. You can go back to the overview to launch another application, or log out of your authentik account. + {% blocktrans with application=application.name branding_title=tenant.branding_title %} + You've logged out of {{ application }}. You can go back to the overview to launch another application, or log out of your {{ branding_title }} account. {% endblocktrans %}

diff --git a/authentik/stages/authenticator_sms/stage.py b/authentik/stages/authenticator_sms/stage.py index c4e0e16b7..dfbf48c68 100644 --- a/authentik/stages/authenticator_sms/stage.py +++ b/authentik/stages/authenticator_sms/stage.py @@ -12,7 +12,6 @@ from authentik.flows.challenge import ( Challenge, ChallengeResponse, ChallengeTypes, - ErrorDetailSerializer, WithUserInfoChallenge, ) from authentik.flows.stage import ChallengeStageView @@ -24,6 +23,7 @@ from authentik.stages.authenticator_sms.models import ( from authentik.stages.prompt.stage import PLAN_CONTEXT_PROMPT SESSION_KEY_SMS_DEVICE = "authentik/stages/authenticator_sms/sms_device" +PLAN_CONTEXT_PHONE = "phone" class AuthenticatorSMSChallenge(WithUserInfoChallenge): @@ -48,6 +48,8 @@ class AuthenticatorSMSChallengeResponse(ChallengeResponse): def validate(self, attrs: dict) -> dict: """Check""" if "code" not in attrs: + if "phone_number" not in attrs: + raise ValidationError("phone_number required") self.device.phone_number = attrs["phone_number"] self.stage.validate_and_send(attrs["phone_number"]) return super().validate(attrs) @@ -67,6 +69,7 @@ class AuthenticatorSMSStageView(ChallengeStageView): stage: AuthenticatorSMSStage = self.executor.current_stage hashed_number = hash_phone_number(phone_number) query = Q(phone_number=hashed_number) | Q(phone_number=phone_number) + print(SMSDevice.objects.filter(query, stage=stage.pk)) if SMSDevice.objects.filter(query, stage=stage.pk).exists(): raise ValidationError(_("Invalid phone number")) # No code yet, but we have a phone number, so send a verification message @@ -75,9 +78,9 @@ class AuthenticatorSMSStageView(ChallengeStageView): def _has_phone_number(self) -> Optional[str]: context = self.executor.plan.context - if "phone" in context.get(PLAN_CONTEXT_PROMPT, {}): + if PLAN_CONTEXT_PHONE in context.get(PLAN_CONTEXT_PROMPT, {}): self.logger.debug("got phone number from plan context") - return context.get(PLAN_CONTEXT_PROMPT, {}).get("phone") + return context.get(PLAN_CONTEXT_PROMPT, {}).get(PLAN_CONTEXT_PHONE) if SESSION_KEY_SMS_DEVICE in self.request.session: self.logger.debug("got phone number from device in session") device: SMSDevice = self.request.session[SESSION_KEY_SMS_DEVICE] @@ -113,10 +116,17 @@ class AuthenticatorSMSStageView(ChallengeStageView): try: self.validate_and_send(phone_number) except ValidationError as exc: - response = AuthenticatorSMSChallengeResponse() - response._errors.setdefault("phone_number", []) - response._errors["phone_number"].append(ErrorDetailSerializer(exc.detail)) - return self.challenge_invalid(response) + # We had a phone number given already (at this point only possible from flow + # context), but an error occurred while sending a number (most likely) + # due to a duplicate device, so delete the number we got given, reset the state + # (ish) and retry + device.phone_number = "" + self.executor.plan.context.get(PLAN_CONTEXT_PROMPT, {}).pop( + PLAN_CONTEXT_PHONE, None + ) + self.request.session.pop(SESSION_KEY_SMS_DEVICE, None) + self.logger.warning("failed to send SMS message to pre-set number", exc=exc) + return self.get(request, *args, **kwargs) return super().get(request, *args, **kwargs) def challenge_valid(self, response: ChallengeResponse) -> HttpResponse: diff --git a/authentik/stages/authenticator_sms/tests.py b/authentik/stages/authenticator_sms/tests.py index 4b37df0e5..9601cf886 100644 --- a/authentik/stages/authenticator_sms/tests.py +++ b/authentik/stages/authenticator_sms/tests.py @@ -7,7 +7,9 @@ from requests_mock import Mocker from authentik.core.tests.utils import create_test_admin_user, create_test_flow from authentik.flows.models import FlowStageBinding +from authentik.flows.planner import FlowPlan from authentik.flows.tests import FlowTestCase +from authentik.flows.views.executor import SESSION_KEY_PLAN from authentik.lib.generators import generate_id from authentik.stages.authenticator_sms.models import ( AuthenticatorSMSStage, @@ -15,7 +17,8 @@ from authentik.stages.authenticator_sms.models import ( SMSProviders, hash_phone_number, ) -from authentik.stages.authenticator_sms.stage import SESSION_KEY_SMS_DEVICE +from authentik.stages.authenticator_sms.stage import PLAN_CONTEXT_PHONE, SESSION_KEY_SMS_DEVICE +from authentik.stages.prompt.stage import PLAN_CONTEXT_PROMPT class AuthenticatorSMSStageTests(FlowTestCase): @@ -172,6 +175,45 @@ class AuthenticatorSMSStageTests(FlowTestCase): phone_number_required=False, ) + def test_stage_context_data_duplicate(self): + """test stage context data (phone number exists already)""" + self.client.get( + reverse("authentik_flows:configure", kwargs={"stage_uuid": self.stage.stage_uuid}), + ) + plan: FlowPlan = self.client.session[SESSION_KEY_PLAN] + plan.context[PLAN_CONTEXT_PROMPT] = { + PLAN_CONTEXT_PHONE: "1234", + } + session = self.client.session + session[SESSION_KEY_PLAN] = plan + session.save() + SMSDevice.objects.create( + phone_number="1234", + user=self.user, + stage=self.stage, + ) + sms_send_mock = MagicMock() + with ( + patch( + "authentik.stages.authenticator_sms.models.AuthenticatorSMSStage.send", + sms_send_mock, + ), + ): + print(self.client.session[SESSION_KEY_PLAN]) + response = self.client.get( + reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}), + ) + print(response.content.decode()) + self.assertStageResponse( + response, + self.flow, + self.user, + component="ak-stage-authenticator-sms", + phone_number_required=True, + ) + plan: FlowPlan = self.client.session[SESSION_KEY_PLAN] + self.assertEqual(plan.context[PLAN_CONTEXT_PROMPT], {}) + def test_stage_submit_full(self): """test stage (submit)""" self.client.get( diff --git a/lifecycle/migrate.py b/lifecycle/migrate.py index 4476a4681..bf6f869d4 100755 --- a/lifecycle/migrate.py +++ b/lifecycle/migrate.py @@ -51,20 +51,20 @@ class BaseMigration: """Run the actual migration""" -def wait_for_lock(): +def wait_for_lock(cursor: Cursor): """lock an advisory lock to prevent multiple instances from migrating at once""" LOGGER.info("waiting to acquire database lock") - curr.execute("SELECT pg_advisory_lock(%s)", (ADV_LOCK_UID,)) + cursor.execute("SELECT pg_advisory_lock(%s)", (ADV_LOCK_UID,)) # pylint: disable=global-statement global LOCKED LOCKED = True -def release_lock(): +def release_lock(cursor: Cursor): """Release database lock""" if not LOCKED: return - curr.execute("SELECT pg_advisory_unlock(%s)", (ADV_LOCK_UID,)) + cursor.execute("SELECT pg_advisory_unlock(%s)", (ADV_LOCK_UID,)) if __name__ == "__main__": @@ -93,14 +93,14 @@ if __name__ == "__main__": continue migration = sub(curr, conn) if migration.needs_migration(): - wait_for_lock() + wait_for_lock(curr) LOGGER.info("Migration needs to be applied", migration=migration_path.name) migration.run() LOGGER.info("Migration finished applying", migration=migration_path.name) - release_lock() + release_lock(curr) LOGGER.info("applying django migrations") environ.setdefault("DJANGO_SETTINGS_MODULE", "authentik.root.settings") - wait_for_lock() + wait_for_lock(curr) try: from django.core.management import execute_from_command_line except ImportError as exc: @@ -111,4 +111,4 @@ if __name__ == "__main__": ) from exc execute_from_command_line(["", "migrate"]) finally: - release_lock() + release_lock(curr) diff --git a/poetry.lock b/poetry.lock index f08d50e9b..201b243ae 100644 --- a/poetry.lock +++ b/poetry.lock @@ -265,19 +265,15 @@ files = [ [[package]] name = "astroid" -version = "2.15.8" +version = "3.0.1" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.8.0" files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, + {file = "astroid-3.0.1-py3-none-any.whl", hash = "sha256:7d5895c9825e18079c5aeac0572bc2e4c83205c95d416e0b4fee8bc361d2d9ca"}, + {file = "astroid-3.0.1.tar.gz", hash = "sha256:86b0bb7d7da0be1a7c4aedb7974e391b32d4ed89e33de6ed6902b4b15c97577e"}, ] -[package.dependencies] -lazy-object-proxy = ">=1.4.0" -wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""} - [[package]] name = "async-timeout" version = "4.0.3" @@ -437,29 +433,29 @@ files = [ [[package]] name = "black" -version = "23.10.0" +version = "23.10.1" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-23.10.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:f8dc7d50d94063cdfd13c82368afd8588bac4ce360e4224ac399e769d6704e98"}, - {file = "black-23.10.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:f20ff03f3fdd2fd4460b4f631663813e57dc277e37fb216463f3b907aa5a9bdd"}, - {file = "black-23.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3d9129ce05b0829730323bdcb00f928a448a124af5acf90aa94d9aba6969604"}, - {file = "black-23.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:960c21555be135c4b37b7018d63d6248bdae8514e5c55b71e994ad37407f45b8"}, - {file = "black-23.10.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:30b78ac9b54cf87bcb9910ee3d499d2bc893afd52495066c49d9ee6b21eee06e"}, - {file = "black-23.10.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:0e232f24a337fed7a82c1185ae46c56c4a6167fb0fe37411b43e876892c76699"}, - {file = "black-23.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31946ec6f9c54ed7ba431c38bc81d758970dd734b96b8e8c2b17a367d7908171"}, - {file = "black-23.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:c870bee76ad5f7a5ea7bd01dc646028d05568d33b0b09b7ecfc8ec0da3f3f39c"}, - {file = "black-23.10.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:6901631b937acbee93c75537e74f69463adaf34379a04eef32425b88aca88a23"}, - {file = "black-23.10.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:481167c60cd3e6b1cb8ef2aac0f76165843a374346aeeaa9d86765fe0dd0318b"}, - {file = "black-23.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74892b4b836e5162aa0452393112a574dac85e13902c57dfbaaf388e4eda37c"}, - {file = "black-23.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:47c4510f70ec2e8f9135ba490811c071419c115e46f143e4dce2ac45afdcf4c9"}, - {file = "black-23.10.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:76baba9281e5e5b230c9b7f83a96daf67a95e919c2dfc240d9e6295eab7b9204"}, - {file = "black-23.10.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:a3c2ddb35f71976a4cfeca558848c2f2f89abc86b06e8dd89b5a65c1e6c0f22a"}, - {file = "black-23.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db451a3363b1e765c172c3fd86213a4ce63fb8524c938ebd82919bf2a6e28c6a"}, - {file = "black-23.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:7fb5fc36bb65160df21498d5a3dd330af8b6401be3f25af60c6ebfe23753f747"}, - {file = "black-23.10.0-py3-none-any.whl", hash = "sha256:e223b731a0e025f8ef427dd79d8cd69c167da807f5710add30cdf131f13dd62e"}, - {file = "black-23.10.0.tar.gz", hash = "sha256:31b9f87b277a68d0e99d2905edae08807c007973eaa609da5f0c62def6b7c0bd"}, + {file = "black-23.10.1-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:ec3f8e6234c4e46ff9e16d9ae96f4ef69fa328bb4ad08198c8cee45bb1f08c69"}, + {file = "black-23.10.1-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:1b917a2aa020ca600483a7b340c165970b26e9029067f019e3755b56e8dd5916"}, + {file = "black-23.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c74de4c77b849e6359c6f01987e94873c707098322b91490d24296f66d067dc"}, + {file = "black-23.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:7b4d10b0f016616a0d93d24a448100adf1699712fb7a4efd0e2c32bbb219b173"}, + {file = "black-23.10.1-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b15b75fc53a2fbcac8a87d3e20f69874d161beef13954747e053bca7a1ce53a0"}, + {file = "black-23.10.1-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:e293e4c2f4a992b980032bbd62df07c1bcff82d6964d6c9496f2cd726e246ace"}, + {file = "black-23.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d56124b7a61d092cb52cce34182a5280e160e6aff3137172a68c2c2c4b76bcb"}, + {file = "black-23.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:3f157a8945a7b2d424da3335f7ace89c14a3b0625e6593d21139c2d8214d55ce"}, + {file = "black-23.10.1-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:cfcce6f0a384d0da692119f2d72d79ed07c7159879d0bb1bb32d2e443382bf3a"}, + {file = "black-23.10.1-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:33d40f5b06be80c1bbce17b173cda17994fbad096ce60eb22054da021bf933d1"}, + {file = "black-23.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:840015166dbdfbc47992871325799fd2dc0dcf9395e401ada6d88fe11498abad"}, + {file = "black-23.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:037e9b4664cafda5f025a1728c50a9e9aedb99a759c89f760bd83730e76ba884"}, + {file = "black-23.10.1-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:7cb5936e686e782fddb1c73f8aa6f459e1ad38a6a7b0e54b403f1f05a1507ee9"}, + {file = "black-23.10.1-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:7670242e90dc129c539e9ca17665e39a146a761e681805c54fbd86015c7c84f7"}, + {file = "black-23.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ed45ac9a613fb52dad3b61c8dea2ec9510bf3108d4db88422bacc7d1ba1243d"}, + {file = "black-23.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:6d23d7822140e3fef190734216cefb262521789367fbdc0b3f22af6744058982"}, + {file = "black-23.10.1-py3-none-any.whl", hash = "sha256:d431e6739f727bb2e0495df64a6c7a5310758e87505f5f8cde9ff6c0f2d7e4fe"}, + {file = "black-23.10.1.tar.gz", hash = "sha256:1f8ce316753428ff68749c65a5f7844631aa18c8679dfd3ca9dc1a289979c258"}, ] [package.dependencies] @@ -1928,51 +1924,6 @@ websocket-client = ">=0.32.0,<0.40.0 || >0.40.0,<0.41.dev0 || >=0.43.dev0" [package.extras] adal = ["adal (>=1.0.2)"] -[[package]] -name = "lazy-object-proxy" -version = "1.9.0" -description = "A fast and thorough lazy object proxy." -optional = false -python-versions = ">=3.7" -files = [ - {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, -] - [[package]] name = "ldap3" version = "2.9.1" @@ -2877,19 +2828,22 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pylint" -version = "2.17.7" +version = "3.0.2" description = "python code static checker" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.8.0" files = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, + {file = "pylint-3.0.2-py3-none-any.whl", hash = "sha256:60ed5f3a9ff8b61839ff0348b3624ceeb9e6c2a92c514d81c9cc273da3b6bcda"}, + {file = "pylint-3.0.2.tar.gz", hash = "sha256:0d4c286ef6d2f66c8bfb527a7f8a629009e42c99707dec821a03e1b51a4c1496"}, ] [package.dependencies] -astroid = ">=2.15.8,<=2.17.0-dev0" +astroid = ">=3.0.1,<=3.1.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} +dill = [ + {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, +] isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" @@ -2901,13 +2855,13 @@ testutils = ["gitpython (>3)"] [[package]] name = "pylint-django" -version = "2.5.4" +version = "2.5.5" description = "A Pylint plugin to help Pylint understand the Django web framework" optional = false python-versions = ">=3.7,<4.0" files = [ - {file = "pylint_django-2.5.4-py3-none-any.whl", hash = "sha256:08bedfd7ccc4c47afa09cbfee6f4b5074437178d8e51fd891e2232c0d3a5b140"}, - {file = "pylint_django-2.5.4.tar.gz", hash = "sha256:d167b1437342543727925a98c0dee9c8de8e8e1f8cb8caf868018febd2c4e2b7"}, + {file = "pylint_django-2.5.5-py3-none-any.whl", hash = "sha256:5abd5c2228e0e5e2a4cb6d0b4fc1d1cef1e773d0be911412f4dd4fc1a1a440b7"}, + {file = "pylint_django-2.5.5.tar.gz", hash = "sha256:2f339e4bf55776958283395c5139c37700c91bd5ef1d8251ef6ac88b5abbba9b"}, ] [package.dependencies] @@ -3004,13 +2958,13 @@ files = [ [[package]] name = "pytest" -version = "7.4.2" +version = "7.4.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, - {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, + {file = "pytest-7.4.3-py3-none-any.whl", hash = "sha256:0d009c083ea859a71b76adf7c1d502e4bc170b80a8ef002da5806527b9591fac"}, + {file = "pytest-7.4.3.tar.gz", hash = "sha256:d989d136982de4e3b29dabcc838ad581c64e8ed52c11fbe86ddebd9da0818cd5"}, ] [package.dependencies] @@ -3420,28 +3374,28 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.1.1" +version = "0.1.2" description = "An extremely fast Python linter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.1.1-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:b7cdc893aef23ccc14c54bd79a8109a82a2c527e11d030b62201d86f6c2b81c5"}, - {file = "ruff-0.1.1-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:620d4b34302538dbd8bbbe8fdb8e8f98d72d29bd47e972e2b59ce6c1e8862257"}, - {file = "ruff-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a909d3930afdbc2e9fd893b0034479e90e7981791879aab50ce3d9f55205bd6"}, - {file = "ruff-0.1.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3305d1cb4eb8ff6d3e63a48d1659d20aab43b49fe987b3ca4900528342367145"}, - {file = "ruff-0.1.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c34ae501d0ec71acf19ee5d4d889e379863dcc4b796bf8ce2934a9357dc31db7"}, - {file = "ruff-0.1.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:6aa7e63c3852cf8fe62698aef31e563e97143a4b801b57f920012d0e07049a8d"}, - {file = "ruff-0.1.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d68367d1379a6b47e61bc9de144a47bcdb1aad7903bbf256e4c3d31f11a87ae"}, - {file = "ruff-0.1.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc11955f6ce3398d2afe81ad7e49d0ebf0a581d8bcb27b8c300281737735e3a3"}, - {file = "ruff-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbbd8eead88ea83a250499074e2a8e9d80975f0b324b1e2e679e4594da318c25"}, - {file = "ruff-0.1.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f4780e2bb52f3863a565ec3f699319d3493b83ff95ebbb4993e59c62aaf6e75e"}, - {file = "ruff-0.1.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8f5b24daddf35b6c207619301170cae5d2699955829cda77b6ce1e5fc69340df"}, - {file = "ruff-0.1.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d3f9ac658ba29e07b95c80fa742b059a55aefffa8b1e078bc3c08768bdd4b11a"}, - {file = "ruff-0.1.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3521bf910104bf781e6753282282acc145cbe3eff79a1ce6b920404cd756075a"}, - {file = "ruff-0.1.1-py3-none-win32.whl", hash = "sha256:ba3208543ab91d3e4032db2652dcb6c22a25787b85b8dc3aeff084afdc612e5c"}, - {file = "ruff-0.1.1-py3-none-win_amd64.whl", hash = "sha256:3ff3006c97d9dc396b87fb46bb65818e614ad0181f059322df82bbfe6944e264"}, - {file = "ruff-0.1.1-py3-none-win_arm64.whl", hash = "sha256:e140bd717c49164c8feb4f65c644046fe929c46f42493672853e3213d7bdbce2"}, - {file = "ruff-0.1.1.tar.gz", hash = "sha256:c90461ae4abec261609e5ea436de4a4b5f2822921cf04c16d2cc9327182dbbcc"}, + {file = "ruff-0.1.2-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:0d3ee66b825b713611f89aa35d16de984f76f26c50982a25d52cd0910dff3923"}, + {file = "ruff-0.1.2-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:f85f850a320ff532b8f93e8d1da6a36ef03698c446357c8c43b46ef90bb321eb"}, + {file = "ruff-0.1.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:809c6d4e45683696d19ca79e4c6bd3b2e9204fe9546923f2eb3b126ec314b0dc"}, + {file = "ruff-0.1.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46005e4abb268e93cad065244e17e2ea16b6fcb55a5c473f34fbc1fd01ae34cb"}, + {file = "ruff-0.1.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10cdb302f519664d5e2cf954562ac86c9d20ca05855e5b5c2f9d542228f45da4"}, + {file = "ruff-0.1.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f89ebcbe57a1eab7d7b4ceb57ddf0af9ed13eae24e443a7c1dc078000bd8cc6b"}, + {file = "ruff-0.1.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7344eaca057d4c32373c9c3a7afb7274f56040c225b6193dd495fcf69453b436"}, + {file = "ruff-0.1.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dffa25f6e03c4950b6ac6f216bc0f98a4be9719cb0c5260c8e88d1bac36f1683"}, + {file = "ruff-0.1.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42ddaea52cb7ba7c785e8593a7532866c193bc774fe570f0e4b1ccedd95b83c5"}, + {file = "ruff-0.1.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a8533efda625bbec0bf27da2886bd641dae0c209104f6c39abc4be5b7b22de2a"}, + {file = "ruff-0.1.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b0b1b82221ba7c50e03b7a86b983157b5d3f4d8d4f16728132bdf02c6d651f77"}, + {file = "ruff-0.1.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6c1362eb9288f8cc95535294cb03bd4665c8cef86ec32745476a4e5c6817034c"}, + {file = "ruff-0.1.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ffa7ef5ded0563329a35bd5a1cfdae40f05a75c0cc2dd30f00b1320b1fb461fc"}, + {file = "ruff-0.1.2-py3-none-win32.whl", hash = "sha256:6e8073f85e47072256e2e1909f1ae515cf61ff5a4d24730a63b8b4ac24b6704a"}, + {file = "ruff-0.1.2-py3-none-win_amd64.whl", hash = "sha256:b836ddff662a45385948ee0878b0a04c3a260949905ad861a37b931d6ee1c210"}, + {file = "ruff-0.1.2-py3-none-win_arm64.whl", hash = "sha256:b0c42d00db5639dbd5f7f9923c63648682dd197bf5de1151b595160c96172691"}, + {file = "ruff-0.1.2.tar.gz", hash = "sha256:afd4785ae060ce6edcd52436d0c197628a918d6d09e3107a892a1bad6a4c6608"}, ] [[package]] @@ -4177,90 +4131,6 @@ files = [ {file = "websockets-11.0.3.tar.gz", hash = "sha256:88fc51d9a26b10fc331be344f1781224a375b78488fc343620184e95a4b27016"}, ] -[[package]] -name = "wrapt" -version = "1.15.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, - {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, - {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, - {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, - {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, - {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, - {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, - {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, - {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, - {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, - {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, - {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, - {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, - {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, - {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, - {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, - {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, - {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, - {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, -] - [[package]] name = "wsproto" version = "1.2.0" diff --git a/tests/wdio/package-lock.json b/tests/wdio/package-lock.json index fb16dda55..002cb42fe 100644 --- a/tests/wdio/package-lock.json +++ b/tests/wdio/package-lock.json @@ -6,12 +6,12 @@ "": { "name": "@goauthentik/web-tests", "devDependencies": { - "@trivago/prettier-plugin-sort-imports": "^4.2.0", - "@typescript-eslint/eslint-plugin": "^6.8.0", - "@typescript-eslint/parser": "^6.8.0", - "@wdio/cli": "^8.20.2", - "@wdio/local-runner": "^8.20.0", - "@wdio/mocha-framework": "^8.20.0", + "@trivago/prettier-plugin-sort-imports": "^4.2.1", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "@typescript-eslint/parser": "^6.9.0", + "@wdio/cli": "^8.20.5", + "@wdio/local-runner": "^8.20.5", + "@wdio/mocha-framework": "^8.20.3", "@wdio/spec-reporter": "^8.20.0", "eslint": "^8.52.0", "eslint-config-google": "^0.14.0", @@ -220,19 +220,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -240,6 +240,45 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@babel/types": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", @@ -561,6 +600,20 @@ "node": ">=8" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", @@ -570,6 +623,15 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", @@ -725,14 +787,14 @@ "dev": true }, "node_modules/@trivago/prettier-plugin-sort-imports": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.2.0.tgz", - "integrity": "sha512-YBepjbt+ZNBVmN3ev1amQH3lWCmHyt5qTbLCp/syXJRu/Kw2koXh44qayB1gMRxcL/gV8egmjN5xWSrYyfUtyw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.2.1.tgz", + "integrity": "sha512-iuy2MPVURGdxILTchHr15VAioItuYBejKfcTmQFlxIuqA7jeaT6ngr5aUIG6S6U096d6a6lJCgaOwlRrPLlOPg==", "dev": true, "dependencies": { "@babel/generator": "7.17.7", "@babel/parser": "^7.20.5", - "@babel/traverse": "7.17.3", + "@babel/traverse": "7.23.2", "@babel/types": "7.17.0", "javascript-natural-sort": "0.7.1", "lodash": "^4.17.21" @@ -802,9 +864,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, "node_modules/@types/mocha": { @@ -826,9 +888,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", "dev": true }, "node_modules/@types/stack-utils": { @@ -878,16 +940,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", - "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/type-utils": "6.8.0", - "@typescript-eslint/utils": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -913,15 +975,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", - "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", + "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4" }, "engines": { @@ -941,13 +1003,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", - "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -958,13 +1020,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", - "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -985,9 +1047,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", - "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -998,13 +1060,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", - "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1025,17 +1087,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", - "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", "semver": "^7.5.4" }, "engines": { @@ -1050,12 +1112,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", - "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/types": "6.9.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -1073,18 +1135,18 @@ "dev": true }, "node_modules/@wdio/cli": { - "version": "8.20.2", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.20.2.tgz", - "integrity": "sha512-fXpwcpsSo//5eC7bODDaumuNLl9wK+G7G9mAu0OB3QUZ39CudsrNxGxchVhnilqQAFw450OOEL/RzaDPspCZRA==", + "version": "8.20.5", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.20.5.tgz", + "integrity": "sha512-Z5wAf8gJMBZGK15pRVFbX8TOIEk7cOXKb9Gjs9pP3DOgx3+xpGlLmgrbLg/wB+rMXA4eu7bt5ZUItPWAWmq6IQ==", "dev": true, "dependencies": { "@types/node": "^20.1.1", - "@wdio/config": "8.20.0", - "@wdio/globals": "8.20.0", + "@wdio/config": "8.20.3", + "@wdio/globals": "8.20.5", "@wdio/logger": "8.16.17", - "@wdio/protocols": "8.18.0", + "@wdio/protocols": "8.20.4", "@wdio/types": "8.20.0", - "@wdio/utils": "8.20.0", + "@wdio/utils": "8.20.3", "async-exit-hook": "^2.0.1", "chalk": "^5.2.0", "chokidar": "^3.5.3", @@ -1100,7 +1162,7 @@ "lodash.union": "^4.6.0", "read-pkg-up": "10.1.0", "recursive-readdir": "^2.2.3", - "webdriverio": "8.20.0", + "webdriverio": "8.20.4", "yargs": "^17.7.2" }, "bin": { @@ -1123,14 +1185,14 @@ } }, "node_modules/@wdio/config": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.20.0.tgz", - "integrity": "sha512-ODsafHlxEawyYa6IyIdXJMV2plPFyrDbGrXLNKNFBQVfB/FmoHUiiOTh+4Gu+sUXzpn2YNH5O199qHxHw61uUw==", + "version": "8.20.3", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.20.3.tgz", + "integrity": "sha512-UaPjDjdXztrWgpoodSjZc1/9oXX1WpjhZSW55ZA2PKzCO7QuS/Fory5lMMpJD4v6/9fNUiRp7A4/rd+w7am1vA==", "dev": true, "dependencies": { "@wdio/logger": "8.16.17", "@wdio/types": "8.20.0", - "@wdio/utils": "8.20.0", + "@wdio/utils": "8.20.3", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", @@ -1142,28 +1204,28 @@ } }, "node_modules/@wdio/globals": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.20.0.tgz", - "integrity": "sha512-IYqFM5Ofg1vWogIJOR+Tb5Q2jdyT2c3WJNDmVkHbRe1vP4pEWFf2BbAqzD3anMDssZD0y8I4ZDsFL+kMr5DENA==", + "version": "8.20.5", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.20.5.tgz", + "integrity": "sha512-79BFF/b+qQ1Td3KfoN/xEf9Bzbb3rKovjyl5BD205pIyWJCeZJDsK693vV8g6z6Q+/pvp/GPfepqSmvrKQokEw==", "dev": true, "engines": { "node": "^16.13 || >=18" }, "optionalDependencies": { "expect-webdriverio": "^4.2.5", - "webdriverio": "8.20.0" + "webdriverio": "8.20.4" } }, "node_modules/@wdio/local-runner": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.20.0.tgz", - "integrity": "sha512-c/wSmCjzdLQ2BAq39BMhxTY2m+QDAB2quGSweou7s/V5OsAnu7Wb4z6+s2Y2ayeWypskVQXdhgmbUWAuktsSTQ==", + "version": "8.20.5", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.20.5.tgz", + "integrity": "sha512-lm5eyirDiSuxLkwe1fkMXjPd54Ortp5i8wfJPlAImyG9fxU5CY8D9V1bkjpDqOkd4RLmUk1z4mp9gJWghrAd0Q==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@wdio/logger": "8.16.17", "@wdio/repl": "8.10.1", - "@wdio/runner": "8.20.0", + "@wdio/runner": "8.20.5", "@wdio/types": "8.20.0", "async-exit-hook": "^2.0.1", "split2": "^4.1.0", @@ -1201,16 +1263,16 @@ } }, "node_modules/@wdio/mocha-framework": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-8.20.0.tgz", - "integrity": "sha512-w5HUNO+XlpTP92r7A9Ule7CVofqdyKumyKph6pMeRGKFEINkHgJOxFqf98BgJQt2CfeMuMIy39LJMpBCViXLEA==", + "version": "8.20.3", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-8.20.3.tgz", + "integrity": "sha512-AF27tW2ToQ4+fzuBwI71ABjPhmPoESj+UtJYx4ahZjHQUyCCEhkiYIeh8T6UEFFpbIQeQV1Fz12UEK/18EGbzw==", "dev": true, "dependencies": { "@types/mocha": "^10.0.0", "@types/node": "^20.1.0", "@wdio/logger": "8.16.17", "@wdio/types": "8.20.0", - "@wdio/utils": "8.20.0", + "@wdio/utils": "8.20.3", "mocha": "^10.0.0" }, "engines": { @@ -1218,9 +1280,9 @@ } }, "node_modules/@wdio/protocols": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.18.0.tgz", - "integrity": "sha512-TABA0mksHvu5tE8qNYYDR0fDyo90NCANeghbGAtsI8TUsJzgH0dwpos3WSSiB97J9HRSZuWIMa7YuABEkBIjWQ==", + "version": "8.20.4", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.20.4.tgz", + "integrity": "sha512-9PwA2xgjsoB/9Fm8UWRhJlw61O69ckRICuBn0bzoHmMF7uMzYgDvDTekzYKn8JfjzvLm/MnWXL8raCZfQQ0P5g==", "dev": true }, "node_modules/@wdio/repl": { @@ -1252,22 +1314,22 @@ } }, "node_modules/@wdio/runner": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.20.0.tgz", - "integrity": "sha512-8zvQanl3GM6PzY2kaj7cq+BFiA35cy9qXc25u3yKsY1/xjSuN5Mio0wijjwH4g9jQ6gobLdPflURfkJHB7pN9w==", + "version": "8.20.5", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.20.5.tgz", + "integrity": "sha512-JmH9995lI4FB95vQ2/l4oAJ3zoo49PIhZutNcwu98o2DDFWPxSGsOPRKI/B5u5OvJ0OkK0AzcN6XdJAfAPZSfA==", "dev": true, "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.20.0", - "@wdio/globals": "8.20.0", + "@wdio/config": "8.20.3", + "@wdio/globals": "8.20.5", "@wdio/logger": "8.16.17", "@wdio/types": "8.20.0", - "@wdio/utils": "8.20.0", + "@wdio/utils": "8.20.3", "deepmerge-ts": "^5.0.0", "expect-webdriverio": "^4.2.5", "gaze": "^1.1.2", - "webdriver": "8.20.0", - "webdriverio": "8.20.0" + "webdriver": "8.20.4", + "webdriverio": "8.20.4" }, "engines": { "node": "^16.13 || >=18" @@ -1314,9 +1376,9 @@ } }, "node_modules/@wdio/utils": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.20.0.tgz", - "integrity": "sha512-nZ5QF5lPyZNJG9YaSrRuVfkVeg80yRrUQT42D0mUDDjmUIh2pAXDMu4HxgxocuQSOyLacg4Vpg3Sju9NFipxIA==", + "version": "8.20.3", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.20.3.tgz", + "integrity": "sha512-McGS9TFNfjS3cGJkF8hXyajGE5LKFJnPg/fbdXTIBzYohiAzQ1rUMyllPdxxHslnpQPkflBHI6XSYBxU7yB9Lw==", "dev": true, "dependencies": { "@puppeteer/browsers": "^1.6.0", @@ -8528,18 +8590,18 @@ } }, "node_modules/webdriver": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.20.0.tgz", - "integrity": "sha512-U/sej7yljVf/enEWR9L2AtOntrd3lqtkEtHeuSWU2FPp5cWvoMEe7vQiG0WJA74VE2e7uwd8S1LfCgQD1wY3Bg==", + "version": "8.20.4", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.20.4.tgz", + "integrity": "sha512-X/6l+zGXn1trqA1LRwYETIJgkJQTVZ/xE1SrTlSxk2BE7Tq40voxfbDKUyauaCyRyABhA0ZgK5/1UOqeCKW15w==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "8.20.0", + "@wdio/config": "8.20.3", "@wdio/logger": "8.16.17", - "@wdio/protocols": "8.18.0", + "@wdio/protocols": "8.20.4", "@wdio/types": "8.20.0", - "@wdio/utils": "8.20.0", + "@wdio/utils": "8.20.3", "deepmerge-ts": "^5.1.0", "got": "^ 12.6.1", "ky": "^0.33.0", @@ -8587,18 +8649,18 @@ } }, "node_modules/webdriverio": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.20.0.tgz", - "integrity": "sha512-nVd3n4v1CYzjEezK6OgmGIcVx+T/7PNYwLK3fTNH2hGRNX05TyGGcR9HAcVZCbIu8WWFKRE0SrLvCjEutPO8gg==", + "version": "8.20.4", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.20.4.tgz", + "integrity": "sha512-+iyYK0NTviXv3Lyws07CaX9pLET9l0bh8aPICfCyf7f0NZLUDvUoEKvjviMCfLq4lbDu7CFIEyDZUJeuqlRwlw==", "dev": true, "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.20.0", + "@wdio/config": "8.20.3", "@wdio/logger": "8.16.17", - "@wdio/protocols": "8.18.0", + "@wdio/protocols": "8.20.4", "@wdio/repl": "8.10.1", "@wdio/types": "8.20.0", - "@wdio/utils": "8.20.0", + "@wdio/utils": "8.20.3", "archiver": "^6.0.0", "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", @@ -8615,7 +8677,7 @@ "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^11.0.1", - "webdriver": "8.20.0" + "webdriver": "8.20.4" }, "engines": { "node": "^16.13 || >=18" diff --git a/tests/wdio/package.json b/tests/wdio/package.json index 0d000a0cc..b74ed30d0 100644 --- a/tests/wdio/package.json +++ b/tests/wdio/package.json @@ -3,12 +3,12 @@ "private": true, "type": "module", "devDependencies": { - "@trivago/prettier-plugin-sort-imports": "^4.2.0", - "@typescript-eslint/eslint-plugin": "^6.8.0", - "@typescript-eslint/parser": "^6.8.0", - "@wdio/cli": "^8.20.2", - "@wdio/local-runner": "^8.20.0", - "@wdio/mocha-framework": "^8.20.0", + "@trivago/prettier-plugin-sort-imports": "^4.2.1", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "@typescript-eslint/parser": "^6.9.0", + "@wdio/cli": "^8.20.5", + "@wdio/local-runner": "^8.20.5", + "@wdio/mocha-framework": "^8.20.3", "@wdio/spec-reporter": "^8.20.0", "eslint": "^8.52.0", "eslint-config-google": "^0.14.0", diff --git a/web/package-lock.json b/web/package-lock.json index e09537268..02f324432 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -24,8 +24,8 @@ "@open-wc/lit-helpers": "^0.6.0", "@patternfly/elements": "^2.4.0", "@patternfly/patternfly": "^4.224.2", - "@sentry/browser": "^7.74.1", - "@sentry/tracing": "^7.74.1", + "@sentry/browser": "^7.75.0", + "@sentry/tracing": "^7.75.0", "@webcomponents/webcomponentsjs": "^2.8.0", "base64-js": "^1.5.1", "chart.js": "^4.4.0", @@ -66,26 +66,26 @@ "@storybook/blocks": "^7.1.1", "@storybook/web-components": "^7.5.1", "@storybook/web-components-vite": "^7.5.1", - "@trivago/prettier-plugin-sort-imports": "^4.2.0", + "@trivago/prettier-plugin-sort-imports": "^4.2.1", "@types/chart.js": "^2.9.39", "@types/codemirror": "5.60.12", "@types/grecaptcha": "^3.0.6", - "@typescript-eslint/eslint-plugin": "^6.8.0", - "@typescript-eslint/parser": "^6.8.0", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "@typescript-eslint/parser": "^6.9.0", "babel-plugin-macros": "^3.1.0", "babel-plugin-tsconfig-paths": "^1.0.3", "cross-env": "^7.0.3", "eslint": "^8.52.0", "eslint-config-google": "^0.14.0", "eslint-plugin-custom-elements": "0.0.8", - "eslint-plugin-lit": "^1.9.1", + "eslint-plugin-lit": "^1.10.1", "eslint-plugin-sonarjs": "^0.21.0", "eslint-plugin-storybook": "^0.6.15", "lit-analyzer": "^1.2.1", "npm-run-all": "^4.1.5", "prettier": "^3.0.3", "pseudolocale": "^2.0.0", - "pyright": "^1.1.332", + "pyright": "^1.1.333", "react": "^18.2.0", "react-dom": "^18.2.0", "rollup": "^4.1.4", @@ -4714,87 +4714,84 @@ ] }, "node_modules/@sentry-internal/tracing": { - "version": "7.74.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.74.1.tgz", - "integrity": "sha512-nNaiZreQxCitG2PzYPaC7XtyA9OMsETGYMKAtiK4p62/uTmeYbsBva9BoNx1XeiHRwbrVQYRMKQ9nV5e2jS4/A==", + "version": "7.75.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.75.0.tgz", + "integrity": "sha512-/j4opF/jB9j8qnSiQK75/lFLtkfqXS5/MoOKc2KWK/pOaf15W+6uJzGQ8jRBHLYd9dDg6AyqsF48Wqy561/mNg==", "dependencies": { - "@sentry/core": "7.74.1", - "@sentry/types": "7.74.1", - "@sentry/utils": "7.74.1", - "tslib": "^2.4.1 || ^1.9.3" + "@sentry/core": "7.75.0", + "@sentry/types": "7.75.0", + "@sentry/utils": "7.75.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.74.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.74.1.tgz", - "integrity": "sha512-OYWNne/KO60lOvkIpIlJUyiJt/9j8DGI57thSDFEYSmmbNqMitczUTBOaEStouvHKyfchqLZm1CZfWKt+z0VOA==", + "version": "7.75.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.75.0.tgz", + "integrity": "sha512-DXH/69vzp2j8xjydX+lrUYasrk7a1mpbXFGA9GtnII7shMCy55+QkVxpa6cLojYUaG2K/8yFDMcrP9N395LnWg==", "dependencies": { - "@sentry-internal/tracing": "7.74.1", - "@sentry/core": "7.74.1", - "@sentry/replay": "7.74.1", - "@sentry/types": "7.74.1", - "@sentry/utils": "7.74.1", - "tslib": "^2.4.1 || ^1.9.3" + "@sentry-internal/tracing": "7.75.0", + "@sentry/core": "7.75.0", + "@sentry/replay": "7.75.0", + "@sentry/types": "7.75.0", + "@sentry/utils": "7.75.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.74.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.74.1.tgz", - "integrity": "sha512-LvEhOSfdIvwkr+PdlrT/aA/iOLhkXrSkvjqAQyogE4ddCWeYfS0NoirxNt1EaxMBAWKhYZRqzkA7WA4LDLbzlA==", + "version": "7.75.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.75.0.tgz", + "integrity": "sha512-vXg3cdJgwzP24oTS9zFCgLW4MgTkMZqXx+ESRq7gTD9qJTpcmAmYT+Ckmvebg8K6DBThV6+0v61r50na2+XdrA==", "dependencies": { - "@sentry/types": "7.74.1", - "@sentry/utils": "7.74.1", - "tslib": "^2.4.1 || ^1.9.3" + "@sentry/types": "7.75.0", + "@sentry/utils": "7.75.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay": { - "version": "7.74.1", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.74.1.tgz", - "integrity": "sha512-qmbOl+jYdyhoHFbPp9WemKx8UojID5hVmuVLxNIP0ANqAwmE9OQEK9YFg2cf7L/TpKb1tqz0qLgi5MYIdcdpgQ==", + "version": "7.75.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.75.0.tgz", + "integrity": "sha512-TAAlj7JCMF6hFFL71RmPzVX89ltyPYFWR+t4SuWaBmU6HmTliI2eJvK+M36oE+N7s3CkyRVTaXXRe0YMwRMuZQ==", "dependencies": { - "@sentry/core": "7.74.1", - "@sentry/types": "7.74.1", - "@sentry/utils": "7.74.1" + "@sentry-internal/tracing": "7.75.0", + "@sentry/core": "7.75.0", + "@sentry/types": "7.75.0", + "@sentry/utils": "7.75.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/tracing": { - "version": "7.74.1", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.74.1.tgz", - "integrity": "sha512-YqhLMY28uukOR8FtoCMvzdzBYkTtwj/JHUensDEpTZG5OoQTjrcgttpL+WMaCBUy1MpOIo7FyLB5aoRq2U7AIA==", + "version": "7.75.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.75.0.tgz", + "integrity": "sha512-EHvkQZdZApESVCwbZoUepjF79LQm2IYC/axj7k2bY5ImTAabS323I5YPwifPAWbtqvjqxakgbKUNjaTMGeSGNg==", "dependencies": { - "@sentry-internal/tracing": "7.74.1" + "@sentry-internal/tracing": "7.75.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.74.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.74.1.tgz", - "integrity": "sha512-2jIuPc+YKvXqZETwr2E8VYnsH1zsSUR/wkIvg1uTVeVNyoowJv+YsOtCdeGyL2AwiotUBSPKu7O1Lz0kq5rMOQ==", + "version": "7.75.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.75.0.tgz", + "integrity": "sha512-xG8OLADxG7HpGhMxrF4v4tKq/v/gqmLsTZ858R51pz0xCWM8SK6ZSWOKudkAGBIpRjI6RUHMnkBtRAN2aKDOkQ==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.74.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.74.1.tgz", - "integrity": "sha512-qUsqufuHYcy5gFhLZslLxA5kcEOkkODITXW3c7D+x+8iP/AJqa8v8CeUCVNS7RetHCuIeWAbbTClC4c411EwQg==", + "version": "7.75.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.75.0.tgz", + "integrity": "sha512-UHWKeevhUNRp+mAWDbMVFOMgseoq8t/xFgdUywO/2PC14qZKRBH+0k1BKoNkp5sOzDT06ETj2w6wYoYhy6i+dA==", "dependencies": { - "@sentry/types": "7.74.1", - "tslib": "^2.4.1 || ^1.9.3" + "@sentry/types": "7.75.0" }, "engines": { "node": ">=8" @@ -9973,14 +9970,14 @@ } }, "node_modules/@trivago/prettier-plugin-sort-imports": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.2.0.tgz", - "integrity": "sha512-YBepjbt+ZNBVmN3ev1amQH3lWCmHyt5qTbLCp/syXJRu/Kw2koXh44qayB1gMRxcL/gV8egmjN5xWSrYyfUtyw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.2.1.tgz", + "integrity": "sha512-iuy2MPVURGdxILTchHr15VAioItuYBejKfcTmQFlxIuqA7jeaT6ngr5aUIG6S6U096d6a6lJCgaOwlRrPLlOPg==", "dev": true, "dependencies": { "@babel/generator": "7.17.7", "@babel/parser": "^7.20.5", - "@babel/traverse": "7.17.3", + "@babel/traverse": "7.23.2", "@babel/types": "7.17.0", "javascript-natural-sort": "0.7.1", "lodash": "^4.17.21" @@ -10009,27 +10006,6 @@ "node": ">=6.9.0" } }, - "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { "version": "7.17.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", @@ -10489,16 +10465,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", - "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/type-utils": "6.8.0", - "@typescript-eslint/utils": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -10557,15 +10533,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", - "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", + "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4" }, "engines": { @@ -10585,13 +10561,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", - "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -10602,13 +10578,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", - "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -10629,9 +10605,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", - "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -10642,13 +10618,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", - "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -10702,17 +10678,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", - "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", "semver": "^7.5.4" }, "engines": { @@ -10760,12 +10736,12 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", - "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/types": "6.9.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -13668,9 +13644,9 @@ } }, "node_modules/eslint-plugin-lit": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.9.1.tgz", - "integrity": "sha512-XFFVufVxYJwqRB9sLkDXB7SvV1xi9hrC4HRFEdX1h9+iZ3dm4x9uS7EuT9uaXs6zR3DEgcojia1F7pmvWbc4Gg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-lit/-/eslint-plugin-lit-1.10.1.tgz", + "integrity": "sha512-3eH++xFpe6efd+TN6B9kW1coULdPyK+3fMNws378nbYQ/HiWIz0+jVcsaGVs9BbLt6kVkDxZmUGF4Ivx3BatkA==", "dev": true, "dependencies": { "parse5": "^6.0.1", @@ -19461,9 +19437,9 @@ } }, "node_modules/pyright": { - "version": "1.1.332", - "resolved": "https://registry.npmjs.org/pyright/-/pyright-1.1.332.tgz", - "integrity": "sha512-x3xuEhp6P+6UJfKF41o7f4Z9abh/LWXWF8CReSEsg/m/5IeMBtqCqPrxZnKswRjQlBlCD771QYkMatEVjeH2ZA==", + "version": "1.1.333", + "resolved": "https://registry.npmjs.org/pyright/-/pyright-1.1.333.tgz", + "integrity": "sha512-oFHXvzvg2cU1enatWqI76+sjSi+McsUBIJ9aR5W6p4kU9Rrgu+MYfXX5aHEPaZE64Vz3sNbG7IelXuAVEkyk/A==", "dev": true, "bin": { "pyright": "index.js", diff --git a/web/package.json b/web/package.json index 71ae059e5..1cda15837 100644 --- a/web/package.json +++ b/web/package.json @@ -45,8 +45,8 @@ "@open-wc/lit-helpers": "^0.6.0", "@patternfly/elements": "^2.4.0", "@patternfly/patternfly": "^4.224.2", - "@sentry/browser": "^7.74.1", - "@sentry/tracing": "^7.74.1", + "@sentry/browser": "^7.75.0", + "@sentry/tracing": "^7.75.0", "@webcomponents/webcomponentsjs": "^2.8.0", "base64-js": "^1.5.1", "chart.js": "^4.4.0", @@ -87,26 +87,26 @@ "@storybook/blocks": "^7.1.1", "@storybook/web-components": "^7.5.1", "@storybook/web-components-vite": "^7.5.1", - "@trivago/prettier-plugin-sort-imports": "^4.2.0", + "@trivago/prettier-plugin-sort-imports": "^4.2.1", "@types/chart.js": "^2.9.39", "@types/codemirror": "5.60.12", "@types/grecaptcha": "^3.0.6", - "@typescript-eslint/eslint-plugin": "^6.8.0", - "@typescript-eslint/parser": "^6.8.0", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "@typescript-eslint/parser": "^6.9.0", "babel-plugin-macros": "^3.1.0", "babel-plugin-tsconfig-paths": "^1.0.3", "cross-env": "^7.0.3", "eslint": "^8.52.0", "eslint-config-google": "^0.14.0", "eslint-plugin-custom-elements": "0.0.8", - "eslint-plugin-lit": "^1.9.1", + "eslint-plugin-lit": "^1.10.1", "eslint-plugin-sonarjs": "^0.21.0", "eslint-plugin-storybook": "^0.6.15", "lit-analyzer": "^1.2.1", "npm-run-all": "^4.1.5", "prettier": "^3.0.3", "pseudolocale": "^2.0.0", - "pyright": "^1.1.332", + "pyright": "^1.1.333", "react": "^18.2.0", "react-dom": "^18.2.0", "rollup": "^4.1.4", diff --git a/web/src/admin/AdminInterface.ts b/web/src/admin/AdminInterface.ts index 44d927ae2..e59793706 100644 --- a/web/src/admin/AdminInterface.ts +++ b/web/src/admin/AdminInterface.ts @@ -121,7 +121,7 @@ export class AdminInterface extends Interface { // TODO: somehow add `access_admin_interface` to the API schema this.user.user.systemPermissions.includes("access_admin_interface"); if (!canAccessAdmin && this.user.user.pk > 0) { - window.location.assign("/if/user"); + window.location.assign("/if/user/"); } } @@ -193,7 +193,7 @@ export class AdminInterface extends Interface { ["/if/user/", msg("User interface"), { "?isAbsoluteLink": true, "?highlight": true }], [null, msg("Dashboards"), { "?expanded": true }, [ ["/administration/overview", msg("Overview")], - ["/administration/dashboard/users", msg("Users")], + ["/administration/dashboard/users", msg("User Statistics")], ["/administration/system-tasks", msg("System Tasks")]]], [null, msg("Applications"), null, [ ["/core/providers", msg("Providers"), [`^/core/providers/(?${ID_REGEX})$`]], diff --git a/web/src/admin/admin-overview/AdminOverviewPage.ts b/web/src/admin/admin-overview/AdminOverviewPage.ts index a892cbdf3..a7e210a7c 100644 --- a/web/src/admin/admin-overview/AdminOverviewPage.ts +++ b/web/src/admin/admin-overview/AdminOverviewPage.ts @@ -22,6 +22,7 @@ import PFContent from "@patternfly/patternfly/components/Content/content.css"; import PFList from "@patternfly/patternfly/components/List/list.css"; import PFPage from "@patternfly/patternfly/components/Page/page.css"; import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; import { SessionUser } from "@goauthentik/api"; @@ -35,6 +36,7 @@ export function versionFamily(): string { export class AdminOverviewPage extends AKElement { static get styles(): CSSResult[] { return [ + PFBase, PFGrid, PFPage, PFContent, @@ -53,6 +55,13 @@ export class AdminOverviewPage extends AKElement { .card-container { max-height: 10em; } + .ak-external-link { + display: inline-block; + margin-left: 0.175rem; + vertical-align: super; + line-height: normal; + font-size: var(--pf-global--icon--FontSize--sm); + } `, ]; } @@ -104,8 +113,10 @@ export class AdminOverviewPage extends AKElement { class="pf-u-mb-xl" target="_blank" href="https://goauthentik.io/integrations/" - >${msg("Explore integrations")} + >${msg("Explore integrations")}
  • ${msg("Check release notes")} + >${msg("Check the release notes")}
  • diff --git a/web/src/admin/admin-overview/DashboardUserPage.ts b/web/src/admin/admin-overview/DashboardUserPage.ts index 721873767..94e788bf4 100644 --- a/web/src/admin/admin-overview/DashboardUserPage.ts +++ b/web/src/admin/admin-overview/DashboardUserPage.ts @@ -41,7 +41,7 @@ export class DashboardUserPage extends AKElement { } render(): TemplateResult { - return html` + return html`
    diff --git a/web/src/admin/applications/ApplicationListPage.ts b/web/src/admin/applications/ApplicationListPage.ts index c06236750..928e48b9b 100644 --- a/web/src/admin/applications/ApplicationListPage.ts +++ b/web/src/admin/applications/ApplicationListPage.ts @@ -89,10 +89,6 @@ export class ApplicationListPage extends TablePage { ]; } - renderSectionBefore(): TemplateResult { - return html``; - } - renderSidebarAfter(): TemplateResult { // Rendering the wizard with .open here, as if we set the attribute in // renderObjectCreate() it'll open two wizards, since that function gets called twice diff --git a/web/src/admin/applications/components/ak-backchannel-input.ts b/web/src/admin/applications/components/ak-backchannel-input.ts index 2130ba10b..5150b16ca 100644 --- a/web/src/admin/applications/components/ak-backchannel-input.ts +++ b/web/src/admin/applications/components/ak-backchannel-input.ts @@ -65,7 +65,7 @@ export class AkBackchannelProvidersInput extends AKElement {
    diff --git a/web/src/admin/applications/wizard/auth-method-choice/ak-application-wizard-authentication-method-choice.choices.ts b/web/src/admin/applications/wizard/auth-method-choice/ak-application-wizard-authentication-method-choice.choices.ts index 16b3ce01a..727b41d07 100644 --- a/web/src/admin/applications/wizard/auth-method-choice/ak-application-wizard-authentication-method-choice.choices.ts +++ b/web/src/admin/applications/wizard/auth-method-choice/ak-application-wizard-authentication-method-choice.choices.ts @@ -38,9 +38,10 @@ export type LocalTypeCreate = TypeCreate & { const _providerModelsTable: ProviderType[] = [ [ "oauth2provider", - msg("OAuth2/OpenID"), + msg("OAuth2/OIDC (Open Authorization/OpenID Connect)"), msg("Modern applications, APIs and Single-page applications."), - () => html``, + () => + html``, ProviderModelEnum.Oauth2Oauth2provider, (provider: OneOfProvider) => ({ providerModel: ProviderModelEnum.Oauth2Oauth2provider, @@ -49,21 +50,22 @@ const _providerModelsTable: ProviderType[] = [ ], [ "ldapprovider", - msg("LDAP"), + msg("LDAP (Lightweight Directory Access Protocol)"), msg("Provide an LDAP interface for applications and users to authenticate against."), - () => html``, + () => + html``, ProviderModelEnum.LdapLdapprovider, - (provider: OneOfProvider) => ({ + (provider: OneOfProvider) => ({ providerModel: ProviderModelEnum.LdapLdapprovider, ...(provider as LDAPProviderRequest), }), - ], [ "proxyprovider-proxy", msg("Transparent Reverse Proxy"), msg("For transparent reverse proxies with required authentication"), - () => html``, + () => + html``, ProviderModelEnum.ProxyProxyprovider, (provider: OneOfProvider) => ({ providerModel: ProviderModelEnum.ProxyProxyprovider, @@ -73,23 +75,24 @@ const _providerModelsTable: ProviderType[] = [ ], [ "proxyprovider-forwardsingle", - msg("Forward Auth Single Application"), - msg("For nginx's auth_request or traefix's forwardAuth"), - () => html``, - ProviderModelEnum.ProxyProxyprovider , + msg("Forward Auth (Single Application)"), + msg("For nginx's auth_request or traefik's forwardAuth"), + () => + html``, + ProviderModelEnum.ProxyProxyprovider, (provider: OneOfProvider) => ({ providerModel: ProviderModelEnum.ProxyProxyprovider, ...(provider as ProxyProviderRequest), mode: ProxyMode.ForwardSingle, }), - ], [ "proxyprovider-forwarddomain", - msg("Forward Auth Domain Level"), - msg("For nginx's auth_request or traefix's forwardAuth per root domain"), - () => html``, - ProviderModelEnum.ProxyProxyprovider , + msg("Forward Auth (Domain Level)"), + msg("For nginx's auth_request or traefik's forwardAuth per root domain"), + () => + html``, + ProviderModelEnum.ProxyProxyprovider, (provider: OneOfProvider) => ({ providerModel: ProviderModelEnum.ProxyProxyprovider, ...(provider as ProxyProviderRequest), @@ -98,39 +101,39 @@ const _providerModelsTable: ProviderType[] = [ ], [ "samlprovider", - msg("SAML Configuration"), + msg("SAML (Security Assertion Markup Language)"), msg("Configure SAML provider manually"), - () => html``, + () => + html``, ProviderModelEnum.SamlSamlprovider, (provider: OneOfProvider) => ({ providerModel: ProviderModelEnum.SamlSamlprovider, ...(provider as SAMLProviderRequest), }), - ], [ "radiusprovider", - msg("RADIUS Configuration"), + msg("RADIUS (Remote Authentication Dial-In User Service)"), msg("Configure RADIUS provider manually"), - () => html``, + () => + html``, ProviderModelEnum.RadiusRadiusprovider, - (provider: OneOfProvider) => ({ + (provider: OneOfProvider) => ({ providerModel: ProviderModelEnum.RadiusRadiusprovider, ...(provider as RadiusProviderRequest), }), - ], [ "scimprovider", - msg("SCIM configuration"), + msg("SCIM (System for Cross-domain Identity Management)"), msg("Configure SCIM provider manually"), - () => html``, + () => + html``, ProviderModelEnum.ScimScimprovider, - (provider: OneOfProvider) => ({ + (provider: OneOfProvider) => ({ providerModel: ProviderModelEnum.ScimScimprovider, ...(provider as SCIMProviderRequest), }), - ], ]; diff --git a/web/src/admin/applications/wizard/methods/oauth/ak-application-wizard-authentication-by-oauth.ts b/web/src/admin/applications/wizard/methods/oauth/ak-application-wizard-authentication-by-oauth.ts index cf6ceb9de..44c71b0a3 100644 --- a/web/src/admin/applications/wizard/methods/oauth/ak-application-wizard-authentication-by-oauth.ts +++ b/web/src/admin/applications/wizard/methods/oauth/ak-application-wizard-authentication-by-oauth.ts @@ -245,13 +245,14 @@ export class ApplicationWizardAuthenticationByOauth extends BaseProviderPanel { )} > - + + )} + > { ]; } - renderSectionBefore(): TemplateResult { - return html``; - } - renderToolbarSelected(): TemplateResult { const disabled = this.selectedElements.length < 1; return html` { item.pk !== this.me?.user.pk; return [ html` -
    ${item.username}
    - ${item.name} -
    `, +
    ${item.username}
    + ${item.name === "" ? msg("") : item.name}  ${userTypeToLabel(item.type)}`, html` ${item.isActive ? msg("Yes") : msg("No")} `, diff --git a/web/src/admin/users/UserViewPage.ts b/web/src/admin/users/UserViewPage.ts index 64a917c9d..d91ea4386 100644 --- a/web/src/admin/users/UserViewPage.ts +++ b/web/src/admin/users/UserViewPage.ts @@ -13,6 +13,7 @@ import { me } from "@goauthentik/app/common/users"; import "@goauthentik/app/elements/rbac/ObjectPermissionsPage"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { EVENT_REFRESH } from "@goauthentik/common/constants"; +import { userTypeToLabel } from "@goauthentik/common/labels"; import "@goauthentik/components/events/ObjectChangelog"; import "@goauthentik/components/events/UserEvents"; import { AKElement, rootInterface } from "@goauthentik/elements/Base"; @@ -188,6 +189,16 @@ export class UserViewPage extends AKElement {
    +
    +
    + ${msg("Type")} +
    +
    +
    + ${userTypeToLabel(user.type)} +
    +
    +
    ${msg("Superuser")} diff --git a/web/src/common/labels.ts b/web/src/common/labels.ts index f2d9d1376..d63c4a38a 100644 --- a/web/src/common/labels.ts +++ b/web/src/common/labels.ts @@ -1,6 +1,6 @@ import { msg } from "@lit/localize"; -import { Device, EventActions, IntentEnum, SeverityEnum } from "@goauthentik/api"; +import { Device, EventActions, IntentEnum, SeverityEnum, UserTypeEnum } from "@goauthentik/api"; /* Various tables in the API for which we need to supply labels */ @@ -65,3 +65,13 @@ export const deviceTypeToLabel = new Map([ export const deviceTypeName = (device: Device) => deviceTypeToLabel.get(device.type) ?? device?.verboseName ?? ""; + +const _userTypeToLabel = new Map([ + [UserTypeEnum.Internal, msg("Internal")], + [UserTypeEnum.External, msg("External")], + [UserTypeEnum.ServiceAccount, msg("Service account")], + [UserTypeEnum.InternalServiceAccount, msg("Service account (internal)")], +]); + +export const userTypeToLabel = (type?: UserTypeEnum): string => + _userTypeToLabel.get(type) ?? type ?? ""; diff --git a/web/src/common/ws.ts b/web/src/common/ws.ts index 87d649c43..29823d603 100644 --- a/web/src/common/ws.ts +++ b/web/src/common/ws.ts @@ -30,7 +30,7 @@ export class WebsocketClient { this.retryDelay = 200; }); this.messageSocket.addEventListener("close", (e) => { - console.debug(`authentik/ws: closed ws connection: ${e}`); + console.debug("authentik/ws: closed ws connection", e); if (this.retryDelay > 6000) { window.dispatchEvent( new CustomEvent(EVENT_MESSAGE, { diff --git a/web/xliff/de.xlf b/web/xliff/de.xlf index 9c81bd837..60f3b1aaf 100644 --- a/web/xliff/de.xlf +++ b/web/xliff/de.xlf @@ -518,9 +518,6 @@ Manage users - - Check release notes - Outpost status Outpost Status @@ -545,10 +542,6 @@ Objects created Objekte erstellt - - User statistics - Benutzerstatistiken - Users created per day in the last month Benutzer, die im letzten Monat pro Tag erstellt wurden @@ -3324,14 +3317,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info Benutzerinformation - - To create a recovery link, the current tenant needs to have a recovery flow configured. - Um einen Wiederherstellungslink erstellen zu können, muss für die aktuelle Umgebung ein Wiederherstellungsablauf konfigiert sein. - - - Reset Password - Passwort zurücksetzen - Actions over the last week (per 8 hours) Aktionen der letzten Woche (pro 8 Stunden) @@ -5807,39 +5792,24 @@ Bindings to groups/users are checked against the user of the event. UI Settings - - OAuth2/OpenID - Transparent Reverse Proxy For transparent reverse proxies with required authentication - - Forward Auth Single Application - - For nginx's auth_request or traefix's forwardAuth - - - Forward Auth Domain Level + For nginx's auth_request or traefik's forwardAuth - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain Configure SAML provider manually - - RADIUS Configuration - Configure RADIUS provider manually - - SCIM configuration - Configure SCIM provider manually @@ -6004,6 +5974,63 @@ Bindings to groups/users are checked against the user of the event. Run the demo wizard + + + OAuth2/OIDC (Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + + + Forward Auth (Single Application) + + + Forward Auth (Domain Level) + + + SAML (Security Assertion Markup Language) + + + RADIUS (Remote Authentication Dial-In User Service) + + + SCIM (System for Cross-domain Identity Management) + + + The token has been copied to your clipboard + + + The token was displayed because authentik does not have permission to write to the clipboard + + + A copy of this recovery link has been placed in your clipboard + + + The current tenant must have a recovery flow configured to use a recovery link + + + Create recovery link + + + Create Recovery Link + + + External + + + Service account + + + Service account (internal) + + + Check the release notes + + + User Statistics + + + <No name set> diff --git a/web/xliff/en.xlf b/web/xliff/en.xlf index 8f2f42b75..c62336b17 100644 --- a/web/xliff/en.xlf +++ b/web/xliff/en.xlf @@ -531,10 +531,6 @@ Manage users Manage users - - Check release notes - Check release notes - Outpost status Outpost status @@ -560,10 +556,6 @@ Objects created Objects created - - User statistics - User statistics - Users created per day in the last month Users created per day in the last month @@ -3487,14 +3479,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info User Info - - To create a recovery link, the current tenant needs to have a recovery flow configured. - To create a recovery link, the current tenant needs to have a recovery flow configured. - - - Reset Password - Reset Password - Actions over the last week (per 8 hours) Actions over the last week (per 8 hours) @@ -6089,39 +6073,24 @@ Bindings to groups/users are checked against the user of the event. UI Settings - - OAuth2/OpenID - Transparent Reverse Proxy For transparent reverse proxies with required authentication - - Forward Auth Single Application - - For nginx's auth_request or traefix's forwardAuth - - - Forward Auth Domain Level + For nginx's auth_request or traefik's forwardAuth - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain Configure SAML provider manually - - RADIUS Configuration - Configure RADIUS provider manually - - SCIM configuration - Configure SCIM provider manually @@ -6286,6 +6255,63 @@ Bindings to groups/users are checked against the user of the event. Run the demo wizard + + + OAuth2/OIDC (Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + + + Forward Auth (Single Application) + + + Forward Auth (Domain Level) + + + SAML (Security Assertion Markup Language) + + + RADIUS (Remote Authentication Dial-In User Service) + + + SCIM (System for Cross-domain Identity Management) + + + The token has been copied to your clipboard + + + The token was displayed because authentik does not have permission to write to the clipboard + + + A copy of this recovery link has been placed in your clipboard + + + The current tenant must have a recovery flow configured to use a recovery link + + + Create recovery link + + + Create Recovery Link + + + External + + + Service account + + + Service account (internal) + + + Check the release notes + + + User Statistics + + + <No name set> diff --git a/web/xliff/es.xlf b/web/xliff/es.xlf index 08477da67..d83f50117 100644 --- a/web/xliff/es.xlf +++ b/web/xliff/es.xlf @@ -511,9 +511,6 @@ Manage users - - Check release notes - Outpost status Estado de avanzada @@ -538,10 +535,6 @@ Objects created Objetos creados - - User statistics - Estadísticas de los usuarios - Users created per day in the last month Usuarios creados por día en el último mes @@ -3271,14 +3264,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info Información del usuario - - To create a recovery link, the current tenant needs to have a recovery flow configured. - Para crear un enlace de recuperación, el inquilino actual debe tener configurado un flujo de recuperación. - - - Reset Password - Restablecer contraseña - Actions over the last week (per 8 hours) @@ -5722,39 +5707,24 @@ Bindings to groups/users are checked against the user of the event. UI Settings - - OAuth2/OpenID - Transparent Reverse Proxy For transparent reverse proxies with required authentication - - Forward Auth Single Application - - For nginx's auth_request or traefix's forwardAuth - - - Forward Auth Domain Level + For nginx's auth_request or traefik's forwardAuth - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain Configure SAML provider manually - - RADIUS Configuration - Configure RADIUS provider manually - - SCIM configuration - Configure SCIM provider manually @@ -5919,6 +5889,63 @@ Bindings to groups/users are checked against the user of the event. Run the demo wizard + + + OAuth2/OIDC (Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + + + Forward Auth (Single Application) + + + Forward Auth (Domain Level) + + + SAML (Security Assertion Markup Language) + + + RADIUS (Remote Authentication Dial-In User Service) + + + SCIM (System for Cross-domain Identity Management) + + + The token has been copied to your clipboard + + + The token was displayed because authentik does not have permission to write to the clipboard + + + A copy of this recovery link has been placed in your clipboard + + + The current tenant must have a recovery flow configured to use a recovery link + + + Create recovery link + + + Create Recovery Link + + + External + + + Service account + + + Service account (internal) + + + Check the release notes + + + User Statistics + + + <No name set> diff --git a/web/xliff/fr.xlf b/web/xliff/fr.xlf index ac905389c..d56dbd71a 100644 --- a/web/xliff/fr.xlf +++ b/web/xliff/fr.xlf @@ -658,11 +658,6 @@ Il y a jour(s) Manage users Gérer les utilisateurs - - - Check release notes - Voir les notes de version - Outpost status @@ -694,11 +689,6 @@ Il y a jour(s) Objects created Objets créés - - - User statistics - Statistiques utilisateur - Users created per day in the last month @@ -4349,16 +4339,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info Info utilisateur - - - To create a recovery link, the current tenant needs to have a recovery flow configured. - Pour créer un lien de récupération, le locataire actuel doit avoir un flux de récupération configuré. - - - - Reset Password - Réinitialiser le mot de passe - Actions over the last week (per 8 hours) @@ -7627,39 +7607,24 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti UI Settings - - OAuth2/OpenID - Transparent Reverse Proxy For transparent reverse proxies with required authentication - - Forward Auth Single Application - - For nginx's auth_request or traefix's forwardAuth - - - Forward Auth Domain Level + For nginx's auth_request or traefik's forwardAuth - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain Configure SAML provider manually - - RADIUS Configuration - Configure RADIUS provider manually - - SCIM configuration - Configure SCIM provider manually @@ -7861,6 +7826,63 @@ Les liaisons avec les groupes/utilisateurs sont vérifiées par rapport à l'uti Run the demo wizard + + + OAuth2/OIDC (Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + + + Forward Auth (Single Application) + + + Forward Auth (Domain Level) + + + SAML (Security Assertion Markup Language) + + + RADIUS (Remote Authentication Dial-In User Service) + + + SCIM (System for Cross-domain Identity Management) + + + The token has been copied to your clipboard + + + The token was displayed because authentik does not have permission to write to the clipboard + + + A copy of this recovery link has been placed in your clipboard + + + The current tenant must have a recovery flow configured to use a recovery link + + + Create recovery link + + + Create Recovery Link + + + External + + + Service account + + + Service account (internal) + + + Check the release notes + + + User Statistics + + + <No name set> diff --git a/web/xliff/pl.xlf b/web/xliff/pl.xlf index 5938a0e53..1cf15b38d 100644 --- a/web/xliff/pl.xlf +++ b/web/xliff/pl.xlf @@ -520,9 +520,6 @@ Manage users - - Check release notes - Outpost status Status placówki @@ -547,10 +544,6 @@ Objects created Utworzone obiekty - - User statistics - Statystyki użytkowników - Users created per day in the last month Użytkownicy stworzeni dziennie w ciągu ostatniego miesiąca @@ -3390,14 +3383,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info Informacje użytkownika - - To create a recovery link, the current tenant needs to have a recovery flow configured. - Aby utworzyć link odzyskiwania, bieżący najmeca musi mieć skonfigurowany przepływ odzyskiwania. - - - Reset Password - Zresetuj hasło - Actions over the last week (per 8 hours) @@ -5930,39 +5915,24 @@ Bindings to groups/users are checked against the user of the event. UI Settings - - OAuth2/OpenID - Transparent Reverse Proxy For transparent reverse proxies with required authentication - - Forward Auth Single Application - - For nginx's auth_request or traefix's forwardAuth - - - Forward Auth Domain Level + For nginx's auth_request or traefik's forwardAuth - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain Configure SAML provider manually - - RADIUS Configuration - Configure RADIUS provider manually - - SCIM configuration - Configure SCIM provider manually @@ -6127,6 +6097,63 @@ Bindings to groups/users are checked against the user of the event. Run the demo wizard + + + OAuth2/OIDC (Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + + + Forward Auth (Single Application) + + + Forward Auth (Domain Level) + + + SAML (Security Assertion Markup Language) + + + RADIUS (Remote Authentication Dial-In User Service) + + + SCIM (System for Cross-domain Identity Management) + + + The token has been copied to your clipboard + + + The token was displayed because authentik does not have permission to write to the clipboard + + + A copy of this recovery link has been placed in your clipboard + + + The current tenant must have a recovery flow configured to use a recovery link + + + Create recovery link + + + Create Recovery Link + + + External + + + Service account + + + Service account (internal) + + + Check the release notes + + + User Statistics + + + <No name set> diff --git a/web/xliff/pseudo-LOCALE.xlf b/web/xliff/pseudo-LOCALE.xlf index 66ae3312c..fa150bd11 100644 --- a/web/xliff/pseudo-LOCALE.xlf +++ b/web/xliff/pseudo-LOCALE.xlf @@ -646,11 +646,6 @@ Manage users Màńàĝē ũśēŕś - - - Check release notes - Ćĥēćķ ŕēĺēàśē ńōţēś - Outpost status @@ -681,11 +676,6 @@ Objects created ŌƀĴēćţś ćŕēàţēď - - - User statistics - Ũśēŕ śţàţĩśţĩćś - Users created per day in the last month @@ -4317,16 +4307,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info Ũśēŕ Ĩńƒō - - - To create a recovery link, the current tenant needs to have a recovery flow configured. - Ţō ćŕēàţē à ŕēćōvēŕŷ ĺĩńķ, ţĥē ćũŕŕēńţ ţēńàńţ ńēēďś ţō ĥàvē à ŕēćōvēŕŷ ƒĺōŵ ćōńƒĩĝũŕēď. - - - - Reset Password - Ŕēśēţ Ƥàśśŵōŕď - Actions over the last week (per 8 hours) @@ -7569,10 +7549,6 @@ Bindings to groups/users are checked against the user of the event. UI Settings ŨĨ Śēţţĩńĝś - - OAuth2/OpenID - ŌÀũţĥ2/ŌƥēńĨĎ - Transparent Reverse Proxy Ţŕàńśƥàŕēńţ Ŕēvēŕśē Ƥŕōxŷ @@ -7581,38 +7557,22 @@ Bindings to groups/users are checked against the user of the event. For transparent reverse proxies with required authentication Ƒōŕ ţŕàńśƥàŕēńţ ŕēvēŕśē ƥŕōxĩēś ŵĩţĥ ŕēǫũĩŕēď àũţĥēńţĩćàţĩōń - - Forward Auth Single Application - Ƒōŕŵàŕď Àũţĥ Śĩńĝĺē Àƥƥĺĩćàţĩōń - - For nginx's auth_request or traefix's forwardAuth + For nginx's auth_request or traefik's forwardAuth Ƒōŕ ńĝĩńx'ś àũţĥ_ŕēǫũēśţ ōŕ ţŕàēƒĩx'ś ƒōŕŵàŕďÀũţĥ - - Forward Auth Domain Level - Ƒōŕŵàŕď Àũţĥ Ďōmàĩń Ĺēvēĺ - - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain Ƒōŕ ńĝĩńx'ś àũţĥ_ŕēǫũēśţ ōŕ ţŕàēƒĩx'ś ƒōŕŵàŕďÀũţĥ ƥēŕ ŕōōţ ďōmàĩń Configure SAML provider manually Ćōńƒĩĝũŕē ŚÀMĹ ƥŕōvĩďēŕ màńũàĺĺŷ - - RADIUS Configuration - ŔÀĎĨŨŚ Ćōńƒĩĝũŕàţĩōń - Configure RADIUS provider manually Ćōńƒĩĝũŕē ŔÀĎĨŨŚ ƥŕōvĩďēŕ màńũàĺĺŷ - - SCIM configuration - ŚĆĨM ćōńƒĩĝũŕàţĩōń - Configure SCIM provider manually Ćōńƒĩĝũŕē ŚĆĨM ƥŕōvĩďēŕ màńũàĺĺŷ @@ -7827,4 +7787,61 @@ Bindings to groups/users are checked against the user of the event. Run the demo wizard + + OAuth2/OIDC (Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + + + Forward Auth (Single Application) + + + Forward Auth (Domain Level) + + + SAML (Security Assertion Markup Language) + + + RADIUS (Remote Authentication Dial-In User Service) + + + SCIM (System for Cross-domain Identity Management) + + + The token has been copied to your clipboard + + + The token was displayed because authentik does not have permission to write to the clipboard + + + A copy of this recovery link has been placed in your clipboard + + + The current tenant must have a recovery flow configured to use a recovery link + + + Create recovery link + + + Create Recovery Link + + + External + + + Service account + + + Service account (internal) + + + Check the release notes + + + User Statistics + + + <No name set> + diff --git a/web/xliff/tr.xlf b/web/xliff/tr.xlf index a92c5e669..775f403d2 100644 --- a/web/xliff/tr.xlf +++ b/web/xliff/tr.xlf @@ -511,9 +511,6 @@ Manage users - - Check release notes - Outpost status Üs durumu @@ -538,10 +535,6 @@ Objects created Oluşturulan nesneler - - User statistics - Kullanıcı istatistikleri - Users created per day in the last month Son ay içinde günlük oluşturulan kullanıcılar @@ -3270,14 +3263,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info Kullanıcı Bilgileri - - To create a recovery link, the current tenant needs to have a recovery flow configured. - Kurtarma bağlantısı oluşturmak için geçerli sakinin yapılandırılmış bir kurtarma akışı olması gerekir. - - - Reset Password - Parolayı Sıfırla - Actions over the last week (per 8 hours) @@ -5715,39 +5700,24 @@ Bindings to groups/users are checked against the user of the event. UI Settings - - OAuth2/OpenID - Transparent Reverse Proxy For transparent reverse proxies with required authentication - - Forward Auth Single Application - - For nginx's auth_request or traefix's forwardAuth - - - Forward Auth Domain Level + For nginx's auth_request or traefik's forwardAuth - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain Configure SAML provider manually - - RADIUS Configuration - Configure RADIUS provider manually - - SCIM configuration - Configure SCIM provider manually @@ -5912,6 +5882,63 @@ Bindings to groups/users are checked against the user of the event. Run the demo wizard + + + OAuth2/OIDC (Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + + + Forward Auth (Single Application) + + + Forward Auth (Domain Level) + + + SAML (Security Assertion Markup Language) + + + RADIUS (Remote Authentication Dial-In User Service) + + + SCIM (System for Cross-domain Identity Management) + + + The token has been copied to your clipboard + + + The token was displayed because authentik does not have permission to write to the clipboard + + + A copy of this recovery link has been placed in your clipboard + + + The current tenant must have a recovery flow configured to use a recovery link + + + Create recovery link + + + Create Recovery Link + + + External + + + Service account + + + Service account (internal) + + + Check the release notes + + + User Statistics + + + <No name set> diff --git a/web/xliff/zh-Hans.xlf b/web/xliff/zh-Hans.xlf index 80b665610..48317264f 100644 --- a/web/xliff/zh-Hans.xlf +++ b/web/xliff/zh-Hans.xlf @@ -658,11 +658,6 @@ Manage users 管理用户 - - - Check release notes - 查看发行日志 - Outpost status @@ -694,11 +689,6 @@ Objects created 已创建对象 - - - User statistics - 用户统计 - Users created per day in the last month @@ -4351,16 +4341,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info 用户信息 - - - To create a recovery link, the current tenant needs to have a recovery flow configured. - 要创建恢复链接,当前租户需要配置恢复流程。 - - - - Reset Password - 重置密码 - Actions over the last week (per 8 hours) @@ -7632,10 +7612,6 @@ Bindings to groups/users are checked against the user of the event. UI Settings 用户界面设置 - - OAuth2/OpenID - OAuth2/OpenID - Transparent Reverse Proxy 透明反向代理 @@ -7644,38 +7620,22 @@ Bindings to groups/users are checked against the user of the event. For transparent reverse proxies with required authentication 适用于需要验证身份的透明反向代理 - - Forward Auth Single Application - Forward Auth 单应用 - - For nginx's auth_request or traefix's forwardAuth + For nginx's auth_request or traefik's forwardAuth 适用于 nginx 的 auth_request 或 traefik 的 forwardAuth - - Forward Auth Domain Level - Forward Auth 域名级 - - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain 适用于按根域名配置的 nginx 的 auth_request 或 traefik 的 forwardAuth Configure SAML provider manually 手动配置 SAML 提供程序 - - RADIUS Configuration - RADIUS 配置 - Configure RADIUS provider manually 手动配置 RADIUS 提供程序 - - SCIM configuration - SCIM 配置 - Configure SCIM provider manually 手动配置 SCIM 提供程序 @@ -7897,6 +7857,76 @@ Bindings to groups/users are checked against the user of the event. Run the demo wizard 运行演示向导 + + + OAuth2/OIDC (Open Authorization/OpenID Connect) + OAuth2/OIDC(Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + LDAP(轻型目录访问协议) + + + Forward Auth (Single Application) + Forward Auth(单应用) + + + Forward Auth (Domain Level) + Forward Auth(域名级) + + + SAML (Security Assertion Markup Language) + SAML(安全断言标记语言) + + + RADIUS (Remote Authentication Dial-In User Service) + RADIUS(远程身份验证拨入用户服务) + + + SCIM (System for Cross-domain Identity Management) + SCIM(跨域标识管理系统) + + + The token has been copied to your clipboard + 令牌已被复制到剪贴板 + + + The token was displayed because authentik does not have permission to write to the clipboard + 令牌已被显示,因为 authentik 缺少写入剪贴板的权限 + + + A copy of this recovery link has been placed in your clipboard + 一份恢复链接拷贝已被写入剪贴板 + + + The current tenant must have a recovery flow configured to use a recovery link + 当前租户必须配置恢复流程才能使用恢复链接 + + + Create recovery link + 创建恢复链接 + + + Create Recovery Link + 创建恢复链接 + + + External + + + Service account + + + Service account (internal) + + + Check the release notes + + + User Statistics + + + <No name set> diff --git a/web/xliff/zh-Hant.xlf b/web/xliff/zh-Hant.xlf index a338b32ba..03c3d535a 100644 --- a/web/xliff/zh-Hant.xlf +++ b/web/xliff/zh-Hant.xlf @@ -518,9 +518,6 @@ Manage users - - Check release notes - Outpost status Outpost 状态 @@ -545,10 +542,6 @@ Objects created 已创建对象 - - User statistics - 用户统计 - Users created per day in the last month 上个月每天创建的用户 @@ -3297,14 +3290,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info 用户信息 - - To create a recovery link, the current tenant needs to have a recovery flow configured. - 要创建恢复链接,当前租户需要配置恢复流程。 - - - Reset Password - 重置密码 - Actions over the last week (per 8 hours) @@ -5763,39 +5748,24 @@ Bindings to groups/users are checked against the user of the event. UI Settings - - OAuth2/OpenID - Transparent Reverse Proxy For transparent reverse proxies with required authentication - - Forward Auth Single Application - - For nginx's auth_request or traefix's forwardAuth - - - Forward Auth Domain Level + For nginx's auth_request or traefik's forwardAuth - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain Configure SAML provider manually - - RADIUS Configuration - Configure RADIUS provider manually - - SCIM configuration - Configure SCIM provider manually @@ -5960,6 +5930,63 @@ Bindings to groups/users are checked against the user of the event. Run the demo wizard + + + OAuth2/OIDC (Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + + + Forward Auth (Single Application) + + + Forward Auth (Domain Level) + + + SAML (Security Assertion Markup Language) + + + RADIUS (Remote Authentication Dial-In User Service) + + + SCIM (System for Cross-domain Identity Management) + + + The token has been copied to your clipboard + + + The token was displayed because authentik does not have permission to write to the clipboard + + + A copy of this recovery link has been placed in your clipboard + + + The current tenant must have a recovery flow configured to use a recovery link + + + Create recovery link + + + Create Recovery Link + + + External + + + Service account + + + Service account (internal) + + + Check the release notes + + + User Statistics + + + <No name set> diff --git a/web/xliff/zh_CN.xlf b/web/xliff/zh_CN.xlf index 65c22d04b..0d331a345 100644 --- a/web/xliff/zh_CN.xlf +++ b/web/xliff/zh_CN.xlf @@ -4351,16 +4351,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info 用户信息 - - - To create a recovery link, the current tenant needs to have a recovery flow configured. - 要创建恢复链接,当前租户需要配置恢复流程。 - - - - Reset Password - 重置密码 - Actions over the last week (per 8 hours) @@ -7632,10 +7622,6 @@ Bindings to groups/users are checked against the user of the event. UI Settings 用户界面设置 - - OAuth2/OpenID - OAuth2/OpenID - Transparent Reverse Proxy 透明反向代理 @@ -7644,38 +7630,22 @@ Bindings to groups/users are checked against the user of the event. For transparent reverse proxies with required authentication 适用于需要验证身份的透明反向代理 - - Forward Auth Single Application - Forward Auth 单应用 - - For nginx's auth_request or traefix's forwardAuth + For nginx's auth_request or traefik's forwardAuth 适用于 nginx 的 auth_request 或 traefik 的 forwardAuth - - Forward Auth Domain Level - Forward Auth 域名级 - - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain 适用于按根域名配置的 nginx 的 auth_request 或 traefik 的 forwardAuth Configure SAML provider manually 手动配置 SAML 提供程序 - - RADIUS Configuration - RADIUS 配置 - Configure RADIUS provider manually 手动配置 RADIUS 提供程序 - - SCIM configuration - SCIM 配置 - Configure SCIM provider manually 手动配置 SCIM 提供程序 @@ -7897,6 +7867,58 @@ Bindings to groups/users are checked against the user of the event. Run the demo wizard 运行演示向导 + + + OAuth2/OIDC (Open Authorization/OpenID Connect) + OAuth2/OIDC(Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + LDAP(轻型目录访问协议) + + + Forward Auth (Single Application) + Forward Auth(单应用) + + + Forward Auth (Domain Level) + Forward Auth(域名级) + + + SAML (Security Assertion Markup Language) + SAML(安全断言标记语言) + + + RADIUS (Remote Authentication Dial-In User Service) + RADIUS(远程身份验证拨入用户服务) + + + SCIM (System for Cross-domain Identity Management) + SCIM(跨域标识管理系统) + + + The token has been copied to your clipboard + 令牌已被复制到剪贴板 + + + The token was displayed because authentik does not have permission to write to the clipboard + 令牌已被显示,因为 authentik 缺少写入剪贴板的权限 + + + A copy of this recovery link has been placed in your clipboard + 一份恢复链接拷贝已被写入剪贴板 + + + The current tenant must have a recovery flow configured to use a recovery link + 当前租户必须配置恢复流程才能使用恢复链接 + + + Create recovery link + 创建恢复链接 + + + Create Recovery Link + 创建恢复链接 diff --git a/web/xliff/zh_TW.xlf b/web/xliff/zh_TW.xlf index 56799306e..ed8957fe9 100644 --- a/web/xliff/zh_TW.xlf +++ b/web/xliff/zh_TW.xlf @@ -518,9 +518,6 @@ Manage users - - Check release notes - Outpost status Outpost 状态 @@ -545,10 +542,6 @@ Objects created 已创建对象 - - User statistics - 用户统计 - Users created per day in the last month 上个月每天创建的用户 @@ -3297,14 +3290,6 @@ doesn't pass when either or both of the selected options are equal or above the User Info 用户信息 - - To create a recovery link, the current tenant needs to have a recovery flow configured. - 要创建恢复链接,当前租户需要配置恢复流程。 - - - Reset Password - 重置密码 - Actions over the last week (per 8 hours) @@ -5762,39 +5747,24 @@ Bindings to groups/users are checked against the user of the event. UI Settings - - OAuth2/OpenID - Transparent Reverse Proxy For transparent reverse proxies with required authentication - - Forward Auth Single Application - - For nginx's auth_request or traefix's forwardAuth - - - Forward Auth Domain Level + For nginx's auth_request or traefik's forwardAuth - For nginx's auth_request or traefix's forwardAuth per root domain + For nginx's auth_request or traefik's forwardAuth per root domain Configure SAML provider manually - - RADIUS Configuration - Configure RADIUS provider manually - - SCIM configuration - Configure SCIM provider manually @@ -5959,6 +5929,63 @@ Bindings to groups/users are checked against the user of the event. Run the demo wizard + + + OAuth2/OIDC (Open Authorization/OpenID Connect) + + + LDAP (Lightweight Directory Access Protocol) + + + Forward Auth (Single Application) + + + Forward Auth (Domain Level) + + + SAML (Security Assertion Markup Language) + + + RADIUS (Remote Authentication Dial-In User Service) + + + SCIM (System for Cross-domain Identity Management) + + + The token has been copied to your clipboard + + + The token was displayed because authentik does not have permission to write to the clipboard + + + A copy of this recovery link has been placed in your clipboard + + + The current tenant must have a recovery flow configured to use a recovery link + + + Create recovery link + + + Create Recovery Link + + + External + + + Service account + + + Service account (internal) + + + Check the release notes + + + User Statistics + + + <No name set> diff --git a/website/blog/2023-10-23-another-okta-breach/item.md b/website/blog/2023-10-23-another-okta-breach/item.md new file mode 100644 index 000000000..ae643167b --- /dev/null +++ b/website/blog/2023-10-23-another-okta-breach/item.md @@ -0,0 +1,100 @@ +--- +title: Okta got breached again and they still have not learned their lesson +description: “HAR files uploaded to Okta support system contained session tokens.” +slug: 2023-10-23-another-okta-breach +authors: + - name: Jens Langhammer + title: CTO at Authentik Security Inc + url: https://github.com/BeryJu + image_url: https://github.com/BeryJu.png +tags: + - security breach + - SSO + - malicious hacker + - HAR file + - session token + - identity provider + - security + - authentication + - okta + - cloudflare + - beyondtrust + - har +hide_table_of_contents: false +--- + +> **_authentik is an open source Identity Provider that unifies your identity needs into a single platform, replacing Okta, Active Directory, and Auth0. Authentik Security is a [public benefit company](https://github.com/OpenCoreVentures/ocv-public-benefit-company/blob/main/ocv-public-benefit-company-charter.md) building on top of the open source project._** + +--- + +## Another security breach for Okta + +Late last week, on October 20, Okta publicly [shared](https://sec.okta.com/harfiles) that they had experienced a security breach. Fortunately, the damage was limited. However, the incident highlights not only how incredibly vigilant vendors (especially huge vendors of security solutions!) must be, but also how risky the careless following of seemingly reasonable requests can be. + +We now know that the breach was enabled by a hacker who used stolen credentials to access the Okta support system. This malicious actor then collected session tokens that were included in HAR files (HTTP **_Archive_** Format) that were uploaded to the Okta support system by customers. A HAR file is a JSON **_archive file_** format that stores session data for all browsers running during the session. It is not rare for a support team troubleshooting an issue to request a HAR file from their customer: [Zendesk](https://support.zendesk.com/hc/en-us/articles/4408828867098-Generating-a-HAR-file-for-troubleshooting) does it, [Atlassian](https://confluence.atlassian.com/kb/generating-har-files-and-analyzing-web-requests-720420612.html) does it, [Salesforce](https://help.salesforce.com/s/articleView?id=000385988&type=1) as well. + +So it’s not the HAR file itself; it was what was in the file, and left in the file. And, destructively, it is our collective training to not second-guess support teams; especially the support team at one of the world’s most renowned identity protection vendors. + +But it is not all on Okta; every customer impacted by this hack, including 1Password (who communicated the breach to Okta on September 29), BeyondTrust (who communicated the breach on October 2), and Cloudflare (October 18) were "guilty" of uploading HAR files that had not been scrubbed clean and still included session tokens and other sensitive access data. (Cleaning an HAR file is not always a simple task, there are tools like [Google's HAR Sanitizer](https://github.com/google/har-sanitizer), but even tools like that don't 100% guarantee that the resulting file will be clean.) + +## Target the ancillaries + +An interesting aspect of this hack was that it exploited the less-considered vulnerability of Support teams, not considered to be the typical entry-way for hackers. + +But security engineers know that hackers go in at the odd, unexpected angles. A classic parallel is when someone wants data that a CEO has, they don’t go to the CEO, they go to (and through) the CEO’s assistant! + +Similarly, the support team at Okta was used as entry point. Once the hacker gained control of a single customer’s account, they worked to take control of the main Okta dashboard and the entire support system. This lateral-to-go-up movement through access control layers is common technique of hackers. + +## It’s the response… lesson not yet learned + +The timing of Okta's response, not great. The initial denial of the incident, not great. And then, add insult to injury, there’s what can objectively be labeled an [abysmal “announcement” blog](https://sec.okta.com/harfiles) from Okta on October 20. + +Everything from the obfuscatory title to the blog’s brevity to the actual writing… and importantly, the lack of any mention at all of BeyondTrust, the company that informed Okta on October 2nd that they suspected a breach of the Okta support system. + +> “_Tracking Unauthorized Access to Okta's Support System_” has to be the lamest of all confession titles in the history of security breach announcements. + +Not to acknowledge that their customers first informed them seems like willful omission, and it absolutely illustrates that Okta has not yet learned their lesson about transparency, trusting their customers and security partners, and the importance of moving more quickly towards full disclosure. Ironically, BeyondTrust thanks Okta for their efforts and communications during the two week period of investigation (and denial). + +Back to the timing; BeyondTrust has written an excellent [article about the breach](https://www.beyondtrust.com/blog/entry/okta-support-unit-breach), with a rather damning timeline of Okta’s responses. + +> “We raised our concerns of a breach to Okta on October 2nd. Having received no acknowledgement from Okta of a possible breach, we persisted with escalations within Okta until October 19th when Okta security leadership notified us that they had indeed experienced a breach and we were one of their affected customers.”([source](https://www.beyondtrust.com/blog/entry/okta-support-unit-breach)) + +The BeyondTrust blog provides important details about the persistence and ingenuity of the hacker. + +> “Within 30 minutes of the administrator uploading the file to Okta’s support portal an attacker used the session cookie from this support ticket, attempting to perform actions in the BeyondTrust Okta environment. BeyondTrust’s custom policies around admin console access initially blocked them, but they pivoted to using admin API actions authenticated with the stolen session cookie. API actions cannot be protected by policies in the same way as actual admin console access. Using the API, they created a backdoor user account using a naming convention like existing service accounts.” + +Oddly, the BeyondTrust blog about the breach does a better job of selling Okta (by highlighting the things that went right with Okta) than the Okta announcement blog. For example, in the detailed timeline, BeyondTrust points out that one layer of prevention succeeded when the hacker attempted to access the main internal Okta dashboard, but because Okta still views dashboard access as a new sign in, it prompted for MFA thus thwarting the log in attempt. + +Cloudflare’s revelation of their communications timeline with Okta shows another case of poor response timing by Okta, another situation where the customer informed the breached vendor first, and the breached company took too long to publicly acknowledge the breach. + +> “In fact, we contacted Okta about the breach of their systems before they had notified us.” … “We detected this activity internally more than 24 hours before we were notified of the breach by Okta.” ([source](https://blog.cloudflare.com/how-cloudflare-mitigated-yet-another-okta-compromise/)) + +In their blog about this incident, Cloudflare provides a helpful [set of recommendations](https://blog.cloudflare.com/how-cloudflare-mitigated-yet-another-okta-compromise/) to users, including sensible suggestions such as monitoring for new Okta users created, and reactivation of Okta users. + +Which just takes us back to the rather lean response by Okta; their customers wrote much more informative and helpful responses than Okta themselves. + +## Keep telling us + +> We can’t be reminded often enough about keeping our tokens safe. + +This incident at Okta is parallel to the breach at Sourcegraph that we recently [blogged about](https://goauthentik.io/blog/2023-08-11-sourcegraph-security-incident), in which a token was inadvertently included in a GitHub commit, and thus exposed to the world. With Okta, it was session tokens included in an uploaded HAR file, exposed to a hacker who had already gained access to the Okta support system. + +But talk about things that keep security engineers up at night; timing was tight on this one. + +The initial breach attempt was noticed by BeyondTrust within only 30 minutes of their having uploaded a HAR file to Okta Support. By default (and this is a good, strong, industry-standard default) Okta session tokens have a lifespan of two hours. However, with hackers moving as quickly as these, 2 hours is plenty long for the damage to be done. So, the extra step of scrubbing clean any and all files that are uploaded would have saved the day in this case. + +> Keep your enemies close, but your tokens even closer. + +## Stay vigilant out there + +Lessons learned abound with every breach. Each of us in the software and technology area watch and learn from each attack. In the blog by BeyondTrust, they provide some valuable steps that customers and security teams can take to monitor for possible infiltration. + +Strong security relies on multiple layers, enforced processes, and defense-in-depth policies. + +> “The failure of a single control or process should not result in breach. Here, multiple layers of controls -- e.g. Okta sign on controls, identity security monitoring, and so on, prevented a breach.” ([source](https://www.beyondtrust.com/blog/entry/okta-support-unit-breach)) + +A [writer on HackerNews](https://news.ycombinator.com/item?id=37963074) points out that Okta has updated their [documentation](https://help.okta.com/oag/en-us/content/topics/access-gateway/troubleshooting-with-har.htm) about generating HAR files, to tell users to sanitize the files first. But whether HAR files or GutHub commits, lack of MFA or misuse of APIs, we all have to stay ever-vigilant to keep ahead of malicious hackers. + +## Addendum + +This blog was edited to provide updates about the [1Password announcement](https://blog.1password.com/okta-incident/) that they too were hacked, and to clarify that the hacker responsible for obtaining session tokens from the HAR files had originally gained entry into the Okta support system using stolen credentials. diff --git a/website/docs/flow/stages/prompt/index.md b/website/docs/flow/stages/prompt/index.md index 0efff1056..2bb33418b 100644 --- a/website/docs/flow/stages/prompt/index.md +++ b/website/docs/flow/stages/prompt/index.md @@ -20,7 +20,7 @@ The prompt can be any of the following types: | Number | Numerical textbox. | | Checkbox | Simple checkbox. | | Radio Button Group | Similar to checkboxes, but allows selecting a value from a set of predefined values. | -| Dropdwon | A simple dropdown menu filled with predefined values. | +| Dropdown | A simple dropdown menu filled with predefined values. | | Date | Same as text, except the client renders a date-picker | | Date-time | Same as text, except the client renders a date-time-picker | | File | Allow users to upload a file, which will be available as base64-encoded data in the flow . | diff --git a/website/package-lock.json b/website/package-lock.json index 4ccdec6fd..7cc078452 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -22,7 +22,7 @@ "react-dom": "^17.0.2", "react-feather": "^2.0.10", "react-toggle": "^4.1.3", - "react-tooltip": "^5.21.5", + "react-tooltip": "^5.21.6", "remark-github": "^12.0.0" }, "devDependencies": { @@ -10689,9 +10689,9 @@ } }, "node_modules/react-tooltip": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.21.5.tgz", - "integrity": "sha512-ey70qf6pBGi4U6xpyNlZAHobAhlo2dfxmImR2Bzd/DbLTsAYWz3TEaK+RMFuUZMq6hSPRbUHQSkP2rHBq4uFVg==", + "version": "5.21.6", + "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.21.6.tgz", + "integrity": "sha512-WbND5ee8Kr5HaSuDDiAmSyRp5jH77PSk8M0CUzmVfD+1WST8XOm1StJndK/wOQIP5GPvDVPy96ylLxY/V+VpqA==", "dependencies": { "@floating-ui/dom": "^1.0.0", "classnames": "^2.3.0" @@ -21566,9 +21566,9 @@ } }, "react-tooltip": { - "version": "5.21.5", - "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.21.5.tgz", - "integrity": "sha512-ey70qf6pBGi4U6xpyNlZAHobAhlo2dfxmImR2Bzd/DbLTsAYWz3TEaK+RMFuUZMq6hSPRbUHQSkP2rHBq4uFVg==", + "version": "5.21.6", + "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.21.6.tgz", + "integrity": "sha512-WbND5ee8Kr5HaSuDDiAmSyRp5jH77PSk8M0CUzmVfD+1WST8XOm1StJndK/wOQIP5GPvDVPy96ylLxY/V+VpqA==", "requires": { "@floating-ui/dom": "^1.0.0", "classnames": "^2.3.0" diff --git a/website/package.json b/website/package.json index d297aa8f3..a33ca4c8d 100644 --- a/website/package.json +++ b/website/package.json @@ -29,7 +29,7 @@ "react-dom": "^17.0.2", "react-feather": "^2.0.10", "react-toggle": "^4.1.3", - "react-tooltip": "^5.21.5", + "react-tooltip": "^5.21.6", "remark-github": "^12.0.0" }, "browserslist": {