3bf9cf681a
web/elements: Add light mode custom css handling ( #14944 )
...
* fix(ui): Add light mode custom css handling
Signed-off-by: CodeMax IT Solutions Pvt. Ltd. <137166088+cdmx1@users.noreply.github.com >
* Update Base.ts
Signed-off-by: CodeMax IT Solutions Pvt. Ltd. <137166088+cdmx1@users.noreply.github.com >
---------
Signed-off-by: CodeMax IT Solutions Pvt. Ltd. <137166088+cdmx1@users.noreply.github.com >
2025-06-11 15:03:05 +02:00
9ffb2443f6
web/admin: fix language in certificate import ( #14953 )
...
* 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/admin: fix language in certificate import modal
There are two buttons on the CertificateKeyPairList: "Create" and "Generate". This language is confusing, as it is unclear what the difference between those two options could be. The
second generates and stores a new key pair; the first only creates an entry in our database for an existing pair generated externally. After a short conversation, changing it to
"Import" seemed like a safe option.
\# What
\# Why
\# How
\# Designs
\# Test Steps
\# Other Notes
---------
Co-authored-by: Jens Langhammer <jens@goauthentik.io >
2025-06-10 18:49:15 +02:00
0ce017b77e
web/admin: show selected policy engine mode on bindings pages, allow setting it on sources ( #12963 )
...
* web/admin: show select policy engine mode on bindings pages, allow setting it in sources
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space >
* slight cleanup
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
---------
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space >
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
Co-authored-by: Jens Langhammer <jens@goauthentik.io >
2025-06-10 16:17:31 +02:00
734db4dee6
events: rework metrics endpoint ( #14934 )
...
* rework event volume
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* migrate more
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* migrate more
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* migrate more
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* the rest of the owl
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* client-side data padding
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* I love deleting code
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix clamping
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* chunk it
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix tests
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* add event-to-color map
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* sync colours
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* switch colours
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* heatmap?
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* Revert "heatmap?"
This reverts commit c1f549a18b .
* Revert "Revert "heatmap?""
This reverts commit 6d6175b96b .
* Revert "Revert "Revert "heatmap?"""
This reverts commit 3717903f12 .
* format
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
2025-06-10 02:36:09 +02:00
a844fb41d4
web/elements: fix dual select without sortBy ( #14977 )
...
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
2025-06-09 19:04:07 +02:00
652a32d968
stages/email: Only attach logo to email if used ( #14835 )
...
* Only attach logo to email if used
* Fix MIME logo attachment to adhere to standard
* format, fix web
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* not tuple
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
Co-authored-by: Jens Langhammer <jens@goauthentik.io >
2025-06-09 03:49:00 +02:00
a01bb551d0
web/standards: fix boolean attribute abuse ( #14662 )
...
* 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/maintenance: correct the usage of boolean (false) attributes
## What
Just cleaning up a bad habit; we have a lot of `?attribute=${true|false}` (or, more alarmingly,
`.attribute=${true|false}`. These should just be `attribute` or be missing; anything else is
unnecessary.
Where the attribute is `true` by default, no changes have been made; there are only a few of them,
and they require re-working of the logic to assist with the changes. Booleans should never be `true` by
default, and if you absolutely cannot find an alternative phrasing that makes having them be `false`
by default a valid choice, they should be `reflect: true` to make their presence visible to screen
readers and debuggers.
## Why
Removing non-standard HTML uses from web components matches our programming standards and is an
important step toward the Authentik Elements NPM package, as well as the Schema-Driven Forms update.
## Boring excessive detail.
Because there are literally hundreds of changes, I've documented the boring ones here.
Changes that do *not* meet the basic criteria of "made the component comply with the standards" are
commented in the PR.
Here are all the Boolean property declarations in the system, delta the ones that declare `= true`;
those are documented at the bottom of this commit, and are not addressed in this PR. This
information is included to guide your decision making. The second block, below, documents the
actual changes made to component declarations throughout our code. The third block, at the bottom,
documents changes not made due to logic and effort constraints.
```
components/ak-switch-input.ts:
@property({ type: Boolean })
checked: boolean = false;
--
components/ak-switch-input.ts:
@property({ type: Boolean })
required = false;
--
components/ak-file-input.ts:
@property({ type: Boolean })
required = false;
--
components/HorizontalLightComponent.ts:
@property({ type: Boolean })
required = false;
--
components/ak-multi-select.ts:
@property({ type: Boolean })
required = false;
--
elements/TreeView.ts:
@property({ type: Boolean })
open = false;
--
components/ak-status-label.ts:
@property({ type: Boolean })
good = false;
--
components/ak-status-label.ts:
@property({ type: Boolean })
compact = false;
--
elements/CodeMirror.ts:
@property({ type: Boolean })
readOnly = false;
--
elements/buttons/ModalButton.ts:
@property({ type: Boolean })
open = false;
--
elements/EmptyState.ts:
@property({ type: Boolean })
fullHeight = false;
--
elements/Tabs.ts:
@property({ type: Boolean })
vertical = false;
--
elements/ak-checkbox-group/ak-checkbox-group.ts:
@property({ type: Boolean })
required = false;
--
elements/Label.ts:
@property({ type: Boolean })
compact = false;
--
elements/forms/FormGroup.ts:
@property({ type: Boolean, reflect: true })
expanded = false;
--
elements/Expand.ts:
@property({ type: Boolean })
expanded = false;
--
elements/forms/HorizontalFormElement.ts:
@property({ type: Boolean })
required = false;
--
elements/forms/HorizontalFormElement.ts:
@property({ type: Boolean })
slugMode = false;
--
elements/forms/SearchSelect/ak-portal.ts:
@property({ type: Boolean, reflect: true })
open = false;
--
elements/Alert.ts:
@property({ type: Boolean })
inline = false;
--
elements/forms/SearchSelect/ak-search-select-view.ts:
@property({ type: Boolean, reflect: true })
open = false;
--
elements/forms/SearchSelect/ak-search-select-view.ts:
@property({ type: Boolean })
blankable = false;
--
elements/sidebar/SidebarItem.ts:
@property({ type: Boolean })
expanded = false;
--
admin/stages/StageWizard.ts:
@property({ type: Boolean })
showBindingPage = false;
--
elements/forms/FormElement.ts:
@property({ type: Boolean })
required = false;
--
admin/common/ak-flow-search/FlowSearch.ts:
@property({ type: Boolean })
required?: boolean = false;
--
admin/applications/ProviderSelectModal.ts:
@property({ type: Boolean })
backchannel = false;
--
elements/forms/SearchSelect/SearchSelect.ts:
@property({ type: Boolean })
blankable = false;
--
admin/applications/components/ak-provider-search-input.ts:
@property({ type: Boolean })
required = false;
--
admin/applications/components/ak-provider-search-input.ts:
@property({ type: Boolean })
blankable = false;
--
admin/applications/components/ak-backchannel-input.ts:
@property({ type: Boolean })
required = false;
--
admin/policies/PolicyWizard.ts:
@property({ type: Boolean })
showBindingPage = false;
```
The attribute 'required' is an HTML native, and is false by default.
Here are all the change pairs around HTML attrbutes:
```
$ git diff | rg -A 1 '\?(backchannel|blankable|checked|compact|expanded|fullHeight|good|inline|open|readOnly|required|showBindingPage|slugMode|vertical)\b'
- ?required=${true}
+ required
- <ak-provider-select-table ?backchannel=${true} .confirm=${this.confirm}>
+ <ak-provider-select-table backchannel .confirm=${this.confirm}>
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${false}
- ?required=${true}
+ required
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?blankable=${true}
+ blankable
- ?required=${true}
+ required
- ?blankable=${true}
+ blankable
- ?blankable=${true}
+ blankable
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- return html` <ak-form-element-horizontal label=${msg("Name")} name="name" ?required=${true}>
+ return html` <ak-form-element-horizontal label=${msg("Name")} name="name" required>
- ?required=${true}
+ required
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?blankable=${true}
+ blankable
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Severity")} ?required=${true} name="severity">
+ <ak-form-element-horizontal label=${msg("Severity")} required name="severity">
- ?showBindingPage=${true}
+ showBindingPage
- ?showBindingPage=${true}
+ showBindingPage
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Title")} ?required=${true} name="title">
+ <ak-form-element-horizontal label=${msg("Title")} required name="title">
- <ak-form-element-horizontal label=${msg("Slug")} ?required=${true} name="slug">
+ <ak-form-element-horizontal label=${msg("Slug")} required name="slug">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Stage")} ?required=${true} name="stage">
+ <ak-form-element-horizontal label=${msg("Stage")} required name="stage">
- <ak-form-element-horizontal label=${msg("Order")} ?required=${true} name="order">
+ <ak-form-element-horizontal label=${msg("Order")} required name="order">
- ?required=${true}
+ required
- ?required=${true}
+ required
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?blankable=${true}
+ blankable
- ?required=${true}
+ required
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Type")} ?required=${true} name="type">
+ <ak-form-element-horizontal label=${msg("Type")} required name="type">
- ?blankable=${true}
+ blankable
- <ak-label color=${PFColor.Green} ?compact=${true}>
+ <ak-label color=${PFColor.Green} compact>
- ? html`<ak-label color=${PFColor.Red} ?compact=${true}
+ ? html`<ak-label color=${PFColor.Red} compact
- : html`<ak-label color=${PFColor.Green} ?compact=${true}
+ : html`<ak-label color=${PFColor.Green} compact
- ? html`<ak-label color=${PFColor.Orange} ?compact=${true}>
+ ? html`<ak-label color=${PFColor.Orange} compact>
- : html`<ak-label color=${PFColor.Green} ?compact=${true}>
+ : html`<ak-label color=${PFColor.Green} compact>
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Docker URL")} ?required=${true} name="url">
+ <ak-form-element-horizontal label=${msg("Docker URL")} required name="url">
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?showBindingPage=${true}
+ showBindingPage
- ?showBindingPage=${true}
+ showBindingPage
- ?blankable=${true}
+ blankable
- ?blankable=${true}
+ blankable
- ?blankable=${true}
+ blankable
- <ak-form-element-horizontal label=${msg("Order")} ?required=${true} name="order">
+ <ak-form-element-horizontal label=${msg("Order")} required name="order">
- <ak-form-element-horizontal label=${msg("Timeout")} ?required=${true} name="timeout">
+ <ak-form-element-horizontal label=${msg("Timeout")} required name="timeout">
- ? html`<ak-label color=${PFColor.Green} ?compact=${true}>
+ ? html`<ak-label color=${PFColor.Green} compact>
- : html`<ak-label color=${PFColor.Orange} ?compact=${true}>
+ : html`<ak-label color=${PFColor.Orange} compact>
- return html`<ak-form-element-horizontal label=${msg("User")} ?required=${true} name="user">
+ return html`<ak-form-element-horizontal label=${msg("User")} required name="user">
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?blankable=${true}
+ blankable
- ?blankable=${true}
+ blankable
- ?blankable=${true}
+ blankable
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?readOnly=${true}
+ readOnly
- return html`<ak-empty-state loading ?fullHeight=${true}></ak-empty-state>`;
+ return html`<ak-empty-state loading fullHeight></ak-empty-state>`;
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-group ?expanded=${true}>
+ <ak-form-group expanded>
- ?blankable=${true}
+ blankable
- <ak-form-group ?expanded=${true}>
+ <ak-form-group expanded>
- ?required=${true}
+ required
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-group ?expanded=${true}>
+ <ak-form-group expanded>
- ?blankable=${true}
+ blankable
- <ak-form-group ?expanded=${true}>
+ <ak-form-group expanded>
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?blankable=${true}
+ blankable
- <ak-form-element-horizontal label=${msg("Name")} name="name" ?required=${true}>
+ <ak-form-element-horizontal label=${msg("Name")} name="name" required>
- <ak-form-element-horizontal label=${msg("Protocol")} ?required=${true} name="protocol">
+ <ak-form-element-horizontal label=${msg("Protocol")} required name="protocol">
- <ak-form-element-horizontal label=${msg("Host")} name="host" ?required=${true}>
+ <ak-form-element-horizontal label=${msg("Host")} name="host" required>
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${false}
- ?blankable=${true}
+ blankable
- ?blankable=${true}
+ blankable
- return html`<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html`<ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?readOnly=${true}
+ readOnly
- ?blankable=${true}
+ blankable
- return html`<ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html`<ak-form-element-horizontal label=${msg("Name")} required name="name">
- : html`<ak-label color=${PFColor.Orange} ?compact=${true}>
+ : html`<ak-label color=${PFColor.Orange} compact>
- <ak-label color=${PFColor.Grey} ?compact=${true}> ${msg("Built-in")}</ak-label>
+ <ak-label color=${PFColor.Grey} compact> ${msg("Built-in")}</ak-label>
- return html`<ak-empty-state loading ?fullHeight=${true}></ak-empty-state>`;
+ return html`<ak-empty-state loading fullHeight></ak-empty-state>`;
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-group ?expanded=${false}>
+ <ak-form-group>
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Slug")} ?required=${true} name="slug">
+ <ak-form-element-horizontal label=${msg("Slug")} required name="slug">
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-group ?expanded=${true}>
+ <ak-form-group expanded>
- ?blankable=${true}
+ blankable
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Slug")} ?required=${true} name="slug">
+ <ak-form-element-horizontal label=${msg("Slug")} required name="slug">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-group ?expanded=${true}>
+ <ak-form-group expanded>
- ?required=${true}
+ required
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Slug")} ?required=${true} name="slug">
+ <ak-form-element-horizontal label=${msg("Slug")} required name="slug">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-group ?expanded=${true}>
+ <ak-form-group expanded>
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Slug")} ?required=${true} name="slug">
+ <ak-form-element-horizontal label=${msg("Slug")} required name="slug">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-group ?expanded=${true}>
+ <ak-form-group expanded>
- ?required=${true}
+ required
- ?readOnly=${true}
+ readOnly
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Slug")} ?required=${true} name="slug">
+ <ak-form-element-horizontal label=${msg("Slug")} required name="slug">
- <ak-form-group ?expanded=${true}>
+ <ak-form-group expanded>
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?blankable=${true}
+ blankable
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("SMTP Host")} ?required=${true} name="host">
+ <ak-form-element-horizontal label=${msg("SMTP Host")} required name="host">
- <ak-form-element-horizontal label=${msg("SMTP Port")} ?required=${true} name="port">
+ <ak-form-element-horizontal label=${msg("SMTP Port")} required name="port">
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?blankable=${true}
+ blankable
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?blankable=${true}
+ blankable
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?blankable=${true}
+ blankable
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?blankable=${true}
+ blankable
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?blankable=${true}
+ blankable
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-alert ?inline=${true}>
+ <ak-alert inline>
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?blankable=${true}
+ blankable
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Mode")} ?required=${true} name="mode">
+ <ak-form-element-horizontal label=${msg("Mode")} required name="mode">
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("SMTP Host")} ?required=${true} name="host">
+ <ak-form-element-horizontal label=${msg("SMTP Host")} required name="host">
- <ak-form-element-horizontal label=${msg("SMTP Port")} ?required=${true} name="port">
+ <ak-form-element-horizontal label=${msg("SMTP Port")} required name="port">
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?slugMode=${true}
+ slugMode
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Expires")} ?required=${true} name="expires">
+ <ak-form-element-horizontal label=${msg("Expires")} required name="expires">
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?blankable=${true}
+ blankable
- ?required=${true}
+ required
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Field Key")} ?required=${true} name="fieldKey">
+ <ak-form-element-horizontal label=${msg("Field Key")} required name="fieldKey">
- <ak-form-element-horizontal label=${msg("Label")} ?required=${true} name="label">
+ <ak-form-element-horizontal label=${msg("Label")} required name="label">
- <ak-form-element-horizontal label=${msg("Type")} ?required=${true} name="type">
+ <ak-form-element-horizontal label=${msg("Type")} required name="type">
- <ak-form-element-horizontal label=${msg("Order")} ?required=${true} name="order">
+ <ak-form-element-horizontal label=${msg("Order")} required name="order">
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Source")} ?required=${true} name="source">
+ <ak-form-element-horizontal label=${msg("Source")} required name="source">
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
- <ak-alert ?inline=${true}>
+ <ak-alert inline>
- ?required=${true}
+ required
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?blankable=${true}
+ blankable
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("User")} ?required=${true} name="user">
+ <ak-form-element-horizontal label=${msg("User")} required name="user">
- <ak-form-element-horizontal label=${msg("Intent")} ?required=${true} name="intent">
+ <ak-form-element-horizontal label=${msg("Intent")} required name="intent">
- ?required=${true}
+ required
- <input class="pf-c-switch__input" type="checkbox" ?checked=${true} />
+ <input class="pf-c-switch__input" type="checkbox" checked />
- <input class="pf-c-switch__input" type="checkbox" ?checked=${true} />
+ <input class="pf-c-switch__input" type="checkbox" checked />
- ?required=${true}
+ required
- <ak-form-element-horizontal label=${msg("User type")} ?required=${true} name="type">
+ <ak-form-element-horizontal label=${msg("User type")} required name="type">
- <ak-form-element-horizontal label=${msg("Path")} ?required=${true} name="path">
+ <ak-form-element-horizontal label=${msg("Path")} required name="path">
- ?required=${true}
+ required
- ?required=${true}
+ required
- <ak-tabs pageIdentifier="userCredentialsTokens" ?vertical=${true}>
+ <ak-tabs pageIdentifier="userCredentialsTokens" vertical>
- <ak-status-label ?good=${true}></ak-status-label>
+ <ak-status-label good></ak-status-label>
- ?open=${true}
+ open
- ?blankable=${true}
+ blankable
- <ak-tabs ?vertical="${true}">
+ <ak-tabs vertical>
- return html` <ak-form-element-horizontal label=${msg("Name")} ?required=${true} name="name">
+ return html` <ak-form-element-horizontal label=${msg("Name")} required name="name">
- ?required=${true}
+ required
```
The following issues are the `true` by default Booleans. As mentioned, these are **not addressed** by this PR.
```
elements/table/Table.ts::
@property({ type: Boolean })
paginated = true;
elements/forms/ModalForm.ts::
@property({ type: Boolean })
closeAfterSuccessfulSubmit = true;
elements/forms/ModalForm.ts::
@property({ type: Boolean })
showSubmitButton = true;
elements/CodeMirror.ts::
@property({ type: Boolean })
parseValue = true;
elements/LoadingOverlay.ts::
@property({ type: Boolean })
loading = true;
admin/stages/authenticator_validate/AuthenticatorValidateStageForm.ts::
@property({ type: Boolean })
showConfigurationStages = true;
elements/user/sources/SourceSettings.ts::
@property({ type: Boolean })
canConnect = true;
admin/outposts/OutpostHealthSimple.ts::
@property({ attribute: false })
showVersion = true;
elements/wizard/Wizard.ts::
@property({ type: Boolean })
canCancel = true;
elements/wizard/Wizard.ts::
@property({ type: Boolean })
canBack = true;
```
* Prettier had opinions.
* Caught during code review.
* Merged incorrectly; not sure what went wrong, but this re-applies the removal of the syntax from the current LDAPSourceForm.ts from to this branch.
2025-06-06 23:06:25 +00:00
9a03bdeaf1
web/maintenance: remove writeOnly hacks from Form and HorizontalFormElement ( #14649 )
...
* 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/standards: use attribute naming scheme for attributes
## What
Renamed the 'inputHint' attribute to 'input-hint', because it is an attribute, not a property.
Properties are camelCased, but attributes are kebab-cased.
Updated all instances where this appears with the usual magic:
```
$ perl -pi.bak -e 's/inputHint="code"/input-hint="code"/' $(rg -l 'inputHint="code"')
```
This fix is in preparation for both the Patternfly 5 project and the Schema-Driven Forms project.
* web/maintenance: remove `writeOnly` hacks from Form and HorizontalFormElement
## What
The `writeOnly` hack substituted an obscuring, read-only field for secret keys and passwords that an
admin should never be able to see/read, only *write*, but allowed the user to click on and replace
the key or password. The hack performed this substitution within `HorizontalFormElement` and
dispersed a flag throughout the code to enforce it. Another hack within `Form` directed the API to
not update / write changes to that field if the field had never been activated.
This commit replaces the `writeOnly` hack with a pair of purpose-built components,
`ak-private-text-input` and `ak-private-textarea-input`, that perform the exact same functionality
but without having to involve the HorizontalFormElement, which really should just be layout and
generic functionality. It also replaces all the `writeOnly` hackery in Form with a simple
`doNotProcess` flag, which extends and genericizes this capability to any and all input fields.
The only major protocol change is that `?writeOnly` was a *positive* flag; you controlled it by
saying `this.instance !== undefined`; `?revealed` is a *positive* flog; you reveal the working input
field when `this.instance === undefined`.
It is not necessary to specify the monospace, autocomplete, and spell-check features; those are
enabled or disabled automatically when the `input-hint="code"` flag is passed.
## Why
Removing special cases from processing code is an important step toward the Authentik Elements NPM
package, as well as the Schema-Driven Forms update.
## Note
This is actually a very significant change; this is important functionality that I have hand-tested
quite a bit, but could wish for automated testing that also checks the database back-end to ensure
the fixes made write the keys and passwords as required. Checking the back-end directly is important
since these fields are never re-sent to the front-end after being saved!
Things like `placeholder`, `required`, and getting the `name`, `label` or `help` are all issues very
subject to Last-Line Effect, so give this the hairiest eyeball you've got, please.
* Found a few small things, like a missing import that might have broken something.
* web/admin: Update `private-text` field to pass new linting requirement.
\# What
\# Why
\# How
\# Designs
\# Test Steps
\# Other Notes
2025-06-06 15:11:49 -07:00
6b530ff764
web/admin: use attribute naming scheme for attributes ( #14644 )
...
web/standards: use attribute naming scheme for attributes
## What
Renamed the 'inputHint' attribute to 'input-hint', because it is an attribute, not a property.
Properties are camelCased, but attributes are kebab-cased.
Updated all instances where this appears with the usual magic:
```
$ perl -pi.bak -e 's/inputHint="code"/input-hint="code"/' $(rg -l 'inputHint="code"')
```
This fix is in preparation for both the Patternfly 5 project and the Schema-Driven Forms project.
* Revision: You almost certainly do NOT want every field to be reflected. Booleans are okay, especially for fields that may be changed internally but need to be read by screen-readers, sunch as 'hidden' or 'invalid'. But if a field is a string or a number and has a default value, you do not want it to be reflected.
2025-06-06 14:49:47 -07:00
ef5d3580e8
web/admin: make message container bottom aligned for admin interface ( #14816 )
...
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
2025-06-06 01:09:46 +02:00
d14b480926
web/user: fix user settings flow not loading ( #14911 )
...
* web/user: fix user settings flow not loading
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* unrelated fix: fix select caret color in dark theme
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space >
2025-06-05 23:26:06 +02:00
691a0d66ee
website/docs: add LDAP docs for forward deletion and memberUid ( #14814 )
...
* website/docs: add LDAP docs for forward deletion and `memberUid`
* reword LDAP docs
Co-authored-by: Dewi Roberts <dewi@goauthentik.io >
---------
Co-authored-by: Dewi Roberts <dewi@goauthentik.io >
2025-06-03 17:44:32 +02:00
fb3ec1f38b
web: minor design tweaks ( #14803 )
...
* fix spacing between header and page desc
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix icon alignment
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fallback text when we dont have a user yet
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
2025-06-01 21:01:43 +02:00
59e686c8b9
sources/ldap: add user_membership_attribute ( #14784 )
2025-05-30 18:34:13 +02:00
20ccabf3ec
web: Fix issue where dual select type is not specific. ( #14783 )
2025-05-30 11:30:47 +02:00
2591ed9840
web/flows: update default flow background ( #14769 )
...
* web/flows: update default flow background
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* Optimised images with calibre/image-actions
* update image
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* Optimised images with calibre/image-actions
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
Co-authored-by: authentik-automation[bot] <135050075+authentik-automation[bot]@users.noreply.github.com>
2025-05-28 19:05:36 +02:00
c4bb19051d
sources/ldap: add forward deletion option ( #14718 )
...
* sources/ldap: add forward deletion option
* remove unnecessary `blank=True`
* clarify `validated_by` `help_text`
* add indices to `validated_by`
* factor out `get_identifier` everywhere and `get_attributes`
I don't know what that additional `in` check is for, but I'm not about
to find out.
* add tests for known good user and group
* fixup! add tests for known good user and group
* fixup! add tests for known good user and group
2025-05-28 13:22:59 +02:00
2d9eab3f60
web/admin: fix permissions modal button missing for PolicyBindings and FlowStageBindings ( #14619 )
...
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
Co-authored-by: Simonyi Gergő <gergo@goauthentik.io >
2025-05-28 13:08:18 +02:00
fa66195619
web: Controller refinements, error handling ( #14700 )
...
* web: Partial fix for issue where config is not consistently available.
* web: Fix issues surrounding controller readiness.
* web: Catch abort errors when originating when wrapped by OpenAPI or Sentry.
* web: Fix color on dark mode.
---------
Co-authored-by: Simonyi Gergő <gergo@goauthentik.io >
2025-05-28 07:08:09 -04:00
c28b65a3f2
Web: Controllers cleanup ( #14616 )
...
* web: Fix issues surrounding availability of controllers during init.
web: Fix edgecase where flow does not have brand.
* web: Fix import path.
* web: Clean up mixin/controller paths.
* web: Prepare for consistent import styling.
- Prep for Storybook fixes.
* web: Update MDX types.
* web: Fix issues surrounding async imports, MDX typing, relative paths.
* web: Format. Clarify.
* web: Group module types.
2025-05-26 07:06:14 -04:00
5fed8ca575
web: Type Tidy ( #14647 )
...
* web: Update Sentry types.
* web: Update MDX types.
* web: Format. Remove unused script.
* web: Clean up test types.
* web: Fix label in dark mode.
2025-05-23 17:31:59 +02:00
dff60ee9fb
web: fix lint ( #14665 )
...
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space >
2025-05-23 13:47:10 +02:00
cc6fcd831d
web: Fix missing Enterprise sidebar entries. ( #14615 )
2025-05-22 17:00:28 +02:00
614740a4ff
web/NPM Workspaces: Prep ESBuild plugin for publish. ( #14552 )
...
* web: Prep ESBuild plugin for publish.
* prettier-config: Update deps.
* eslint-config: Update deps.
* docusaurus-config: Update deps.
* docs: Update deps.
* docs: Enable linter.
* docs: Lint.
* web/sfe: Clean up types. Prep for monorepo.
* esbuild-plugin-live-reload: Update deps.
* web: Tidy ESLint, script commands.
* web: Fix logs.
* web: Lint.
* web: Split compile check from cached version.
2025-05-21 16:09:33 -04:00
1c5e906a3e
web/NPM Workspaces: ESbuild version cleanup ( #14541 )
...
* web: Check JS files. Add types.
* web: Fix issues surrounding Vite/ESBuild types.
* web: Clean up version constants. Tidy types
* web: Clean up docs, types.
* web: Clean up package paths.
* web: (ESLint) no-lonely-if
* web: Render slot before navbar.
* web: Fix line-height alignment.
* web: Truncate long headers.
* web: Clean up page header declarations. Add story. Update paths.
* web: Ignore out directory.
* web: Lint Lit.
* web: Use private alias.
* web: Fix implicit CJS mode.
* web: Update deps.
* web: await all imports.
2025-05-20 02:11:18 +02:00
65517f3b7f
enterprise/stages: Add MTLS stage ( #14296 )
...
* prepare client auth with inbuilt server
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* introduce better IPC auth
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* init
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* start stage
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* only allow trusted proxies to set MTLS headers
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* more stage progress
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* dont fail if ipc_key doesn't exist
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* actually install app
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* add some tests
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* update API
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix unquote
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix int serial number not jsonable
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* init ui
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* add UI
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* unrelated: fix git pull in makefile
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix parse helper
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* add test for outpost
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* more tests and improvements
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* improve labels
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* add support for multiple CAs on brand
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* add support for multiple CAs to MTLS stage
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* dont log ipcuser secret views
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix go mod
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
2025-05-19 22:48:17 +02:00
40f598f3f1
web: (ESLint) No else return ( #14558 )
...
web: (ESLint) no-else-return.
2025-05-19 19:34:51 +02:00
b72d0e84c9
web: (ESLint) Use dot notation. ( #14557 )
2025-05-19 19:33:52 +02:00
d97297e0ce
web: (ESLint) Consistent use of triple-equals. ( #14554 )
...
web: Consistent use of triple-equals.
2025-05-19 13:25:11 -04:00
1a80353bc0
web: fix description for signing responses in SAML provider ( #14573 )
2025-05-19 14:56:19 +00:00
8ca09a9ece
web: Fix issue where Storybook cannot resolve styles. ( #14553 )
...
* web: Fix issue where Storybook cannot resolve styles.
* separate sentry config and middleware to prevent circular import
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
Co-authored-by: Jens Langhammer <jens@goauthentik.io >
2025-05-19 13:37:30 +02:00
75a0ac9588
release: 2025.4.1 ( #14527 )
...
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
# Conflicts:
# package.json
2025-05-15 20:12:41 +02:00
0cf6bff93c
tests/e2e: add test for authentication flow in compatibility mode ( #14392 )
...
* tests/e2e: add test for authentication flow in compatibility mode
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* web: Add prefix class to CSS for easier debugging of constructed stylesheets.
- Use CSS variables for highlighter.
* web: Fix issue where MDX components apply styles out of order.
* web: Fix hover color.
* web: Fix CSS module types. Clean up globals.
* web: Fix issues surrounding availability of shadow root in compatibility mode.
* web: Fix typo.
* web: Partial fixes for storybook dark theme.
* web: Fix overflow.
* web: Fix issues surrounding competing interfaces attempting to apply styles.
* fix padding in ak-alert in. markdown
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* web: Minimize use of sub-module exports.
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
Co-authored-by: Teffen Ellis <teffen@sister.software >
2025-05-15 16:51:11 +02:00
e40c5ac617
web/admin: Dual select state management, custom event dispatching. ( #14490 )
...
* web/admin: Fix issues surrounding dual select state management.
* web: Fix nested path.
* web: Use PatternFly variable.
2025-05-15 14:47:47 +02:00
ca96b27825
web/admin: Fix sidebar toggle synchronization. ( #14487 )
...
* web: Fix issue where resizing from tablet or smaller viewport desyncs the sidebar.
* web: Fix issue where focus style overrides hover state style.
2025-05-14 17:19:22 +02:00
f11ba94603
root: improve sentry distributed tracing ( #14468 )
...
* core: include all sentry headers
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* remove spotlight patch we dont need anymore
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* always trace in debug
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* init sentry earlier
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* re-add light interface
https://github.com/goauthentik/authentik/pull/14331
removes 2 unneeded API calls
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* sentry integrated router
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* use new Sentry middleware to propagate headers
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* fix missing baggage
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* cleanup logs
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
* use sanitized URLs for logging/tracing
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
2025-05-11 02:40:31 +02:00
7d2aa43364
Revert "web/admin: fix enterprise menu display" ( #14458 )
...
Revert "web/admin: fix enterprise menu display (#14447 )"
This reverts commit 0611eea0e7 .
2025-05-10 18:26:07 +02:00
0611eea0e7
web/admin: fix enterprise menu display ( #14447 )
...
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
2025-05-10 00:54:33 +02:00
be9ae7d4f7
web: cleanup/loading attribute always true ( #14288 )
...
* 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: remove Lit syntax from always true attributes
## What
Replaces instances of `?loading=${true}` and `?loading="${true}"` with `loading`
## Why
The Lit syntax is completely unnecessary when the attribute's state is constant, and it's a few
(just a few) extra CPU cycles for Lit to process that.
More to the point, it annoys me.
## How
```
$ perl -pi.bak -e 's/\?loading=\$\{true\}/loading/' $(rg -l '\?loading=\$\{true\}')
$ find . -name '*.bak' -exec rm {} \;
$ perl -pi.bak -e 's/\?loading="\$\{true\}"/loading/' $(rg -l '\?loading="\$\{true\}"')
$ find . -name '*.bak' -exec rm {} \;
```
* Prettier had opinions
* Trigger Build
2025-05-06 08:49:48 -07:00
f70635c295
web: Clean up browser-only module imports that crash WebDriverIO. ( #14330 )
...
* web: Clean up browser-only module imports that crash WebDriverIO.
* web: Clarify slug format output.
2025-05-02 20:04:05 -04:00
70d60c7ab2
web: Use monorepo package utilities to build packages ( #14159 )
...
* web: Format live reload package.
* web: Format package.json.
* web: Revise globals.
* web: Build entrypoints with a single ESBuild context. Clean up entrypoints.
* web: WIP Prepare monorepo package for use.
* web: Update build paths. Fix types.
* web: WIP Add monorepo dependency.
* web: Use monorepo utilities when building.
* web: Fix issue where linters collide. Update ignore file.
- Remove unused sort override for polyfills.
* core: Prepare repo for NPM workspaces.
2025-05-02 19:48:19 -04:00
61a26c02b7
Revert-revert: Safari fixes ( #14331 )
...
* Reapply "web: Safari fixes merge branch (#14181 )"
This reverts commit a41d45834c .
* web: Fix brand preference order. Adjust header height.
2025-05-02 21:26:40 +02:00
44fb59eb18
rbac: fix RoleObjectPermissionTable not showing add_user_to_group ( #14312 )
...
fix RoleObjectPermissionTable not showing `add_user_to_group`
2025-05-02 17:42:19 +02:00
e76d388ce4
release: 2025.4.0 ( #14299 )
...
Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space >
2025-04-30 13:15:38 +00:00
3c6b8b10e5
web: fix bug that was causing charts to be too tall ( #14253 )
...
* 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 bug that was causing charts to be too tall
This removes the "aspect-ratio" declaration from the Charts CSS rules. That declaration
was interacting badly with the charts' own internal tools for manually setting the size
of the canvas, causing the chart to be too tall or take up too much space when one had
a particularly wide monitor.
\# What
\# Why
\# How
\# Designs
\# Test Steps
\# Other Notes
2025-04-25 13:00:02 -07:00
28869858b5
web/admin: prevent default logo flashing in admin interface ( #13960 )
...
* web: elements: SidebarBrand: prevent logo flashing in admin interface
When using a custom SVG file (or mabye other types, TBH I didn't check, I should) for a branded logo, the logo would flash the stock authentik logo for a moment before the custom logo appears on the Admin interface.
This was happening because the brand configuration was being loaded asynchronously through the context provider, causing a brief moment where the default logo was shown.
Closes https://github.com/goauthentik/authentik/issues/3228
Closes https://github.com/goauthentik/authentik/issues/13739
* use globalAK
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
---------
Signed-off-by: Jens Langhammer <jens@goauthentik.io >
Co-authored-by: Jens Langhammer <jens@goauthentik.io >
2025-04-25 11:25:40 +02:00
337956672f
Revert "web: Safari fixes merge branch ( #14181 )" ( #14211 )
2025-04-24 14:00:29 -04:00
cf160f800d
web: Safari fixes merge branch ( #14181 )
...
* web/admin: Fix layout centering. Adjust theming.
* web: Fix issue where references to Lit SSR break page styles.
* web: Fix issues surrounding color scheme/theme mixup in UI.
2025-04-24 10:16:04 -04:00
4165a0a6b2
web: update default flow background ( #14115 )
...
Co-authored-by: authentik-automation[bot] <135050075+authentik-automation[bot]@users.noreply.github.com>
2025-04-22 15:02:10 +02:00
723dccdae3
enterprise/policies: Add Password Uniqueness History Policy ( #13453 )
...
Co-authored-by: David Gunter <david@davidgunter.ca >
Co-authored-by: Jens Langhammer <jens@goauthentik.io >
Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space >
2025-04-22 14:39:07 +02:00