web: Indicate when caps-lock is active during password input. (#12733)
Determining the state of the caps-lock key can be tricky as we're
dependant on a user-provided input to set a value. Thus, our initial
state defaults to not display any warning until the first keystroke.
- Revise to better use lit-html.
Co-authored-by: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com>
sources/oauth: add group sync for azure_ad (#12894)
* sources/oauth: add group sync for azure_ad
* make group sync optional
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Co-authored-by: Jens L. <jens@goauthentik.io>
web/user: fix opening application with Enter not respecting new tab setting (#13115)
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Co-authored-by: Jens L. <jens@goauthentik.io>
web/admin: update Application Wizard button placement (#12771)
* web: Add InvalidationFlow to Radius Provider dialogues
## What
- Bugfix: adds the InvalidationFlow to the Radius Provider dialogues
- Repairs: `{"invalidation_flow":["This field is required."]}` message, which was *not* propagated
to the Notification.
- Nitpick: Pretties `?foo=${true}` expressions: `s/\?([^=]+)=\$\{true\}/\1/`
## Note
Yes, I know I'm going to have to do more magic when we harmonize the forms, and no, I didn't add the
Property Mappings to the wizard, and yes, I know I'm going to have pain with the *new* version of
the wizard. But this is a serious bug; you can't make Radius servers with *either* of the current
dialogues at the moment.
* This (temporary) change is needed to prevent the unit tests from failing.
\# What
\# Why
\# How
\# Designs
\# Test Steps
\# Other Notes
* Revert "This (temporary) change is needed to prevent the unit tests from failing."
This reverts commit dddde09be5.
* web: Make using the wizard the default for new applications
# What
1. I removed the "Wizard Hint" bar and migrated the "Create With Wizard" button down to the default
position as "Create With Provider," moving the "Create" button to a secondary position.
Primary coloring has been kept for both.
2. Added an alert to the "Create" legacy dialog:
> Using this form will only create an Application. In order to authenticate with the application,
> you will have to manually pair it with a Provider.
3. Updated the subtitle on the Wizard dialog:
``` diff
- wizardDescription = msg("Create a new application");
+ wizardDescription = msg("Create a new application and configure a provider for it.");
```
4. Updated the User page so that, if the User is-a Administrator and the number of Applications in
the system is zero, the user will be invited to create a new Application using the Wizard rather
than the legacy Form:
```diff
renderNewAppButton() {
const href = paramURL("/core/applications", {
- createForm: true,
+ createWizard: true,
});
```
5. Fixed a bug where, on initial render, if the `this.brand` field was not available, an error would
appear in the console. The effects were usually harmless, as brand information came quickly and
filled in before the user could notice, but it looked bad in the debugger.
6. Fixed a bug in testing where the wizard page "Configure Policy Bindings" had been changed to
"Configure Policy/User/Group Binding".
# Testing
Since the wizard OUID didn't change (`data-ouia-component-id="start-application-wizard"`), the E2E
tests for "Application Wizard" completed without any substantial changes to the routine or to the
tests.
``` sh
npm run test:e2e:watch -- --spec ./tests/specs/new-application-by-wizard.ts
```
# User documentation changes required.
These changes were made at the request of docs, as an initial draft to show how the page looks with
the Application Wizard as he default tool for creating new Applications.
# Developer documentation changes required.
None.
Co-authored-by: Ken Sternberg <133134217+kensternberg-authentik@users.noreply.github.com>
* stages/authenticator_email: Add basic structure for stages/authenticator_email
* stages/authenticator_email: Add stages/authenticator_email django app to settings.py
* stages/authenticator_email: Fix imports due changes introduced in #12598
* stages/authenticator_email: fix linting
* stages/authenticator_email: Add tests for token verification
* Add UI structure for authenticator_email
* Add autheticator_email to AuthenticatorValidateStageForm.ts and create AuthenticatorEmailStageForm.ts
* Add serializer property to emaildevice
* Add DeviceClasses.EMAIL to DeviceClasses
* Add migration file for DeviceClasses change (added email)
* Add new schema.yml and blueprints/schema.json to refelct email authenticator
* Fix UI to show the Email Authenticator
* Add support for email templates for the email authenticator
* Add templates
* Add DeviceClasses.EMAIL option to authenticator_validate/stage.py
* Fix logic for sending emails in stage.py and use the proper class AuthenticatorEmailStage in tasks.py
* Fix token expiration display in the email templates
* Fix authenticator email stage set up
* Add template and email to api response for Authenticator Email stage
* Fix Authenticator Email stage set up form
* Use different flow if the user has an email configured or not for Authenticator Email stage UI
* Use the correct field for the token in AuthenticatorEmailStage.ts
* Fix linting and code style
* Use the correct assertions in tests
* Fix mask email helper
* Add missing cases for Email Authenticator in the UI
* Fix email sending, add _compose_email() method to EmailDevice
* Fix cosmetic changes
* Add support for email device challenge validation in validate_selected_challenge
* Fix tests
* Add from_address to email template
* Refactor tests
* Update API Schema
* Refactor AuthenticatorEmailStage UI for cleaner code
* Fix saving token_expiry in the stage configuration
* Remove debug statements
* Add email connection settings to the Email authenticator stage configuration UI
* Remove unused field activate_on_success from AuthenticatorEmailStage
* Add tests for duplicate email, token expiration and template error
* cosmetic/styling changes
* Use authentik's GroupMemberSerializer and ManagedAppConfig in api and apps for email authenticathor
* stages/authenticator_email: Fix typos, styling and unused fields
* stages/authenticator_email: remove unused field responseStatus
* stages/authenticator_email: regen migrations
* Fix linting issues
* Fix app label issue, typos, missing user field
* Add a trailing space in email_otp.txt RFC 3676 sec. 4.3
Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Marcelo Elizeche Landó <marce@melizeche.com>
* Move mask_email method to a helper function in authentik.lib.utils.email
* Remove unused function
* Use authentik.stages.email.tasks instead of authentik.stages.authenticator_email.tasks, delete authentik.stages.authenticator_email.tasks
* Fix use global settings not using the global setting if there's a default
* Revert "Fix use global settings not using the global setting if there's a default"
This reverts commit 3825248bb4.
* Use user email from user attributes if exists
* Show masked email in AuthenticatorValidateStageCode
* Remove unused base.html template
* Fix linting issues
* Change token_expiry from integer to TextField, use timedelta_string_validator where necessary to process the change
* Move 'use global connection settings' up in the Email Authenticator Stage Configuration
* Show expanded connections settings when 'use global settings' is not activated for better UX
* Fix migration file, add missing validator
* Fix test for no prefilled email address
* Add tests to check session management, challenge generation and challenge response validation
* fix linting
* Add default value EmailStage for stage_class in stage.email.tasks.send_mail
* Change string representation for EmailDevice to handle authentik/events/tests/test_models.py::TestModels, add tests for the new __str__ method
* Add #nosec to skip false positive in linting validation
Signed-off-by: Marcelo Elizeche Landó <marce@melizeche.com>
* Change Email Authenticator Setup Stage name for consistency with other authenticators
* Add tests to test properties and methods of EmailDevice and AuthenticatorEmailStage, add test for email tasks
* Add tests for email challenge in authenticator_validate
* Update migration to reflect new verbose name for AuthenticatorEmailStage
* Update schema.yml to reflect new verbose name for AuthenticatorEmailStage
* Add default email subject in Email Authenticator Setup Stage configuration
* Remove from_address from email template to ensure global settings use if use global settings is on
* Add flow-default-authenticator-email-setup.yaml blueprint
* Move email authenticator blueprint to the examples folder
* Update authentik/stages/authenticator_email/models.py
Signed-off-by: Jens L. <jens@beryju.org>
* Change self.user_pk to self.user_id because user_pk doesn't exists here
* Remove unused logger import
* Remove more unused logger import
* Add error handling to authentik.lib.utils.email.mask_email
* fix linting
* don't catch Exception
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* update icons
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
---------
Signed-off-by: Marcelo Elizeche Landó <marce@melizeche.com>
Signed-off-by: Jens L. <jens@beryju.org>
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Co-authored-by: Jens L. <jens@beryju.org>
Co-authored-by: Jens Langhammer <jens@goauthentik.io>
Translate django.po in nl [Manual Sync]
72% of minimum 60% translated source file: 'django.po'
on 'nl'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* Translate web/xliff/en.xlf in it [Manual Sync]
96% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'it'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* Translate web/xliff/en.xlf in it [Manual Sync]
95% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'it'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* Translate web/xliff/en.xlf in it [Manual Sync]
95% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'it'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
* Translate web/xliff/en.xlf in de [Manual Sync]
74% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'de'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* Translate web/xliff/en.xlf in de [Manual Sync]
74% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'de'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* Translate web/xliff/en.xlf in de [Manual Sync]
74% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'de'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* Translate web/xliff/en.xlf in de [Manual Sync]
74% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'de'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
* Translate web/xliff/en.xlf in de [Manual Sync]
74% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'de'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Translate web/xliff/en.xlf in ko [Manual Sync]
74% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'ko'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate web/xliff/en.xlf in pl [Manual Sync]
88% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'pl'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate web/xliff/en.xlf in ru [Manual Sync]
90% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'ru'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in pl [Manual Sync]
86% of minimum 60% translated source file: 'django.po'
on 'pl'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate web/xliff/en.xlf in zh_TW [Manual Sync]
74% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'zh_TW'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in nl [Manual Sync]
72% of minimum 60% translated source file: 'django.po'
on 'nl'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in ru [Manual Sync]
90% of minimum 60% translated source file: 'django.po'
on 'ru'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in zh_TW [Manual Sync]
83% of minimum 60% translated source file: 'django.po'
on 'zh_TW'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in ko [Manual Sync]
71% of minimum 60% translated source file: 'django.po'
on 'ko'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate web/xliff/en.xlf in nl [Manual Sync]
69% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'nl'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in zh-Hans [Manual Sync]
98% of minimum 60% translated source file: 'django.po'
on 'zh-Hans'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in tr [Manual Sync]
95% of minimum 60% translated source file: 'django.po'
on 'tr'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in zh_CN [Manual Sync]
98% of minimum 60% translated source file: 'django.po'
on 'zh_CN'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in it [Manual Sync]
98% of minimum 60% translated source file: 'django.po'
on 'it'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in pt_BR [Manual Sync]
77% of minimum 60% translated source file: 'django.po'
on 'pt_BR'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in de [Manual Sync]
98% of minimum 60% translated source file: 'django.po'
on 'de'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in fi [Manual Sync]
98% of minimum 60% translated source file: 'django.po'
on 'fi'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate en.xlf in zh-Hans [Manual Sync]
98% of minimum 60% translated source file: 'en.xlf'
on 'zh-Hans'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate django.po in es [Manual Sync]
97% of minimum 60% translated source file: 'django.po'
on 'es'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate web/xliff/en.xlf in zh_CN [Manual Sync]
98% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'zh_CN'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate web/xliff/en.xlf in fi [Manual Sync]
98% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'fi'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate web/xliff/en.xlf in es [Manual Sync]
78% of minimum 60% translated source file: 'web/xliff/en.xlf'
on 'es'.
Sync of partially translated files:
untranslated content is included with an empty translation
or source language content depending on file format
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
web: Refine accordion headers for pressability.
- Allows user to click or tap anywhere on a accordion header to expand
or collapse.
- Adds transition to collapse.
* enterprise/providers/ssf: check providers's application's policies to determine if an ssf event should be sent
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* add preview banner to ssf provider
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix and test
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* providers/ssf: fix txn being inside the event not the SET itself
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix incorrect ssf format
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix web form
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Translate locale/en/LC_MESSAGES/django.po in de
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'de'.
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate locale/en/LC_MESSAGES/django.po in de
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'de'.
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Update index.md to have binding in saml section be post
After upgrading to version 2024.12.2 SAML stopped working in gitlab and was causing 502 errors. After some troubleshooting I finally got it to work again by changing binding to "Post" instead of the recommended "Redirect" in this howto.
Signed-off-by: Nestor N. Camacho III <ncamacho@gmail.com>
* website/integrations: owncloud: init
Apply changes from old MR
* website/integrations: owncloud: easy fixes
Some easy fixes to match template
* website/integrations: owncloud: lint
* website/integrations: owncloud: cleanup authentik configuration section
Cleans up the authentik configuration section of this documentation and removes unneeded bits
* website/integrations: owncloud: adjust authentik configuration headers
Add `### Configuration` header and switch General Settings, Protocl Settings, and Advanced Protocol Settings to H4
* website/integrations: owncloud: update service discovery section & remove unneeded block
Updates the service discovery block to be more in-line with documentation, renames "Apache" to "Apache HTTPD" (correct name), removes provider specific documentation for traefik and instead tells users to view provider-specific docs.
Also removes section kept last commit
* website/integrations: owncloud: start cleanup of "ownCloud configuration" section
Starts cleaning up the steps, adds warning for sub and the other one, grammar, styling and bla bla bla
* website/integrations: owncloud: fix php
Adds single quotes for client-id and client-secret lines. Should be fine I think. Logic says quotes but old docs had none
* i really don't care about a broken anchor netlify
* a
* website/integrations: owncloud: revamp "you're done section"
Cleanup and restructure the section
* website/integrations: owncloud: finish touch-ups
Cleanup the rest of the ownCloud section and update the loginButtonName variable
* website/integrations: owncloud: lint
Lints the code with Prettier
* website/integrations: owncloud: lint
again (?)
* website/integrations: owncloud: v2 authentik configuration section
Applies Tana's suggested format/layout with my suggested modifications. Lint will probably fail so enjoy this nice red cross on the right of this commit :)
Signed-off-by: 4d62 <git@sdko.org>
* website/integrations: owncloud: lint
Yea... That's about it
* Update index.md
Signed-off-by: 4d62 <git@sdko.org>
* Update website/integrations/services/owncloud/index.md
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Signed-off-by: 4d62 <git@sdko.org>
* Update website/integrations/services/owncloud/index.md
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Signed-off-by: 4d62 <git@sdko.org>
* Update website/integrations/services/owncloud/index.md
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Signed-off-by: 4d62 <git@sdko.org>
* Update website/integrations/services/owncloud/index.md
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Signed-off-by: 4d62 <git@sdko.org>
* website/integrations: owncloud: remove duplicate
* websites/integrations: owncloud: rewrite sentence for clarity
* website/integrations: owncloud: better OR for how to config oidc
* Fix indent
Signed-off-by: 4d62 <git@sdko.org>
* Lint
* Update website/integrations/services/owncloud/index.md
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Signed-off-by: 4d62 <git@sdko.org>
---------
Signed-off-by: 4d62 <git@sdko.org>
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
* web: Fix issue where code mirror partially applies OneDark theme.
- Reported in #4622
- Partially fixed via fd9ce53
* update syntax highlight color when theme is changed
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* we dont really need to initialise these in the constructor tbh
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Co-authored-by: Jens Langhammer <jens@goauthentik.io>
* providers/oauth2: clear flow state before redirecting to final URL
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* make flow executor invocation correct
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* actually we can do this centrally
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* make sure the state is really clean
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* website/docs: Google Workspaces SAML.
- Moves Google Cloud doc page to sibling article.
- Adds Index page for Google sources
- Adds Index page for federated sources
* website/docs: Re-order tags.
* web: Add InvalidationFlow to Radius Provider dialogues
## What
- Bugfix: adds the InvalidationFlow to the Radius Provider dialogues
- Repairs: `{"invalidation_flow":["This field is required."]}` message, which was *not* propagated
to the Notification.
- Nitpick: Pretties `?foo=${true}` expressions: `s/\?([^=]+)=\$\{true\}/\1/`
## Note
Yes, I know I'm going to have to do more magic when we harmonize the forms, and no, I didn't add the
Property Mappings to the wizard, and yes, I know I'm going to have pain with the *new* version of
the wizard. But this is a serious bug; you can't make Radius servers with *either* of the current
dialogues at the moment.
* This (temporary) change is needed to prevent the unit tests from failing.
\# What
\# Why
\# How
\# Designs
\# Test Steps
\# Other Notes
* Revert "This (temporary) change is needed to prevent the unit tests from failing."
This reverts commit dddde09be5.
* web: Update to OpenAPI 7.11.
This commit updates our Makefile to generate the Typescript api using OpenAPI 7.11, and updates
names (mostly of enum targets) in our product to correspond to the changes in how OpenAPI generates
enum source names.
1. Replaced `ProviderModelEnum.` (note terminal period) with `ProviderModelEnum.AuthentikProvider`.
For example:
```
- ProviderModelEnum.SamlSamlprovider
+ ProviderModelEnum.AuthentikProvidersSamlSamlprovider
```
2. Replaced `RbacPermissionsAssignedByUsersListModelEnum.` (note terminal period) with
`RbacPermissionsAssignedByUsersListModelEnum.Authentik`. For example:
```
- RbacPermissionsAssignedByUsersListModelEnum.ProvidersLdapLdapprovider.toString(),
+ RbacPermissionsAssignedByUsersListModelEnum.AuthentikProvidersLdapLdapprovider.toString(),
```
3. Replaced `SyncObjectModelEnum.` (note terminal period) with
`SyncObjectModelEnum.AuthentikCoreModels`. For example:
```
- model=${SyncObjectModelEnum.Group}
+ model=${SyncObjectModelEnum.AuthentikCoreModelsGroup}
```
4. Replaced `SignatureAlgorithmEnum._` (note terminal symbols) with
`SignatureAlgorithmEnum.HttpWwwW3Org`. For example:
```
- ["ECDSA-SHA256", SignatureAlgorithmEnum._200104XmldsigMoreecdsaSha256],
+ ["ECDSA-SHA256", SignatureAlgorithmEnum.HttpWwwW3Org200104XmldsigMoreecdsaSha256],
```
5. Replaced `DigestAlgorithmEnum._` (note terminal symbols) with `DigestAlgorithmEnum.HttpWwwW3Org`.
For example:
```
- ["SHA256", DigestAlgorithmEnum._200104Xmlencsha256, true],
+ ["SHA256", DigestAlgorithmEnum.HttpWwwW3Org200104Xmlencsha256, true],
```
6. Replaced `NameIdPolicyEnum._` (note terminal symbols) with
`NameIdPolicyEnum.UrnOasisNamesTcSaml`. This one is trickier than the others: If you look
closely, you'll see that how OpenAPI generates the names has changed, with `nameid` now being
`Nameid`, and `FormatemailAddress` now being `FormatEmailAddress`.
```
- value=${NameIdPolicyEnum._11nameidFormatemailAddress}
+ value=${NameIdPolicyEnum.UrnOasisNamesTcSaml11NameidFormatEmailAddress}
```
# How
After determining how the enum prefixes had changed, I just ran six of these, testing after each
step to ensure that `npm run lint:types` had fewer errors than the previous run, until the product
built without type errors.
``` sh
$ perl -pi.bak -e 's/DigestAlgorithmEnum\._/DigestAlgorithmEnum.HttpWwwW3Org/' $(rg -l 'DigestAlgorithmEnum\.' src/)
```
# Testing
You can validate that these items have changed by finding the prefixes in the source code and
assuring yourself that every option, checkbox, or radio associated with them is populated correctly.
# User documentation changes required.
None.
# Developer documentation changes required.
None.
* website/integrations: cloudflare-access: rename
A .mdx file is not needed for this integration. As a result, it has been renamed
* website/integrations: cloudflare access: refactor main document
* website/integrations: cloudflare-access: lint
* Update website/integrations/services/cloudflare-access/index.md
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Signed-off-by: 4d62 <git@sdko.org>
* website/integrations: all: install -> installation (#12676)
* website/integrations: all: install -> installation
* fix for new integr
Signed-off-by: 4d62 <git@sdko.org>
---------
Signed-off-by: 4d62 <git@sdko.org>
* website/integrations: cloudflare-access: rename
A .mdx file is not needed for this integration. As a result, it has been renamed
---------
Signed-off-by: 4d62 <git@sdko.org>
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
* website/integrations: pgadmin: refactor
Refactors the pgAdmin integration documentation, makes it match existing style guide, and adds subsection for configuration for containerized deployments
* website/integrations: pgadmin: lint
Lints refactored documentation page
* Update website/integrations/services/pgadmin/index.md
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Signed-off-by: 4d62 <git@sdko.org>
* website/integrations: pgadmin: updates note
Adds back "based on" note with updated versions
* website/integrations: pgadmin: specify strict/regex rediect uri
Not sure on wording tho
* website/integrations: pgadmin: add configuration validation step
Adds configuration validation step. Log out, log back in with authentik. Button on login page
* website/integrations: pgadmin: fix redirect uri
Fixes incorrect redirect uri introduced during refactor. Probably forgot to copy slug or something. Important thing is that it's fixed
Signed-off-by: 4d62 <git@sdko.org>
* website/integrations: pgadmin: fix another stupidity I probably made
Glorious https://img.sdko.org/u/0k3f46.png
Signed-off-by: 4d62 <git@sdko.org>
---------
Signed-off-by: 4d62 <git@sdko.org>
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
* Update website docs for docker outpost integration
- Changed the docker socket proxy link to point to a better and more maintained solution.
- Changed permissions to include System/Info.
- Added a section on how to connect to a docker socket proxy.
Signed-off-by: itskagee <17406594+itskagee@users.noreply.github.com>
* add description for System Info permission
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* Apply suggestions from code review
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Signed-off-by: itskagee <17406594+itskagee@users.noreply.github.com>
* website/docs: updated docker outpost integration for docker socket proxies
- Added additional information regarding docker socket proxies.
- Changed the layout to better present said information.
* Update website/docs/add-secure-apps/outposts/integrations/docker.md
Signed-off-by: Tana M Berry <tanamarieberry@yahoo.com>
---------
Signed-off-by: itskagee <17406594+itskagee@users.noreply.github.com>
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Signed-off-by: Tana M Berry <tanamarieberry@yahoo.com>
Co-authored-by: Jens Langhammer <jens@goauthentik.io>
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Update index.md
The scope needs to include 'profile' for Komga to be able to retrieve the 'preferred_username'.
Signed-off-by: SeeJayEmm <chris@threesheets.org>
* web: Add InvalidationFlow to Radius Provider dialogues
## What
- Bugfix: adds the InvalidationFlow to the Radius Provider dialogues
- Repairs: `{"invalidation_flow":["This field is required."]}` message, which was *not* propagated
to the Notification.
- Nitpick: Pretties `?foo=${true}` expressions: `s/\?([^=]+)=\$\{true\}/\1/`
## Note
Yes, I know I'm going to have to do more magic when we harmonize the forms, and no, I didn't add the
Property Mappings to the wizard, and yes, I know I'm going to have pain with the *new* version of
the wizard. But this is a serious bug; you can't make Radius servers with *either* of the current
dialogues at the moment.
* This (temporary) change is needed to prevent the unit tests from failing.
\# What
\# Why
\# How
\# Designs
\# Test Steps
\# Other Notes
* Revert "This (temporary) change is needed to prevent the unit tests from failing."
This reverts commit dddde09be5.
* web: adjust spacing issue for the login container
# What
Replaces the `space-evenly` flexbox instruction with `space-between`. `space-evenly` introduced
whitespace in column mode that pushed visible content off the page by introducing new margins inside
the flex container, which made content pushed around by those margins inaccessable via scrolling.
`space-between` creates the same desired effect, but with the margins top and bottom of the flexbox
column controlled by the parent container, which gives both more control and more suitable layout
handling.
# Links:
- Zendesk Ticket: [Tall Prompts/Flows cut off on
Safari](https://authentiksecurityinc.zendesk.com/agent/tickets/186). (This link is only visible to
Authentik employees. Sorry.)
* web/admin: migrate user interface and stop impersonation to nav bar
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* move version diff to banner
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* make click on backdrop close about modal
just for you @rissson
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* web: Add InvalidationFlow to Radius Provider dialogues
## What
- Bugfix: adds the InvalidationFlow to the Radius Provider dialogues
- Repairs: `{"invalidation_flow":["This field is required."]}` message, which was *not* propagated
to the Notification.
- Nitpick: Pretties `?foo=${true}` expressions: `s/\?([^=]+)=\$\{true\}/\1/`
## Note
Yes, I know I'm going to have to do more magic when we harmonize the forms, and no, I didn't add the
Property Mappings to the wizard, and yes, I know I'm going to have pain with the *new* version of
the wizard. But this is a serious bug; you can't make Radius servers with *either* of the current
dialogues at the moment.
* This (temporary) change is needed to prevent the unit tests from failing.
\# What
\# Why
\# How
\# Designs
\# Test Steps
\# Other Notes
* Revert "This (temporary) change is needed to prevent the unit tests from failing."
This reverts commit dddde09be5.
* web: fix error handling bug in ui
# What
When I converted all of the Provider forms over to a unified structure, the RAC form
stood out as one that couldn't be directly converted, so two copies were retained.
The error handling was updated to a new format, but this one bit of older handling
was missed.
For now, we're going back to using `Record<string, string>` for errors, to stay as
close to the `./admin/providers/` style of handling.
# Testing
This error prevented the RAC Provider form from loading in the wizard. Seeing that it works in the
wizard should be sufficient.
feat(doc): update argocd oidc doc
Add `signing_key` to terraform example as it is needed for ArgoCD. They require a RS256 key and without it you get a HS256 key
Signed-off-by: ImOverlord <9958853+ImOverlord@users.noreply.github.com>
* website: revise full development environment instructions
Updates the full development environment instructions to make it clear you *will* need both
Docker and Golangci-Lint installed.
Adds the `poetry-plugin-shell` requirement, now that Poetry requires it.
Updates the per-platform development environment requirements to have a Linux-specific section,
and update the MacOS section to include poetry-plugin-shell and golangci-lint
Moves the instructions on what to do before committing to the bottom of the document; its location
was confusing and didn't clarify what steps were to be taken in what order.
Includes the instruction that, for a first-time run, you must run `make migrate` and `make gen` or
the TS-API won't be built, and in turn the WebUI build would otherwise fail.
We still need instructions for Windows.
* Prettier had opinions.
* Format error: "macOS," not "MacOS"
* Fixed some typos and cleaned up some prompts.
* Fixed 'under windows' -> 'on Windows'
* providers/saml: fix invalid SAML Response when assertion and response are signed
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* validate against schema too
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* website/docs: policy for email whitelist: revamp
Updates the documentation to add an expression for source authentication. Then, it fixes the existing expression to work with authentik 2024.12.1 . Finally, the documentation page it-self is cleaned up and touched up.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/docs: policy for email whitelist: lowercase title
Sets the title back to being lowercase, oops
Signed-off-by: 4d62 <github-user@sdko.org>
* website/docs: customize: whatever-title-i-put-before: lint
Lints the code with prettier.
* remind me to not run npx prettier --write website/docs/
* suggestions
* Update website/docs/customize/policies/expression/whitelist_email.md
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
Signed-off-by: 4d62 <git@sdko.org>
* Update website/docs/customize/policies/expression/whitelist_email.md
Signed-off-by: Tana M Berry <tanamarieberry@yahoo.com>
---------
Signed-off-by: 4d62 <github-user@sdko.org>
Signed-off-by: 4d62 <git@sdko.org>
Signed-off-by: Tana M Berry <tanamarieberry@yahoo.com>
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
* Translate web/xliff/en.xlf in fi
100% translated source file: 'web/xliff/en.xlf'
on 'fi'.
* Translate web/xliff/en.xlf in fi
100% translated source file: 'web/xliff/en.xlf'
on 'fi'.
* Translate web/xliff/en.xlf in fi
100% translated source file: 'web/xliff/en.xlf'
on 'fi'.
* Translate web/xliff/en.xlf in fi
100% translated source file: 'web/xliff/en.xlf'
on 'fi'.
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* website/integrations/komga: add integration to sidebar
Adds the Komga integration to the sidebar
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: komga: main body
Rewrite previous documentation. Update YML to new format as per the example in the [advanced configuration documentation](https://komga.org/docs/installation/oauth2/#advanced-configuration). Just a few changes
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: komga: add user-name-attribute warning & change default
Updates the default `user-name-attribute` from `sub` to `preferred_username` (I would assume that's what users prefer if there's collaboration, idk) & adds a warning similar to what I did in that latest Mastodon MR.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: komga: fix
Fixes markdown for service link and updates `authentik.company` placeholder.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: komga: cleanup phrasing
Restructures the "authentik configuration" section and updates the first sentence of the "Komga configuration" section
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: komga: lint
Lints modified file with Prettier.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: komga: fix bold elements
Accidentally removed bold from step 1 of "authentik configuration". This fixes the issue.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: komga: remove hyphen from yml
Others don't have it so this one should not
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: komga: Address review comments
Addresses comments & applies suggestions from the first review round.
---------
Signed-off-by: 4d62 <github-user@sdko.org>
Each Cloudflare Access company has a subdomain of `cloudflareaccess.com`. As a result, `cloudflareaccess.com` should be hardcoded into the documentation and only the company subdomain changes.
Signed-off-by: 4d62 <github-user@sdko.org>
By hardcoding the version to 100 with `?ver=100`, the user will get an outdated introduction documentation page. Removing that parameter results in a redirection to version 120, which is more recent. Small QOL change.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: chronograf: init
Adds the version proposed in 8ac6761920/website/integrations/services/chronograf/index.md .
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: chronograf: start cleanup
Adds a `sidebar_label`, updates the start of the documentation to the follow the template, and updates `service.company` to `chronograf.company` in the preparation documentation.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: chronograf: add to sidebar
Adds the integration to the `sidebarsIntegration.js` file.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: chronograf: main body
Rewrite most of the documentation, cleanup unneeded bits, and update format.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: chronograf: finishing touches
This PR is now ready for review. Cleans up sentence structure, grammar, and visual stuff.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: chronograf: lint
Links modified file with prettier.
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: chronograf: add `USE_ID_TOKEN=true`
Adds `USE_ID_TOKEN=true` to the list of needed environment following this comment in the initial merge request: https://github.com/goauthentik/authentik/pull/7766#issuecomment-1951393510
Signed-off-by: 4d62 <github-user@sdko.org>
* website/integrations: chronograf: apply review suggestions
Applies suggestions from the first review round
---------
Signed-off-by: 4d62 <github-user@sdko.org>
Docs: New "Whats Up Docker" URL
"Whats up docker" got renamed and has a new github website.
Signed-off-by: RogueThorn <DunklerPhoenix@users.noreply.github.com>
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
* Translate locale/en/LC_MESSAGES/django.po in fi
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'fi'.
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* web: fix Flash of Unstructured Content while SearchSelect is loading from the backend
Provide an alternative, readonly, disabled, unindexed input object with the text "Loading...", to be
replaced with the _real_ input element after the content is loaded.
This provides the correct appearance and spacing so the content doesn't jiggle about between the
start of loading and the SearchSelect element being finalized. It was visually distracting and
unappealing.
* web: comment on state management in API layer, move file to point to correct component under test.
* web: test for flash of unstructured content
- Add a unit test to ensure the "Loading..." element is displayed correctly before data arrives
- Demo how to mock a `fetchObjects()` call in testing. Very cool.
- Make distinguishing rule sets for code, tests, and scripts in nightmare mode
- In SearchSelect, Move the `styles()` declaration to the top of the class for consistency.
- To test for the FLOUC issue in SearchSelect.
This is both an exercise in mocking @beryju's `fetchObjects()` protocol, and shows how we can unit
test generic components that render API objects.
* web: interim commit of the basic sortable & selectable table.
* web: added basic unit testing to API-free tables
Mostly these tests assert that the table renders and that the content we give it
is where we expect it to be after sorting. For select tables, it also asserts that
the overall value of the table is what we expect it to be when we click on a
single row, or on the "select all" button.
* web: finalize testing for tables
Includes documentation updates and better tests for select-table.
* Provide unit test accessibility to Firefox and Safari; wrap calls to manipulate test DOMs directly in a browser.exec call so they run in the proper context and be await()ed properly
* web: repeat is needed to make sure sub-elements move around correctly. Map does not do full tracking.
* web: Update HorizontalLightComponent to accurately convey its value "upwards."
* interim commit, gods, the CSS is finally working.
* web: update
Got the binding editor in. The tests complete. Removed sonarjs.
* web: fixed tests to complete.
* web: fixed round-trip between binding list and binding editor. Fixed 'delete'. TODO: Fix error reporting on home page, the edit button is ugly, and the height is off somehow, but I'm not yet sure how. I just know it bugs my eyes.
* core: add support to set policy bindings in transactional endpoint
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* improve permission checks
especially since we'll be using the wizard as default in the future, it shouldn't be superuser only
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* web: update api-less tables
- Replace `th` with `td` in `thead` components. Because Patternfly.
- Add @beryju's styling to the tables, which make it much better looking
* web: wizard for applications, now with bindings!
- Add policy bindings to the application wizard
- Restructures the Wizard base code.
- ak-wizard-steps holds the steps and listens for NavigationRequest events to move
from one step to the next.
- WizardStep is a base class (no component registration provided) that provides the *whole frame*,
not just the form. It receives the navigation content for the sidebar from ak-wizard-steps,
and provides the styling for the header, footer, sidebar, and main form. It has abstractions
for `buttons`, `renderMain()`, `handleButton()`, `handleEnable()`, in a section well-marked as
"Public API". Steps inherit from this class.
Conceptually:
- A wizard is a series of pages ("steps") with a distinct beginning and end, linked in a series,
to complete a task.
- Later steps in the series are inaccessible until an earlier steps has granted access to it.
- Access is predicated on the earlier step being complete and valid. The developer is responsible
for determining what "complete and valid" means.
- The series is visible, giving the customer a sense of how much effort is needed to complete the
task.
- A parent object maintains (and can modify as needed) the list of steps. It *can* maintain the
information being collected from the user. Alternatively, that information can be kept in each
step.
Details:
- Keeping with the Lit paradigm, "requests to change the system flow up, information changed by
valid requests flows down."
- The information flows up using events: WizardNavigation, WizardUpdate, WizardClose.
- The information flows down using properties.
- ak-application-wizard-main holds the list of steps, providing a unique slot name for each.
- It maintains the ApplicationWizardState object.
- ApplicationWizardStep inherits from WizardStep and provides:
- A means of extraction information from forms
- A convenience method for updating the ApplicationWizardState object, enabling future steps, and
navigating to a future step, in the correct order.
- A method for cleaning error from the error reporting mechanism as the user navigates from an
error-handling state.
- The title, description, and cancelability of the wizard.
- Steps:
- step: Handles the application. A good starting point for understanding the point of
the Wizard. Check the `handleButton()` method to understand how we enable or disable access to
future steps.
- provider-choice: Just a list. Shows validation without the form.
- provider: Uses a *very* esoteric Lit feature, `unsafeStaticTag`, which enables
the display to show anything that conforms to the expectations of ApplicationWizardProviderForm.
- ApplicationWizardProviderForm repeats some of the base of ApplicationWizardStep, but allows us
to provide multiple variants on a single form without having to create separate steps for each
form.
- The forms (`provider-for-ldap`, `provider-for-radius`) are therefore *just* the form and any
fetchers needed to populate it.
- bindings: Shows the table of bindings. Has a custom display for "This table is empty."
- edit-binding: Showcase for the `SearchSelectEZ` configuration format. Has an override on the
`handleButton` feature to figure out which binding is about to be overridden. Is also a
`.hidden` page; it doesn't show up on the navigation sidebar, as is only navigable-to by buttons
not associated with the button bar at the bottom.
- submit: Has a lot of machinery of state: Reviewing with errors, reviewing without errors,
running submission, and success. Uses `ts-pattern` a lot to make sure the state/request pairs
make sense.
The key insight is that, even though a wizard is a series in order, that order can't be simply
maintained in a list. The parent needs various strategies for swapping pages in and out of the
sequence, while still maintaining a coherent idea of "flow" and providing the visual cues the user
needs to feel confident that the work can be completed and completed quickly. The entire mechanism
for using an array and index to navigate, with index numbering, blocked the implementation of the
bindings pages.
One thing led to another. *Sigh* Really wish this hadn't been as much of a mess as it turned out.
The end result is pretty good, though. Definitely re-usable.
One important feature to note is that the wizard is *not* tied to the ModalButton object; it's
simply embedded in a modal as-needed. This allows us to use wizards in other places, such as just
being in a DIV, or just a page on its own.
* web: rollback dependabot "upgrade" that broke testing
Dependabot rolled us into WebdriverIO 9. While that's probably the
right thing to do, right now it breaks out end-to-end tests badly.
Dependabot's mucking with infrastructure should not be taken lightly,
especially in cases when the infrastructure is for DX, not UX, and
doesn't create a bigger attack surface on the running product.
* web: small fixes for wdio and lint
- Roll back another dependabot breaking change, this time to WebdriverIO
- Remove the redundant scripts wrapping ESLint for Precommit mode. Access to those modes is
available through the flags to the `./web/scripts/eslint.mjs` script.
- Remove SonarJS checks until SonarJS is ESLint 9 compatible.
- Minor nitpicking.
* web: not sure where all these getElement() additions come from; did I add them? Anyway, they were breaking the tests, they're a Wdio9-ism.
* package-lock.json update
* web: small fixes for wdio and lint
**PLEASE** Stop trying to upgrade WebdriverIO following Dependabot's instructions. The changes
between wdio8 and wdio9 are extensive enough to require a lot more manual intervention. The unit
tests fail in wdio 9, with the testbed driver Wdio uses to compile content to push to the browser
([vite](https://vitejs.dev) complaining:
```
2024-09-27T15:30:03.672Z WARN @wdio/browser-runner:vite: warning: Unrecognized default export in file /Users/ken/projects/dev/web/node_modules/@patternfly/patternfly/components/Dropdown/dropdown.css
Plugin: postcss-lit
File: /Users/ken/projects/dev/web/node_modules/@patternfly/patternfly/components/Dropdown/dropdown.css
[0-6] 2024-09-27T15:30:04.083Z INFO webdriver: BIDI COMMAND script.callFunction {"functionDeclaration":"<Function[976 bytes]>","awaitPromise":true,"arguments":[],"target":{"context":"8E608E6D13E355DFFC28112C236B73AF"}}
[0-6] Error: Test failed due to following error(s):
- ak-search-select.test.ts: The requested module '/src/common/styles/authentik.css' does not provide an export named 'default': SyntaxError: The requested module '/src/common/styles/authentik.css' does not provide an export named 'default'
```
So until we can figure out why the Vite installation isn't liking our CSS import scheme, we'll
have to soldier on with what we have. At least with Wdio 8, we get:
```
Spec Files: 7 passed, 7 total (100% completed) in 00:00:19
```
* Forgot to run prettier.
* web: small fixes for elements and forms
- provides a new utility, `_isSlug_`, used to verify a user input
- extends the ak-horizontal-component wrapper to have a stronger identity and available value
- updates the types that use the wrapper to be typed more strongly
- (Why) The above are used in the wizard to get and store values
- fixes a bug in SearchSelectEZ that broke the display if the user didn't supply a `groupBy` field.
- Adds `@wdio/types` to the package file so eslint is satisfied wdio builds correctly
- updates the end-to-end test to understand the revised button identities on the login page
- Running the end-to-end tests verifies that changes to the components listed above did not break
the semantics of those components.
* Prettier had opinions
* Fix the oauth2 provider test.
* web: fix oauth2 provider. Fix resolutions in package-lock.json
* Provide an error field for the form errors on the OAuth2 form. Unfortunately, this does not solve the general problem that we have a UX issue with which stage bindings to show where now that we've introduced the Invalidation Stage.
* web: Add InvalidationFlow to Radius Provider dialogues
## What
- Bugfix: adds the InvalidationFlow to the Radius Provider dialogues
- Repairs: `{"invalidation_flow":["This field is required."]}` message, which was *not* propagated
to the Notification.
- Nitpick: Pretties `?foo=${true}` expressions: `s/\?([^=]+)=\$\{true\}/\1/`
## Note
Yes, I know I'm going to have to do more magic when we harmonize the forms, and no, I didn't add the
Property Mappings to the wizard, and yes, I know I'm going to have pain with the *new* version of
the wizard. But this is a serious bug; you can't make Radius servers with *either* of the current
dialogues at the moment.
* web/admin: provide default invalidation flows for LDAP provider.
* admin/web: the default invalidation flows for LDAP and Radius are different from the others.
* Updating the SAML Wizard page to correspond to the provider page. *This is an intermediate fix to get the tests passing. It will probably be mooted with the next revision.*
* Making progress...
* web/admin: provider formectomy complete
* fix minor issues
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* custom ordering for provider types
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix css
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix missing PFBase causing wrong font
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix missing card for type select
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix padding on last page
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* add card to bindings
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* web/element/wizard: fix the CSS cascade so the modifications to the title display don't affect the wiard header.
* web/elements/wizard: fix logic on unavailable / available / current indicators in nav bar.
* Debugging code is not needed.
* web: small visual fixes
As requested by reviewers:
- Fixed the height to 75% of the viewport
- Put 1rem of whitespace between the hint label and the Wizard startup button.
* web: disable lint check for cAsEfUnNy AtTrIbUtE nAmEs.
* Apply suggestions from code review
Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Jens L. <jens@beryju.org>
* rework title
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* format
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Signed-off-by: Jens L. <jens@beryju.org>
Co-authored-by: Jens Langhammer <jens@goauthentik.io>
Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Translate locale/en/LC_MESSAGES/django.po in it
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'it'.
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
* Translate locale/en/LC_MESSAGES/django.po in es
100% translated source file: 'locale/en/LC_MESSAGES/django.po'
on 'es'.
---------
Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
Update Home Assistant integration docs
Extra care should be taken to proxy only /auth endpoint through Authentik.
Signed-off-by: Sergii Bogomolov <sergii@bogomolov.io>
Co-authored-by: Tana M Berry <tanamarieberry@yahoo.com>
* flows: add FlowPlan .to_redirect helper to redirect to flow executor
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* flows: add initial silent flow executor
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* more cleanup
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* refactor and add tests
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* how'd that happen
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix most tests
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* don't set allowed_silent_types if we cant transmit data via URL
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix stage not being set early enough
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix OAuthDeviceCodeFinishStage being marked able-to-be-skipped-to when it is not
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* fix more tests
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* dont skip on rac for now
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
* add support for SAML redirect
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Docker Compose Updates Healthcheck
The Healthcheck is not used for the depends_on option. This change ensures all dependencies are all ready to work before starting worker and server container.
Signed-off-by: Kaindl Network <82705244+kaindlnetwork@users.noreply.github.com>
* web: Add InvalidationFlow to Radius Provider dialogues
## What
- Bugfix: adds the InvalidationFlow to the Radius Provider dialogues
- Repairs: `{"invalidation_flow":["This field is required."]}` message, which was *not* propagated
to the Notification.
- Nitpick: Pretties `?foo=${true}` expressions: `s/\?([^=]+)=\$\{true\}/\1/`
## Note
Yes, I know I'm going to have to do more magic when we harmonize the forms, and no, I didn't add the
Property Mappings to the wizard, and yes, I know I'm going to have pain with the *new* version of
the wizard. But this is a serious bug; you can't make Radius servers with *either* of the current
dialogues at the moment.
* web: streamline CaptchaStage
# What
This commit:
1. Replaces the mass of `if () { if() { if() } }` with two state tables:
- One for `render()`
- One for `renderBody()`
2. Breaks each Captcha out into "interactive" and "executive" versions
3. Creates a handler table for each Captcha type
4. Replaces the `.forEach` expression with a `for` loop.
5. Move `updated` to the end of the class.
6. Make captchDocument and captchaFrame constructed-on-demand with a cache.
7. Remove a lot of `@state` handlers
8. Give IframeMessageEvent its own type.
9. Removed `this.scriptElement`
10. Replaced `window.removeEventListener` with an `AbortController()`
# Why
1. **Replacing `if` trees with a state table.** The logic of the original was really hard to follow.
With the state table, we can clearly see now that for the `render()` function, we care about the
Boolean flags `[embedded, challenged, interactive]` and have appropriate effects for each. With
`renderBody()`, we can see that we care about the Boolean flags `[hasError, challenged]`, and can
see the appropriate effects for each one.
2. (and 3.) **Breaking each Captcha clause into separate handlers.** Again, the logic was convoluted,
when what we really care about is "Does this captcha have a corresponding handler attached to
`window`, and, if so, should we run the interactive or executive version of it?" By putting all
of that into a table of `[name, challenge, execute]`, we can clearly see what's being handled
when.
4. **Replacing `foreach()` with `for()`**: [You cannot use a `forEach()` with async
expressions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#:~:text=does%20not%20wait%20for%20promises).
If you need asynchronous behavior in an ordered loop, `for()` is the safest way to handle it; if
you need asynchronous behavior from multiple promises, `Promise.allSettled(handlers.map())` is
the way to go.
I tried to tell if this function *meant* to run every handler it found simultaneously, or if it
meant to test them in order; I went with the second option, breaking and exiting the loop once a
handler had run successfully.
5. **Reordered the code a bit**. We're trying to evolve a pattern in our source code: styles,
properties, states, internal variables, constructor, getters & setters that are not `@property()`
or `@state()`, DOM-related lifecycle handlers, event handlers, pre-render lifecycle handlers,
renderers, and post-render lifecycle handlers. Helper methods (including subrenderers) go above
the method(s) they help.
6. **Constructing Elements on demand with a cache**. It is not guaranteed that we will actually need
either of those. Constructing them on demand with a cache is both performant and cleaner.
Likewise, I removed these from the Lit object's `state()` table, since they're constructed once
and never change over the lifetime of an instance of `ak-stage-captcha`.
9. **Remove `this.scriptElement`**: It was never referenced outside the one function where it was used.
10. **Remove `removeEventListener()`**: `AbortController()` is a bit more verbose for small event
handler collections, but it's considered much more reliable and much cleaner.
* Didn't save the extracted ListenerController.
* web: Add InvalidationFlow to Radius Provider dialogues
## What
- Bugfix: adds the InvalidationFlow to the Radius Provider dialogues
- Repairs: `{"invalidation_flow":["This field is required."]}` message, which was *not* propagated
to the Notification.
- Nitpick: Pretties `?foo=${true}` expressions: `s/\?([^=]+)=\$\{true\}/\1/`
## Note
Yes, I know I'm going to have to do more magic when we harmonize the forms, and no, I didn't add the
Property Mappings to the wizard, and yes, I know I'm going to have pain with the *new* version of
the wizard. But this is a serious bug; you can't make Radius servers with *either* of the current
dialogues at the moment.
* web: simplify `?inline` handler for Storybook
# What
- Revise the `?inline` handler for Storybook
- Enable headless test runs of E2E
- Reduce headless testing to single instances
# Why
## `?inline` handling
Vite-for-Storybook-for-Web-Components has a requirement that all component CSS imports be
suffixed with an `?inline` argument so Vite knows to put the CSS into the component and
not inject it into the document head.
This `?inline` argument is an implementation detail of Storybook. It would be irrelevant clutter
added to our codebase. We were using `rollup-plugin-modify` to find every instance of an
import-to-component, but the implementation was clunky and involved scanning the source code
manually.
`rollup-plugin-modify` version 3 has regular expressions and takes a function as an argument. This
allows us to generate the CSS import maps on-the-fly when Storybook is run, eliminating a fragile
build step. We can also remove the source code scanner for those imports.
## Changes to testing
It's just nice to be able to run the E2E tests headlessly, without them eating up your screen real
estate, flashing, or grabbing your mouse.
WebdriverIO's testing of Web Components is new and, as we've seen, a bit cranky. The WebdriverIO
team currently recommends not running the tests in parallel. We only have about 70 tests so far, and
they're fairly speedy, especially when you don't have to invoke a browser session for every test.
@ -2,7 +2,7 @@ authentik takes security very seriously. We follow the rules of[responsible di
## Independent audits and pentests
In May/June of 2023 [Cure53](https://cure53.de) conducted an audit and pentest. The [results](https://cure53.de/pentest-report_authentik.pdf) are published on the [Cure53 website](https://cure53.de/#publications-2023). For more details about authentik's response to the findings of the audit refer to [2023-06 Cure53 Code audit](https://goauthentik.io/docs/security/2023-06-cure53).
We are committed to engaging in regular pentesting and security audits of authentik. Defining and adhering to a cadence of external testing ensures a stronger probability that our code base, our features, and our architecture is as secure and non-exploitable as possible. For more details about specfic audits and pentests, refer to "Audits and Certificates" in our [Security documentation](https://docs.goauthentik.io/docs/security).
## What authentik classifies as a CVE
@ -20,8 +20,8 @@ Even if the issue is not a CVE, we still greatly appreciate your help in hardeni
{# Darkreader breaks the site regardless of theme as its not compatible with webcomponents, and we default to a dark theme based on preferred colour-scheme #}
<metaname="darkreader-lock">
<title>{% block title %}{% trans title|default:brand.branding_title %}{% endblock %}</title>
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.