diff --git a/web/src/elements/sidebar/Sidebar.ts b/web/src/elements/sidebar/Sidebar.ts index 33a6e99ec..b1e03cc05 100644 --- a/web/src/elements/sidebar/Sidebar.ts +++ b/web/src/elements/sidebar/Sidebar.ts @@ -1,98 +1,14 @@ -import { css, CSSResult, customElement, html, LitElement, property, TemplateResult } from "lit-element"; +import { css, CSSResult, customElement, html, LitElement, TemplateResult } from "lit-element"; import PFPage from "@patternfly/patternfly/components/Page/page.css"; import PFNav from "@patternfly/patternfly/components/Nav/nav.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; import AKGlobal from "../../authentik.css"; -import { until } from "lit-html/directives/until"; - import "./SidebarBrand"; import "./SidebarUser"; -import { ROUTE_SEPARATOR } from "../../constants"; - -export class SidebarItem { - name: string; - path?: string; - - _children: SidebarItem[]; - condition: () => Promise; - - activeMatchers: RegExp[]; - - constructor(name: string, path?: string) { - this.name = name; - this.path = path; - this._children = []; - this.condition = async () => true; - this.activeMatchers = []; - if (this.path) { - this.activeMatchers.push(new RegExp(`^${this.path}$`)); - } - } - - children(...children: SidebarItem[]): SidebarItem { - this._children = children; - return this; - } - - activeWhen(...regexp: string[]): SidebarItem { - regexp.forEach(r => { - this.activeMatchers.push(new RegExp(r)); - }); - return this; - } - - when(condition: () => Promise): SidebarItem { - this.condition = condition; - return this; - } - - hasChildren(): boolean { - return this._children.length > 0; - } - - isActive(activePath: string): boolean { - if (!this.path) { - return false; - } - return this.activeMatchers.some(v => { - const match = v.exec(activePath); - if (match !== null) { - return true; - } - }); - } - - async render(activePath: string): Promise { - if (this.condition) { - const result = await this.condition(); - if (!result) { - return html``; - } - } - if (!this.path) { - return html`
-

${this.name}

-
    - ${this._children.map((i) => until(i.render(activePath), html``))} -
-
`; - } - return html`
  • - - ${this.name} - -
  • `; - } -} @customElement("ak-sidebar") export class Sidebar extends LitElement { - @property({attribute: false}) - items: SidebarItem[] = []; - - @property() - activePath: string; static get styles(): CSSResult[] { return [ @@ -145,19 +61,11 @@ export class Sidebar extends LitElement { ]; } - constructor() { - super(); - this.activePath = window.location.hash.slice(1, Infinity).split(ROUTE_SEPARATOR)[0]; - window.addEventListener("hashchange", () => { - this.activePath = window.location.hash.slice(1, Infinity).split(ROUTE_SEPARATOR)[0]; - }); - } - render(): TemplateResult { return html``; diff --git a/web/src/elements/sidebar/SidebarItem.ts b/web/src/elements/sidebar/SidebarItem.ts new file mode 100644 index 000000000..27d4b6ee1 --- /dev/null +++ b/web/src/elements/sidebar/SidebarItem.ts @@ -0,0 +1,167 @@ +import { css, CSSResult, customElement, LitElement, property } from "lit-element"; +import PFPage from "@patternfly/patternfly/components/Page/page.css"; +import PFNav from "@patternfly/patternfly/components/Nav/nav.css"; +import PFBase from "@patternfly/patternfly/patternfly-base.css"; +import AKGlobal from "../../authentik.css"; +import { TemplateResult, html } from "lit-html"; +import { until } from "lit-html/directives/until"; +import { ROUTE_SEPARATOR } from "../../constants"; + +@customElement("ak-sidebar-item") +export class SidebarItem extends LitElement { + + static get styles(): CSSResult[] { + return [ + PFBase, + PFPage, + PFNav, + AKGlobal, + css` + :host { + z-index: 100; + box-shadow: none !important; + } + .pf-c-nav__link.pf-m-current::after, + .pf-c-nav__link.pf-m-current:hover::after, + .pf-c-nav__item.pf-m-current:not(.pf-m-expanded) .pf-c-nav__link::after { + --pf-c-nav__link--m-current--after--BorderColor: #fd4b2d; + } + + .pf-c-nav__section + .pf-c-nav__section { + --pf-c-nav__section--section--MarginTop: var(--pf-global--spacer--sm); + } + .pf-c-nav__list .sidebar-brand { + max-height: 82px; + margin-bottom: -0.5rem; + } + nav { + display: flex; + flex-direction: column; + max-height: 100vh; + height: 100%; + overflow-y: hidden; + } + .pf-c-nav__list { + flex-grow: 1; + overflow-y: auto; + } + + .pf-c-nav__link { + --pf-c-nav__link--PaddingTop: 0.5rem; + --pf-c-nav__link--PaddingRight: 0.5rem; + --pf-c-nav__link--PaddingBottom: 0.5rem; + } + .pf-c-nav__section-title { + font-size: 12px; + } + .pf-c-nav__item { + --pf-c-nav__item--MarginTop: 0px; + } + `, + ]; + } + + @property() + path?: string; + + @property({ attribute: false }) + condition: () => Promise = async () => true; + + activeMatchers: RegExp[] = []; + + @property({ type: Boolean }) + expanded = false; + + @property({ type: Boolean }) + isActive = false; + + parent?: SidebarItem; + + get childItems(): SidebarItem[] { + const children = Array.from(this.querySelectorAll("ak-sidebar-item") || []); + children.forEach(child => child.parent = this); + return children; + } + + @property({attribute: false}) + set activeWhen(regexp: string[]) { + regexp.forEach(r => { + this.activeMatchers.push(new RegExp(r)); + }); + } + + firstUpdated(): void { + this.onHashChange(); + window.addEventListener("hashchange", () => this.onHashChange()); + } + + onHashChange(): void { + const activePath = window.location.hash.slice(1, Infinity).split(ROUTE_SEPARATOR)[0]; + this.childItems.forEach(item => { + this.expandParentRecursive(activePath, item); + }); + this.isActive = this.matchesPath(activePath); + } + + private matchesPath(path: string): boolean { + if (!this.path) { + return false; + } + if (this.path) { + if (new RegExp(`^${this.path}$`).exec(path)) { + return true; + } + } + return this.activeMatchers.some(v => { + const match = v.exec(path); + if (match !== null) { + return true; + } + }); + } + + expandParentRecursive(activePath: string, item: SidebarItem): void { + if (item.matchesPath(activePath) && item.parent) { + item.parent.expanded = true; + this.requestUpdate(); + } + item.childItems.forEach(i => this.expandParentRecursive(activePath, i)); + } + + render(): TemplateResult { + return html`${until(this.renderInner())}`; + } + + async renderInner(): Promise { + if (this.condition) { + const result = await this.condition(); + if (!result) { + return html``; + } + } + if (this.childItems.length > 0) { + return html`
  • + +
    +
      + +
    +
    +
  • `; + } + return html`
  • + + + +
  • `; + } +} diff --git a/web/src/interfaces/AdminInterface.ts b/web/src/interfaces/AdminInterface.ts index 23904016b..a9e7f4f9f 100644 --- a/web/src/interfaces/AdminInterface.ts +++ b/web/src/interfaces/AdminInterface.ts @@ -1,73 +1,112 @@ import "../elements/messages/MessageContainer"; -import { customElement } from "lit-element"; +import { customElement, html, TemplateResult } from "lit-element"; import { me } from "../api/Users"; -import { SidebarItem } from "../elements/sidebar/Sidebar"; import { ID_REGEX, SLUG_REGEX, UUID_REGEX } from "../elements/router/Route"; import { Interface } from "./Interface"; import "./locale"; +import "../elements/sidebar/SidebarItem"; import { t } from "@lingui/macro"; -export const SIDEBAR_ITEMS: SidebarItem[] = [ - new SidebarItem(t`Library`, "/library"), - new SidebarItem(t`Monitor`).children( - new SidebarItem(t`Overview`, "/administration/overview"), - new SidebarItem(t`System Tasks`, "/administration/system-tasks"), - ).when((): Promise => { - return me().then(u => u.user.isSuperuser || false); - }), - new SidebarItem(t`Resources`).children( - new SidebarItem(t`Applications`, "/core/applications").activeWhen( - `^/core/applications/(?${SLUG_REGEX})$` - ), - new SidebarItem(t`Sources`, "/core/sources").activeWhen( - `^/core/sources/(?${SLUG_REGEX})$`, - ), - new SidebarItem(t`Providers`, "/core/providers").activeWhen( - `^/core/providers/(?${ID_REGEX})$`, - ), - new SidebarItem(t`Outposts`, "/outpost/outposts"), - new SidebarItem(t`Outpost Service Connections`, "/outpost/service-connections"), - ).when((): Promise => { - return me().then(u => u.user.isSuperuser || false); - }), - new SidebarItem(t`Events`).children( - new SidebarItem(t`Logs`, "/events/log").activeWhen( - `^/events/log/(?${UUID_REGEX})$` - ), - new SidebarItem(t`Notification Rules`, "/events/rules"), - new SidebarItem(t`Notification Transports`, "/events/transports"), - ).when((): Promise => { - return me().then(u => u.user.isSuperuser || false); - }), - new SidebarItem(t`Customisation`).children( - new SidebarItem(t`Policies`, "/policy/policies"), - new SidebarItem(t`Property Mappings`, "/core/property-mappings"), - ).when((): Promise => { - return me().then(u => u.user.isSuperuser || false); - }), - new SidebarItem(t`Flows`).children( - new SidebarItem(t`Flows`, "/flow/flows").activeWhen(`^/flow/flows/(?${SLUG_REGEX})$`), - new SidebarItem(t`Stages`, "/flow/stages"), - new SidebarItem(t`Prompts`, "/flow/stages/prompts"), - new SidebarItem(t`Invitations`, "/flow/stages/invitations"), - ).when((): Promise => { - return me().then(u => u.user.isSuperuser || false); - }), - new SidebarItem(t`Identity & Cryptography`).children( - new SidebarItem(t`Users`, "/identity/users").activeWhen(`^/identity/users/(?${ID_REGEX})$`), - new SidebarItem(t`Groups`, "/identity/groups"), - new SidebarItem(t`Certificates`, "/crypto/certificates"), - new SidebarItem(t`Tokens`, "/core/tokens"), - ).when((): Promise => { - return me().then(u => u.user.isSuperuser || false); - }), -]; - @customElement("ak-interface-admin") export class AdminInterface extends Interface { - get sidebar(): SidebarItem[] { - return SIDEBAR_ITEMS; + renderSidebarItems(): TemplateResult { + const superUserCondition = () => { + return me().then(u => u.user.isSuperuser || false); + }; + return html` + + ${t`Library`} + + + ${t`Monitor`} + + ${t`Overview`} + + + ${t`System Tasks`} + + + + ${t`Resources`} + ${SLUG_REGEX})$`]}> + ${t`Applications`} + + ${SLUG_REGEX})$`]}> + ${t`Sources`} + + ${ID_REGEX})$`]}> + ${t`Providers`} + + + + ${t`Outposts`} + + ${t`Outposts`} + + + ${t`Service Connections`} + + + + ${t`Events`} + ${UUID_REGEX})$`]}> + ${t`Logs`} + + + ${t`Notification Rules`} + + + ${t`Notification Transports`} + + + + ${t`Customisation`} + + ${t`Policies`} + + + ${t`Property Mappings`} + + + + ${t`Flows`} + ${SLUG_REGEX})$`]}> + ${t`Flows`} + + + ${t`Stages`} + + + ${t`Prompts`} + + + ${t`Invitations`} + + + + ${t`Identity & Cryptography`} + ${ID_REGEX})$`]}> + ${t`Users`} + + + ${t`Groups`} + + + ${t`Certificates`} + + + ${t`Tokens`} + + + `; } } diff --git a/web/src/interfaces/Interface.ts b/web/src/interfaces/Interface.ts index 9c436a0cb..e4c15fbaa 100644 --- a/web/src/interfaces/Interface.ts +++ b/web/src/interfaces/Interface.ts @@ -1,5 +1,4 @@ import { css, CSSResult, html, LitElement, property, TemplateResult } from "lit-element"; -import { SidebarItem } from "../elements/sidebar/Sidebar"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; import PFPage from "@patternfly/patternfly/components/Page/page.css"; import PFButton from "@patternfly/patternfly/components/Button/button.css"; @@ -9,6 +8,7 @@ import "../elements/router/RouterOutlet"; import "../elements/messages/MessageContainer"; import "../elements/notifications/NotificationDrawer"; import "../elements/Banner"; +import "../elements/sidebar/Sidebar"; import { until } from "lit-html/directives/until"; import { me } from "../api/Users"; import { t } from "@lingui/macro"; @@ -23,8 +23,6 @@ export abstract class Interface extends LitElement { @property({type: Boolean}) notificationOpen = false; - abstract get sidebar(): SidebarItem[]; - static get styles(): CSSResult[] { return [PFBase, PFPage, PFButton, PFDrawer, css` .pf-c-page__main, .pf-c-drawer__content, .pf-c-page__drawer { @@ -47,6 +45,10 @@ export abstract class Interface extends LitElement { }); } + renderSidebarItems(): TemplateResult { + return html``; + } + render(): TemplateResult { return html` ${until(new AdminApi(DEFAULT_CONFIG).adminVersionList().then(version => { @@ -72,7 +74,8 @@ export abstract class Interface extends LitElement { return html``; }))}
    - + + ${this.renderSidebarItems()}
    diff --git a/web/src/locales/en.po b/web/src/locales/en.po index 2a5e043fa..f96a0a9e3 100644 --- a/web/src/locales/en.po +++ b/web/src/locales/en.po @@ -32,7 +32,7 @@ msgstr "6 digits, widely compatible" msgid "8 digits, not compatible with apps like Google Authenticator" msgstr "8 digits, not compatible with apps like Google Authenticator" -#: src/interfaces/Interface.ts:50 +#: src/interfaces/Interface.ts:54 msgid "A newer version of the frontend is available." msgstr "A newer version of the frontend is available." @@ -184,7 +184,7 @@ msgstr "App" #: src/elements/user/UserConsentList.ts:29 #: src/pages/admin-overview/TopApplicationsTable.ts:42 #: src/pages/applications/ApplicationListPage.ts:105 -#: src/pages/providers/ProviderListPage.ts:53 +#: src/pages/providers/ProviderListPage.ts:54 msgid "Application" msgstr "Application" @@ -200,7 +200,7 @@ msgstr "Application requires following permissions" msgid "Application's display Name." msgstr "Application's display Name." -#: src/interfaces/AdminInterface.ts:20 +#: src/interfaces/AdminInterface.ts:38 #: src/pages/LibraryPage.ts:93 #: src/pages/LibraryPage.ts:130 #: src/pages/applications/ApplicationListPage.ts:28 @@ -251,7 +251,8 @@ msgstr "Assertion valid not on or after" msgid "Assertions is empty" msgstr "Assertions is empty" -#: src/pages/providers/ProviderListPage.ts:65 +#: src/pages/providers/ProviderListPage.ts:66 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:72 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:81 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:72 #: src/pages/providers/saml/SAMLProviderViewPage.ts:74 @@ -289,7 +290,7 @@ msgstr "Authenticating with Plex..." msgid "Authentication" msgstr "Authentication" -#: src/pages/sources/oauth/OAuthSourceForm.ts:211 +#: src/pages/sources/oauth/OAuthSourceForm.ts:212 #: src/pages/sources/plex/PlexSourceForm.ts:171 #: src/pages/sources/saml/SAMLSourceForm.ts:245 msgid "Authentication flow" @@ -353,6 +354,8 @@ msgstr "Backup finished with warnings." msgid "Backup status" msgstr "Backup status" +#: src/pages/providers/ldap/LDAPProviderForm.ts:97 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:82 #: src/pages/sources/ldap/LDAPSourceForm.ts:131 #: src/pages/sources/ldap/LDAPSourceViewPage.ts:80 msgid "Base DN" @@ -386,6 +389,10 @@ msgstr "Bind CN" msgid "Bind Password" msgstr "Bind Password" +#: src/pages/providers/ldap/LDAPProviderForm.ts:60 +msgid "Bind flow" +msgstr "Bind flow" + #: src/pages/flows/BoundStagesList.ts:127 #: src/pages/flows/BoundStagesList.ts:175 msgid "Bind stage" @@ -470,7 +477,7 @@ msgstr "Certificate-Key Pairs" msgid "Certificate/Key used for authentication. Can be left empty for no authentication." msgstr "Certificate/Key used for authentication. Can be left empty for no authentication." -#: src/interfaces/AdminInterface.ts:32 +#: src/interfaces/AdminInterface.ts:106 msgid "Certificates" msgstr "Certificates" @@ -484,6 +491,7 @@ msgstr "Change your password" #: src/pages/applications/ApplicationViewPage.ts:136 #: src/pages/flows/FlowViewPage.ts:110 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:111 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:136 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:135 #: src/pages/providers/saml/SAMLProviderViewPage.ts:129 @@ -595,7 +603,7 @@ msgstr "Confidential" msgid "Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable." msgstr "Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable." -#: src/pages/outposts/OutpostForm.ts:106 +#: src/pages/outposts/OutpostForm.ts:118 msgid "Configuration" msgstr "Configuration" @@ -751,8 +759,8 @@ msgstr "Copy Key" #: src/pages/policies/PolicyListPage.ts:133 #: src/pages/property-mappings/PropertyMappingListPage.ts:113 #: src/pages/property-mappings/PropertyMappingListPage.ts:122 -#: src/pages/providers/ProviderListPage.ts:107 -#: src/pages/providers/ProviderListPage.ts:116 +#: src/pages/providers/ProviderListPage.ts:108 +#: src/pages/providers/ProviderListPage.ts:117 #: src/pages/providers/RelatedApplicationButton.ts:27 #: src/pages/providers/RelatedApplicationButton.ts:35 #: src/pages/sources/SourcesListPage.ts:114 @@ -852,7 +860,7 @@ msgstr "Create provider" #: src/pages/policies/BoundPoliciesList.ts:192 #: src/pages/policies/PolicyListPage.ts:136 #: src/pages/property-mappings/PropertyMappingListPage.ts:125 -#: src/pages/providers/ProviderListPage.ts:119 +#: src/pages/providers/ProviderListPage.ts:120 #: src/pages/sources/SourcesListPage.ts:126 #: src/pages/stages/StageListPage.ts:131 msgid "Create {0}" @@ -872,7 +880,7 @@ msgstr "Created {0}" msgid "Creation Date" msgstr "Creation Date" -#: src/interfaces/AdminInterface.ts:26 +#: src/interfaces/AdminInterface.ts:72 msgid "Customisation" msgstr "Customisation" @@ -908,7 +916,7 @@ msgstr "Define how notifications are sent to users, like Email or Webhook." #: src/pages/outposts/ServiceConnectionListPage.ts:101 #: src/pages/policies/PolicyListPage.ts:115 #: src/pages/property-mappings/PropertyMappingListPage.ts:104 -#: src/pages/providers/ProviderListPage.ts:98 +#: src/pages/providers/ProviderListPage.ts:99 #: src/pages/sources/SourcesListPage.ts:95 #: src/pages/stages/StageListPage.ts:110 #: src/pages/stages/invitation/InvitationListPage.ts:68 @@ -1056,7 +1064,8 @@ msgstr "Each provider has a different issuer, based on the application slug." #: src/pages/outposts/ServiceConnectionListPage.ts:89 #: src/pages/policies/PolicyListPage.ts:90 #: src/pages/property-mappings/PropertyMappingListPage.ts:79 -#: src/pages/providers/ProviderListPage.ts:86 +#: src/pages/providers/ProviderListPage.ts:87 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:103 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:128 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:127 #: src/pages/providers/saml/SAMLProviderViewPage.ts:121 @@ -1157,7 +1166,7 @@ msgstr "Enabled" msgid "Enrollment" msgstr "Enrollment" -#: src/pages/sources/oauth/OAuthSourceForm.ts:232 +#: src/pages/sources/oauth/OAuthSourceForm.ts:233 #: src/pages/sources/plex/PlexSourceForm.ts:192 #: src/pages/sources/saml/SAMLSourceForm.ts:266 #: src/pages/stages/identification/IdentificationStageForm.ts:106 @@ -1216,7 +1225,7 @@ msgstr "Event info" msgid "Event {0}" msgstr "Event {0}" -#: src/interfaces/AdminInterface.ts:23 +#: src/interfaces/AdminInterface.ts:59 msgid "Events" msgstr "Events" @@ -1370,19 +1379,19 @@ msgstr "Flow" msgid "Flow Overview" msgstr "Flow Overview" -#: src/pages/sources/oauth/OAuthSourceForm.ts:207 +#: src/pages/sources/oauth/OAuthSourceForm.ts:208 #: src/pages/sources/plex/PlexSourceForm.ts:167 #: src/pages/sources/saml/SAMLSourceForm.ts:220 msgid "Flow settings" msgstr "Flow settings" -#: src/pages/sources/oauth/OAuthSourceForm.ts:229 +#: src/pages/sources/oauth/OAuthSourceForm.ts:230 #: src/pages/sources/plex/PlexSourceForm.ts:189 #: src/pages/sources/saml/SAMLSourceForm.ts:263 msgid "Flow to use when authenticating existing users." msgstr "Flow to use when authenticating existing users." -#: src/pages/sources/oauth/OAuthSourceForm.ts:250 +#: src/pages/sources/oauth/OAuthSourceForm.ts:251 #: src/pages/sources/plex/PlexSourceForm.ts:210 #: src/pages/sources/saml/SAMLSourceForm.ts:284 msgid "Flow to use when enrolling new users." @@ -1401,6 +1410,10 @@ msgstr "Flow used by an authenticated user to configure their password. If empty msgid "Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage." msgstr "Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage." +#: src/pages/providers/ldap/LDAPProviderForm.ts:74 +msgid "Flow used for users to authenticate. Currently only identification and password stages are supported." +msgstr "Flow used for users to authenticate. Currently only identification and password stages are supported." + #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:76 #: src/pages/providers/proxy/ProxyProviderForm.ts:118 #: src/pages/providers/saml/SAMLProviderForm.ts:73 @@ -1408,8 +1421,8 @@ msgstr "Flow used by an authenticated user to configure this Stage. If empty, us msgid "Flow used when authorizing this provider." msgstr "Flow used when authorizing this provider." -#: src/interfaces/AdminInterface.ts:29 -#: src/interfaces/AdminInterface.ts:29 +#: src/interfaces/AdminInterface.ts:82 +#: src/interfaces/AdminInterface.ts:84 #: src/pages/flows/FlowListPage.ts:28 #: src/pages/stages/StageListPage.ts:66 msgid "Flows" @@ -1468,6 +1481,7 @@ msgstr "Go to previous page" #: src/pages/groups/GroupListPage.ts:74 #: src/pages/policies/PolicyBindingForm.ts:125 #: src/pages/policies/PolicyBindingForm.ts:161 +#: src/pages/providers/ldap/LDAPProviderForm.ts:77 msgid "Group" msgstr "Group" @@ -1491,7 +1505,7 @@ msgstr "Group users together and give them permissions based on the membership." msgid "Group {0}" msgstr "Group {0}" -#: src/interfaces/AdminInterface.ts:32 +#: src/interfaces/AdminInterface.ts:103 #: src/pages/groups/GroupListPage.ts:27 msgid "Groups" msgstr "Groups" @@ -1526,7 +1540,7 @@ msgstr "Hide service-accounts" #: src/pages/events/RuleForm.ts:93 #: src/pages/groups/GroupForm.ts:131 -#: src/pages/outposts/OutpostForm.ts:98 +#: src/pages/outposts/OutpostForm.ts:110 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:188 #: src/pages/providers/saml/SAMLProviderForm.ts:177 #: src/pages/sources/ldap/LDAPSourceForm.ts:167 @@ -1560,7 +1574,7 @@ msgstr "Icon" msgid "Identifier" msgstr "Identifier" -#: src/interfaces/AdminInterface.ts:32 +#: src/interfaces/AdminInterface.ts:98 msgid "Identity & Cryptography" msgstr "Identity & Cryptography" @@ -1630,7 +1644,7 @@ msgstr "Internal host SSL Validation" msgid "Invalidation" msgstr "Invalidation" -#: src/interfaces/AdminInterface.ts:29 +#: src/interfaces/AdminInterface.ts:93 #: src/pages/stages/invitation/InvitationListPage.ts:28 msgid "Invitations" msgstr "Invitations" @@ -1670,6 +1684,14 @@ msgstr "Keypair which is used to sign outgoing requests. Leave empty to disable msgid "Kubeconfig" msgstr "Kubeconfig" +#: src/pages/outposts/OutpostForm.ts:58 +msgid "LDAP (Technical preview)" +msgstr "LDAP (Technical preview)" + +#: src/pages/providers/ldap/LDAPProviderForm.ts:101 +msgid "LDAP DN under which bind requests and search requests can be made." +msgstr "LDAP DN under which bind requests and search requests can be made." + #: src/pages/admin-overview/cards/LDAPSyncStatusCardContainer.ts:24 msgid "LDAP Sync status {0}" msgstr "LDAP Sync status {0}" @@ -1715,7 +1737,7 @@ msgstr "Launch URL" msgid "Let the user identify themselves with their username or Email address." msgstr "Let the user identify themselves with their username or Email address." -#: src/interfaces/AdminInterface.ts:16 +#: src/interfaces/AdminInterface.ts:22 msgid "Library" msgstr "Library" @@ -1769,8 +1791,9 @@ msgstr "Loading" #: src/pages/flows/StageBindingForm.ts:106 #: src/pages/groups/GroupForm.ts:77 #: src/pages/groups/GroupForm.ts:127 -#: src/pages/outposts/OutpostForm.ts:74 -#: src/pages/outposts/OutpostForm.ts:96 +#: src/pages/outposts/OutpostForm.ts:75 +#: src/pages/outposts/OutpostForm.ts:97 +#: src/pages/outposts/OutpostForm.ts:108 #: src/pages/outposts/ServiceConnectionDockerForm.ts:86 #: src/pages/outposts/ServiceConnectionDockerForm.ts:102 #: src/pages/policies/PolicyBindingForm.ts:157 @@ -1780,6 +1803,8 @@ msgstr "Loading" #: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:88 #: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:108 #: src/pages/property-mappings/PropertyMappingTestForm.ts:61 +#: src/pages/providers/ldap/LDAPProviderForm.ts:72 +#: src/pages/providers/ldap/LDAPProviderForm.ts:86 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:74 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:185 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:207 @@ -1793,9 +1818,9 @@ msgstr "Loading" #: src/pages/providers/saml/SAMLProviderImportForm.ts:55 #: src/pages/sources/ldap/LDAPSourceForm.ts:164 #: src/pages/sources/ldap/LDAPSourceForm.ts:190 -#: src/pages/sources/oauth/OAuthSourceForm.ts:199 -#: src/pages/sources/oauth/OAuthSourceForm.ts:227 -#: src/pages/sources/oauth/OAuthSourceForm.ts:248 +#: src/pages/sources/oauth/OAuthSourceForm.ts:200 +#: src/pages/sources/oauth/OAuthSourceForm.ts:228 +#: src/pages/sources/oauth/OAuthSourceForm.ts:249 #: src/pages/sources/plex/PlexSourceForm.ts:187 #: src/pages/sources/plex/PlexSourceForm.ts:208 #: src/pages/sources/saml/SAMLSourceForm.ts:126 @@ -1845,7 +1870,7 @@ msgstr "Logins over the last 24 hours" msgid "Logout URL" msgstr "Logout URL" -#: src/interfaces/AdminInterface.ts:23 +#: src/interfaces/AdminInterface.ts:61 msgid "Logs" msgstr "Logs" @@ -1917,7 +1942,7 @@ msgstr "Mode" msgid "Model Name" msgstr "Model Name" -#: src/interfaces/AdminInterface.ts:17 +#: src/interfaces/AdminInterface.ts:26 msgid "Monitor" msgstr "Monitor" @@ -1953,7 +1978,9 @@ msgstr "Monitor" #: src/pages/property-mappings/PropertyMappingListPage.ts:54 #: src/pages/property-mappings/PropertyMappingSAMLForm.ts:52 #: src/pages/property-mappings/PropertyMappingScopeForm.ts:52 -#: src/pages/providers/ProviderListPage.ts:52 +#: src/pages/providers/ProviderListPage.ts:53 +#: src/pages/providers/ldap/LDAPProviderForm.ts:54 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:64 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:56 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:73 #: src/pages/providers/proxy/ProxyProviderForm.ts:98 @@ -2127,12 +2154,12 @@ msgstr "Not you?" msgid "Notice" msgstr "Notice" -#: src/interfaces/AdminInterface.ts:23 +#: src/interfaces/AdminInterface.ts:64 #: src/pages/events/RuleListPage.ts:29 msgid "Notification Rules" msgstr "Notification Rules" -#: src/interfaces/AdminInterface.ts:23 +#: src/interfaces/AdminInterface.ts:67 #: src/pages/events/TransportListPage.ts:28 msgid "Notification Transports" msgstr "Notification Transports" @@ -2253,15 +2280,12 @@ msgstr "Outpost" msgid "Outpost Deployment Info" msgstr "Outpost Deployment Info" -#: src/interfaces/AdminInterface.ts:20 -msgid "Outpost Service Connections" -msgstr "Outpost Service Connections" - #: src/pages/outposts/ServiceConnectionListPage.ts:94 msgid "Outpost Service-connection" msgstr "Outpost Service-connection" -#: src/interfaces/AdminInterface.ts:20 +#: src/interfaces/AdminInterface.ts:49 +#: src/interfaces/AdminInterface.ts:51 #: src/pages/outposts/OutpostListPage.ts:29 msgid "Outposts" msgstr "Outposts" @@ -2270,8 +2294,9 @@ msgstr "Outposts" msgid "Outposts are deployments of authentik components to support different environments and protocols, like reverse proxies." msgstr "Outposts are deployments of authentik components to support different environments and protocols, like reverse proxies." -#: src/interfaces/AdminInterface.ts:17 +#: src/interfaces/AdminInterface.ts:28 #: src/pages/applications/ApplicationViewPage.ts:59 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:56 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:65 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:56 #: src/pages/providers/saml/SAMLProviderViewPage.ts:58 @@ -2331,7 +2356,7 @@ msgstr "Please enter your TOTP Code" msgid "Please enter your password" msgstr "Please enter your password" -#: src/interfaces/AdminInterface.ts:26 +#: src/interfaces/AdminInterface.ts:74 #: src/pages/flows/FlowListPage.ts:50 #: src/pages/policies/PolicyListPage.ts:38 msgid "Policies" @@ -2434,7 +2459,7 @@ msgstr "Prompt" msgid "Prompt for the user's consent. The consent can either be permanent or expire in a defined amount of time." msgstr "Prompt for the user's consent. The consent can either be permanent or expire in a defined amount of time." -#: src/interfaces/AdminInterface.ts:29 +#: src/interfaces/AdminInterface.ts:90 #: src/pages/stages/prompt/PromptListPage.ts:28 msgid "Prompts" msgstr "Prompts" @@ -2443,7 +2468,7 @@ msgstr "Prompts" msgid "Property Mapping" msgstr "Property Mapping" -#: src/interfaces/AdminInterface.ts:26 +#: src/interfaces/AdminInterface.ts:77 #: src/pages/property-mappings/PropertyMappingListPage.ts:35 msgid "Property Mappings" msgstr "Property Mappings" @@ -2460,6 +2485,7 @@ msgstr "Property mappings used to group creation." msgid "Property mappings used to user creation." msgstr "Property mappings used to user creation." +#: src/pages/providers/ldap/LDAPProviderForm.ts:93 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:81 #: src/pages/providers/proxy/ProxyProviderForm.ts:123 #: src/pages/providers/saml/SAMLProviderForm.ts:78 @@ -2469,7 +2495,7 @@ msgstr "Property mappings used to user creation." msgid "Protocol settings" msgstr "Protocol settings" -#: src/pages/providers/ProviderListPage.ts:37 +#: src/pages/providers/ProviderListPage.ts:38 msgid "Provide support for protocols like SAML and OAuth to assigned applications." msgstr "Provide support for protocols like SAML and OAuth to assigned applications." @@ -2486,14 +2512,14 @@ msgstr "Provider" msgid "Provider Type" msgstr "Provider Type" -#: src/pages/sources/oauth/OAuthSourceForm.ts:160 +#: src/pages/sources/oauth/OAuthSourceForm.ts:161 msgid "Provider type" msgstr "Provider type" -#: src/interfaces/AdminInterface.ts:20 -#: src/pages/outposts/OutpostForm.ts:82 +#: src/interfaces/AdminInterface.ts:44 +#: src/pages/outposts/OutpostForm.ts:83 #: src/pages/outposts/OutpostListPage.ts:51 -#: src/pages/providers/ProviderListPage.ts:34 +#: src/pages/providers/ProviderListPage.ts:35 msgid "Providers" msgstr "Providers" @@ -2602,7 +2628,7 @@ msgstr "Regular expressions for which authentication is not required. Each new l msgid "Related" msgstr "Related" -#: src/interfaces/Interface.ts:52 +#: src/interfaces/Interface.ts:56 msgid "Reload" msgstr "Reload" @@ -2637,7 +2663,7 @@ msgstr "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only." msgid "Reset Password" msgstr "Reset Password" -#: src/interfaces/AdminInterface.ts:20 +#: src/interfaces/AdminInterface.ts:36 msgid "Resources" msgstr "Resources" @@ -2787,7 +2813,7 @@ msgstr "Select which transports should be used to notify the user. If none are s msgid "Selected policies are executed when the stage is submitted to validate the data." msgstr "Selected policies are executed when the stage is submitted to validate the data." -#: src/pages/outposts/OutpostForm.ts:76 +#: src/pages/outposts/OutpostForm.ts:77 msgid "Selecting a service-connection enables the management of the outpost by authentik." msgstr "Selecting a service-connection enables the management of the outpost by authentik." @@ -2824,11 +2850,15 @@ msgstr "Server URI" msgid "Server validation of credential failed: {err}" msgstr "Server validation of credential failed: {err}" +#: src/interfaces/AdminInterface.ts:54 +msgid "Service Connections" +msgstr "Service Connections" + #: src/pages/providers/saml/SAMLProviderForm.ts:94 msgid "Service Provider Binding" msgstr "Service Provider Binding" -#: src/pages/outposts/OutpostForm.ts:61 +#: src/pages/outposts/OutpostForm.ts:62 msgid "Service connection" msgstr "Service connection" @@ -2853,7 +2883,7 @@ msgid "Set a custom HTTP-Basic Authentication header based on values from authen msgstr "Set a custom HTTP-Basic Authentication header based on values from authentik." #: src/pages/groups/GroupForm.ts:139 -#: src/pages/outposts/OutpostForm.ts:109 +#: src/pages/outposts/OutpostForm.ts:121 #: src/pages/outposts/ServiceConnectionKubernetesForm.ts:73 #: src/pages/policies/PolicyTestForm.ts:79 #: src/pages/users/UserForm.ts:82 @@ -2920,7 +2950,7 @@ msgstr "Slug" msgid "Something went wrong! Please try again later." msgstr "Something went wrong! Please try again later." -#: src/pages/providers/ProviderListPage.ts:91 +#: src/pages/providers/ProviderListPage.ts:92 #: src/pages/sources/SourcesListPage.ts:88 msgid "Source" msgstr "Source" @@ -2929,7 +2959,7 @@ msgstr "Source" msgid "Source {0}" msgstr "Source {0}" -#: src/interfaces/AdminInterface.ts:20 +#: src/interfaces/AdminInterface.ts:41 #: src/pages/sources/SourcesListPage.ts:31 msgid "Sources" msgstr "Sources" @@ -2988,7 +3018,7 @@ msgstr "Stage used to validate any authenticator. This stage should be used duri msgid "Stage-specific settings" msgstr "Stage-specific settings" -#: src/interfaces/AdminInterface.ts:29 +#: src/interfaces/AdminInterface.ts:87 #: src/pages/flows/FlowListPage.ts:49 #: src/pages/stages/StageListPage.ts:44 #: src/pages/stages/prompt/PromptListPage.ts:50 @@ -3033,7 +3063,7 @@ msgstr "Status: Disabled" msgid "Status: Enabled" msgstr "Status: Enabled" -#: src/interfaces/Interface.ts:63 +#: src/interfaces/Interface.ts:67 msgid "Stop impersonation" msgstr "Stop impersonation" @@ -3114,6 +3144,7 @@ msgstr "Successfully created policy." msgid "Successfully created prompt." msgstr "Successfully created prompt." +#: src/pages/providers/ldap/LDAPProviderForm.ts:47 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:49 #: src/pages/providers/proxy/ProxyProviderForm.ts:51 #: src/pages/providers/saml/SAMLProviderForm.ts:46 @@ -3251,6 +3282,7 @@ msgstr "Successfully updated policy." msgid "Successfully updated prompt." msgstr "Successfully updated prompt." +#: src/pages/providers/ldap/LDAPProviderForm.ts:44 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:46 #: src/pages/providers/proxy/ProxyProviderForm.ts:48 #: src/pages/providers/saml/SAMLProviderForm.ts:43 @@ -3345,7 +3377,7 @@ msgstr "Sync users" msgid "System Overview" msgstr "System Overview" -#: src/interfaces/AdminInterface.ts:17 +#: src/interfaces/AdminInterface.ts:31 #: src/pages/system-tasks/SystemTaskListPage.ts:27 msgid "System Tasks" msgstr "System Tasks" @@ -3497,7 +3529,7 @@ msgid "Token validity" msgstr "Token validity" #: src/flows/stages/authenticator_static/AuthenticatorStaticStage.ts:62 -#: src/interfaces/AdminInterface.ts:32 +#: src/interfaces/AdminInterface.ts:109 #: src/pages/tokens/TokenListPage.ts:26 #: src/pages/user-settings/UserSettingsPage.ts:77 msgid "Tokens" @@ -3524,7 +3556,7 @@ msgstr "Transports" #: src/pages/outposts/ServiceConnectionListPage.ts:54 #: src/pages/policies/PolicyListPage.ts:57 #: src/pages/property-mappings/PropertyMappingListPage.ts:55 -#: src/pages/providers/ProviderListPage.ts:54 +#: src/pages/providers/ProviderListPage.ts:55 #: src/pages/sources/SourcesListPage.ts:53 #: src/pages/stages/prompt/PromptForm.ts:97 #: src/pages/stages/prompt/PromptListPage.ts:48 @@ -3600,7 +3632,8 @@ msgstr "Up-to-date!" #: src/pages/policies/BoundPoliciesList.ts:129 #: src/pages/policies/PolicyListPage.ts:77 #: src/pages/property-mappings/PropertyMappingListPage.ts:66 -#: src/pages/providers/ProviderListPage.ts:73 +#: src/pages/providers/ProviderListPage.ts:74 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:93 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:118 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:117 #: src/pages/providers/saml/SAMLProviderViewPage.ts:111 @@ -3644,6 +3677,10 @@ msgstr "Update Flow" msgid "Update Group" msgstr "Update Group" +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:96 +msgid "Update LDAP Provider" +msgstr "Update LDAP Provider" + #: src/pages/sources/ldap/LDAPSourceViewPage.ts:98 msgid "Update LDAP Source" msgstr "Update LDAP Source" @@ -3711,7 +3748,7 @@ msgstr "Update details" #: src/pages/policies/BoundPoliciesList.ts:71 #: src/pages/policies/PolicyListPage.ts:80 #: src/pages/property-mappings/PropertyMappingListPage.ts:69 -#: src/pages/providers/ProviderListPage.ts:76 +#: src/pages/providers/ProviderListPage.ts:77 #: src/pages/sources/SourcesListPage.ts:73 #: src/pages/stages/StageListPage.ts:88 #: src/pages/users/UserActiveForm.ts:41 @@ -3843,7 +3880,7 @@ msgstr "Username" msgid "Username: Same as Text input, but checks for and prevents duplicate usernames." msgstr "Username: Same as Text input, but checks for and prevents duplicate usernames." -#: src/interfaces/AdminInterface.ts:32 +#: src/interfaces/AdminInterface.ts:100 #: src/pages/admin-overview/AdminOverviewPage.ts:50 #: src/pages/users/UserListPage.ts:33 msgid "Users" @@ -3853,6 +3890,10 @@ msgstr "Users" msgid "Users added to this group will be superusers." msgstr "Users added to this group will be superusers." +#: src/pages/providers/ldap/LDAPProviderForm.ts:88 +msgid "Users in the selected group can do search queries." +msgstr "Users in the selected group can do search queries." + #: src/pages/events/EventInfo.ts:108 msgid "Using flow" msgstr "Using flow" @@ -3930,7 +3971,7 @@ msgstr "Warning: At least one Provider has no application assigned." msgid "Warning: Policy is not assigned." msgstr "Warning: Policy is not assigned." -#: src/pages/providers/ProviderListPage.ts:68 +#: src/pages/providers/ProviderListPage.ts:69 msgid "Warning: Provider not assigned to any application." msgstr "Warning: Provider not assigned to any application." @@ -4021,7 +4062,7 @@ msgstr "X509 Subject" msgid "Yes" msgstr "Yes" -#: src/interfaces/Interface.ts:61 +#: src/interfaces/Interface.ts:65 msgid "You're currently impersonating {0}." msgstr "You're currently impersonating {0}." diff --git a/web/src/locales/pseudo-LOCALE.po b/web/src/locales/pseudo-LOCALE.po index 0d7656c60..0a683a01f 100644 --- a/web/src/locales/pseudo-LOCALE.po +++ b/web/src/locales/pseudo-LOCALE.po @@ -32,7 +32,7 @@ msgstr "" msgid "8 digits, not compatible with apps like Google Authenticator" msgstr "" -#: src/interfaces/Interface.ts:50 +#: src/interfaces/Interface.ts:54 msgid "A newer version of the frontend is available." msgstr "" @@ -184,7 +184,7 @@ msgstr "" #: src/elements/user/UserConsentList.ts:29 #: src/pages/admin-overview/TopApplicationsTable.ts:42 #: src/pages/applications/ApplicationListPage.ts:105 -#: src/pages/providers/ProviderListPage.ts:53 +#: src/pages/providers/ProviderListPage.ts:54 msgid "Application" msgstr "" @@ -200,7 +200,7 @@ msgstr "" msgid "Application's display Name." msgstr "" -#: src/interfaces/AdminInterface.ts:20 +#: src/interfaces/AdminInterface.ts:38 #: src/pages/LibraryPage.ts:93 #: src/pages/LibraryPage.ts:130 #: src/pages/applications/ApplicationListPage.ts:28 @@ -247,7 +247,8 @@ msgstr "" msgid "Assertions is empty" msgstr "" -#: src/pages/providers/ProviderListPage.ts:65 +#: src/pages/providers/ProviderListPage.ts:66 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:72 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:81 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:72 #: src/pages/providers/saml/SAMLProviderViewPage.ts:74 @@ -285,7 +286,7 @@ msgstr "" msgid "Authentication" msgstr "" -#: src/pages/sources/oauth/OAuthSourceForm.ts:211 +#: src/pages/sources/oauth/OAuthSourceForm.ts:212 #: src/pages/sources/plex/PlexSourceForm.ts:171 #: src/pages/sources/saml/SAMLSourceForm.ts:245 msgid "Authentication flow" @@ -349,6 +350,8 @@ msgstr "" msgid "Backup status" msgstr "" +#: src/pages/providers/ldap/LDAPProviderForm.ts:97 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:82 #: src/pages/sources/ldap/LDAPSourceForm.ts:131 #: src/pages/sources/ldap/LDAPSourceViewPage.ts:80 msgid "Base DN" @@ -382,6 +385,10 @@ msgstr "" msgid "Bind Password" msgstr "" +#: src/pages/providers/ldap/LDAPProviderForm.ts:60 +msgid "Bind flow" +msgstr "" + #: src/pages/flows/BoundStagesList.ts:127 #: src/pages/flows/BoundStagesList.ts:175 msgid "Bind stage" @@ -466,7 +473,7 @@ msgstr "" msgid "Certificate/Key used for authentication. Can be left empty for no authentication." msgstr "" -#: src/interfaces/AdminInterface.ts:32 +#: src/interfaces/AdminInterface.ts:106 msgid "Certificates" msgstr "" @@ -480,6 +487,7 @@ msgstr "" #: src/pages/applications/ApplicationViewPage.ts:136 #: src/pages/flows/FlowViewPage.ts:110 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:111 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:136 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:135 #: src/pages/providers/saml/SAMLProviderViewPage.ts:129 @@ -589,7 +597,7 @@ msgstr "" msgid "Confidential clients are capable of maintaining the confidentiality of their credentials. Public clients are incapable." msgstr "" -#: src/pages/outposts/OutpostForm.ts:106 +#: src/pages/outposts/OutpostForm.ts:118 msgid "Configuration" msgstr "" @@ -745,8 +753,8 @@ msgstr "" #: src/pages/policies/PolicyListPage.ts:133 #: src/pages/property-mappings/PropertyMappingListPage.ts:113 #: src/pages/property-mappings/PropertyMappingListPage.ts:122 -#: src/pages/providers/ProviderListPage.ts:107 -#: src/pages/providers/ProviderListPage.ts:116 +#: src/pages/providers/ProviderListPage.ts:108 +#: src/pages/providers/ProviderListPage.ts:117 #: src/pages/providers/RelatedApplicationButton.ts:27 #: src/pages/providers/RelatedApplicationButton.ts:35 #: src/pages/sources/SourcesListPage.ts:114 @@ -846,7 +854,7 @@ msgstr "" #: src/pages/policies/BoundPoliciesList.ts:192 #: src/pages/policies/PolicyListPage.ts:136 #: src/pages/property-mappings/PropertyMappingListPage.ts:125 -#: src/pages/providers/ProviderListPage.ts:119 +#: src/pages/providers/ProviderListPage.ts:120 #: src/pages/sources/SourcesListPage.ts:126 #: src/pages/stages/StageListPage.ts:131 msgid "Create {0}" @@ -866,7 +874,7 @@ msgstr "" msgid "Creation Date" msgstr "" -#: src/interfaces/AdminInterface.ts:26 +#: src/interfaces/AdminInterface.ts:72 msgid "Customisation" msgstr "" @@ -902,7 +910,7 @@ msgstr "" #: src/pages/outposts/ServiceConnectionListPage.ts:101 #: src/pages/policies/PolicyListPage.ts:115 #: src/pages/property-mappings/PropertyMappingListPage.ts:104 -#: src/pages/providers/ProviderListPage.ts:98 +#: src/pages/providers/ProviderListPage.ts:99 #: src/pages/sources/SourcesListPage.ts:95 #: src/pages/stages/StageListPage.ts:110 #: src/pages/stages/invitation/InvitationListPage.ts:68 @@ -1048,7 +1056,8 @@ msgstr "" #: src/pages/outposts/ServiceConnectionListPage.ts:89 #: src/pages/policies/PolicyListPage.ts:90 #: src/pages/property-mappings/PropertyMappingListPage.ts:79 -#: src/pages/providers/ProviderListPage.ts:86 +#: src/pages/providers/ProviderListPage.ts:87 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:103 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:128 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:127 #: src/pages/providers/saml/SAMLProviderViewPage.ts:121 @@ -1149,7 +1158,7 @@ msgstr "" msgid "Enrollment" msgstr "" -#: src/pages/sources/oauth/OAuthSourceForm.ts:232 +#: src/pages/sources/oauth/OAuthSourceForm.ts:233 #: src/pages/sources/plex/PlexSourceForm.ts:192 #: src/pages/sources/saml/SAMLSourceForm.ts:266 #: src/pages/stages/identification/IdentificationStageForm.ts:106 @@ -1208,7 +1217,7 @@ msgstr "" msgid "Event {0}" msgstr "" -#: src/interfaces/AdminInterface.ts:23 +#: src/interfaces/AdminInterface.ts:59 msgid "Events" msgstr "" @@ -1362,19 +1371,19 @@ msgstr "" msgid "Flow Overview" msgstr "" -#: src/pages/sources/oauth/OAuthSourceForm.ts:207 +#: src/pages/sources/oauth/OAuthSourceForm.ts:208 #: src/pages/sources/plex/PlexSourceForm.ts:167 #: src/pages/sources/saml/SAMLSourceForm.ts:220 msgid "Flow settings" msgstr "" -#: src/pages/sources/oauth/OAuthSourceForm.ts:229 +#: src/pages/sources/oauth/OAuthSourceForm.ts:230 #: src/pages/sources/plex/PlexSourceForm.ts:189 #: src/pages/sources/saml/SAMLSourceForm.ts:263 msgid "Flow to use when authenticating existing users." msgstr "" -#: src/pages/sources/oauth/OAuthSourceForm.ts:250 +#: src/pages/sources/oauth/OAuthSourceForm.ts:251 #: src/pages/sources/plex/PlexSourceForm.ts:210 #: src/pages/sources/saml/SAMLSourceForm.ts:284 msgid "Flow to use when enrolling new users." @@ -1393,6 +1402,10 @@ msgstr "" msgid "Flow used by an authenticated user to configure this Stage. If empty, user will not be able to configure this stage." msgstr "" +#: src/pages/providers/ldap/LDAPProviderForm.ts:74 +msgid "Flow used for users to authenticate. Currently only identification and password stages are supported." +msgstr "" + #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:76 #: src/pages/providers/proxy/ProxyProviderForm.ts:118 #: src/pages/providers/saml/SAMLProviderForm.ts:73 @@ -1400,8 +1413,8 @@ msgstr "" msgid "Flow used when authorizing this provider." msgstr "" -#: src/interfaces/AdminInterface.ts:29 -#: src/interfaces/AdminInterface.ts:29 +#: src/interfaces/AdminInterface.ts:82 +#: src/interfaces/AdminInterface.ts:84 #: src/pages/flows/FlowListPage.ts:28 #: src/pages/stages/StageListPage.ts:66 msgid "Flows" @@ -1460,6 +1473,7 @@ msgstr "" #: src/pages/groups/GroupListPage.ts:74 #: src/pages/policies/PolicyBindingForm.ts:125 #: src/pages/policies/PolicyBindingForm.ts:161 +#: src/pages/providers/ldap/LDAPProviderForm.ts:77 msgid "Group" msgstr "" @@ -1483,7 +1497,7 @@ msgstr "" msgid "Group {0}" msgstr "" -#: src/interfaces/AdminInterface.ts:32 +#: src/interfaces/AdminInterface.ts:103 #: src/pages/groups/GroupListPage.ts:27 msgid "Groups" msgstr "" @@ -1518,7 +1532,7 @@ msgstr "" #: src/pages/events/RuleForm.ts:93 #: src/pages/groups/GroupForm.ts:131 -#: src/pages/outposts/OutpostForm.ts:98 +#: src/pages/outposts/OutpostForm.ts:110 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:188 #: src/pages/providers/saml/SAMLProviderForm.ts:177 #: src/pages/sources/ldap/LDAPSourceForm.ts:167 @@ -1552,7 +1566,7 @@ msgstr "" msgid "Identifier" msgstr "" -#: src/interfaces/AdminInterface.ts:32 +#: src/interfaces/AdminInterface.ts:98 msgid "Identity & Cryptography" msgstr "" @@ -1622,7 +1636,7 @@ msgstr "" msgid "Invalidation" msgstr "" -#: src/interfaces/AdminInterface.ts:29 +#: src/interfaces/AdminInterface.ts:93 #: src/pages/stages/invitation/InvitationListPage.ts:28 msgid "Invitations" msgstr "" @@ -1662,6 +1676,14 @@ msgstr "" msgid "Kubeconfig" msgstr "" +#: src/pages/outposts/OutpostForm.ts:58 +msgid "LDAP (Technical preview)" +msgstr "" + +#: src/pages/providers/ldap/LDAPProviderForm.ts:101 +msgid "LDAP DN under which bind requests and search requests can be made." +msgstr "" + #: src/pages/admin-overview/cards/LDAPSyncStatusCardContainer.ts:24 msgid "LDAP Sync status {0}" msgstr "" @@ -1707,7 +1729,7 @@ msgstr "" msgid "Let the user identify themselves with their username or Email address." msgstr "" -#: src/interfaces/AdminInterface.ts:16 +#: src/interfaces/AdminInterface.ts:22 msgid "Library" msgstr "" @@ -1761,8 +1783,9 @@ msgstr "" #: src/pages/flows/StageBindingForm.ts:106 #: src/pages/groups/GroupForm.ts:77 #: src/pages/groups/GroupForm.ts:127 -#: src/pages/outposts/OutpostForm.ts:74 -#: src/pages/outposts/OutpostForm.ts:96 +#: src/pages/outposts/OutpostForm.ts:75 +#: src/pages/outposts/OutpostForm.ts:97 +#: src/pages/outposts/OutpostForm.ts:108 #: src/pages/outposts/ServiceConnectionDockerForm.ts:86 #: src/pages/outposts/ServiceConnectionDockerForm.ts:102 #: src/pages/policies/PolicyBindingForm.ts:157 @@ -1772,6 +1795,8 @@ msgstr "" #: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:88 #: src/pages/policies/event_matcher/EventMatcherPolicyForm.ts:108 #: src/pages/property-mappings/PropertyMappingTestForm.ts:61 +#: src/pages/providers/ldap/LDAPProviderForm.ts:72 +#: src/pages/providers/ldap/LDAPProviderForm.ts:86 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:74 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:185 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:207 @@ -1785,9 +1810,9 @@ msgstr "" #: src/pages/providers/saml/SAMLProviderImportForm.ts:55 #: src/pages/sources/ldap/LDAPSourceForm.ts:164 #: src/pages/sources/ldap/LDAPSourceForm.ts:190 -#: src/pages/sources/oauth/OAuthSourceForm.ts:199 -#: src/pages/sources/oauth/OAuthSourceForm.ts:227 -#: src/pages/sources/oauth/OAuthSourceForm.ts:248 +#: src/pages/sources/oauth/OAuthSourceForm.ts:200 +#: src/pages/sources/oauth/OAuthSourceForm.ts:228 +#: src/pages/sources/oauth/OAuthSourceForm.ts:249 #: src/pages/sources/plex/PlexSourceForm.ts:187 #: src/pages/sources/plex/PlexSourceForm.ts:208 #: src/pages/sources/saml/SAMLSourceForm.ts:126 @@ -1837,7 +1862,7 @@ msgstr "" msgid "Logout URL" msgstr "" -#: src/interfaces/AdminInterface.ts:23 +#: src/interfaces/AdminInterface.ts:61 msgid "Logs" msgstr "" @@ -1909,7 +1934,7 @@ msgstr "" msgid "Model Name" msgstr "" -#: src/interfaces/AdminInterface.ts:17 +#: src/interfaces/AdminInterface.ts:26 msgid "Monitor" msgstr "" @@ -1945,7 +1970,9 @@ msgstr "" #: src/pages/property-mappings/PropertyMappingListPage.ts:54 #: src/pages/property-mappings/PropertyMappingSAMLForm.ts:52 #: src/pages/property-mappings/PropertyMappingScopeForm.ts:52 -#: src/pages/providers/ProviderListPage.ts:52 +#: src/pages/providers/ProviderListPage.ts:53 +#: src/pages/providers/ldap/LDAPProviderForm.ts:54 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:64 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:56 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:73 #: src/pages/providers/proxy/ProxyProviderForm.ts:98 @@ -2119,12 +2146,12 @@ msgstr "" msgid "Notice" msgstr "" -#: src/interfaces/AdminInterface.ts:23 +#: src/interfaces/AdminInterface.ts:64 #: src/pages/events/RuleListPage.ts:29 msgid "Notification Rules" msgstr "" -#: src/interfaces/AdminInterface.ts:23 +#: src/interfaces/AdminInterface.ts:67 #: src/pages/events/TransportListPage.ts:28 msgid "Notification Transports" msgstr "" @@ -2245,15 +2272,12 @@ msgstr "" msgid "Outpost Deployment Info" msgstr "" -#: src/interfaces/AdminInterface.ts:20 -msgid "Outpost Service Connections" -msgstr "" - #: src/pages/outposts/ServiceConnectionListPage.ts:94 msgid "Outpost Service-connection" msgstr "" -#: src/interfaces/AdminInterface.ts:20 +#: src/interfaces/AdminInterface.ts:49 +#: src/interfaces/AdminInterface.ts:51 #: src/pages/outposts/OutpostListPage.ts:29 msgid "Outposts" msgstr "" @@ -2262,8 +2286,9 @@ msgstr "" msgid "Outposts are deployments of authentik components to support different environments and protocols, like reverse proxies." msgstr "" -#: src/interfaces/AdminInterface.ts:17 +#: src/interfaces/AdminInterface.ts:28 #: src/pages/applications/ApplicationViewPage.ts:59 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:56 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:65 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:56 #: src/pages/providers/saml/SAMLProviderViewPage.ts:58 @@ -2323,7 +2348,7 @@ msgstr "" msgid "Please enter your password" msgstr "" -#: src/interfaces/AdminInterface.ts:26 +#: src/interfaces/AdminInterface.ts:74 #: src/pages/flows/FlowListPage.ts:50 #: src/pages/policies/PolicyListPage.ts:38 msgid "Policies" @@ -2426,7 +2451,7 @@ msgstr "" msgid "Prompt for the user's consent. The consent can either be permanent or expire in a defined amount of time." msgstr "" -#: src/interfaces/AdminInterface.ts:29 +#: src/interfaces/AdminInterface.ts:90 #: src/pages/stages/prompt/PromptListPage.ts:28 msgid "Prompts" msgstr "" @@ -2435,7 +2460,7 @@ msgstr "" msgid "Property Mapping" msgstr "" -#: src/interfaces/AdminInterface.ts:26 +#: src/interfaces/AdminInterface.ts:77 #: src/pages/property-mappings/PropertyMappingListPage.ts:35 msgid "Property Mappings" msgstr "" @@ -2452,6 +2477,7 @@ msgstr "" msgid "Property mappings used to user creation." msgstr "" +#: src/pages/providers/ldap/LDAPProviderForm.ts:93 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:81 #: src/pages/providers/proxy/ProxyProviderForm.ts:123 #: src/pages/providers/saml/SAMLProviderForm.ts:78 @@ -2461,7 +2487,7 @@ msgstr "" msgid "Protocol settings" msgstr "" -#: src/pages/providers/ProviderListPage.ts:37 +#: src/pages/providers/ProviderListPage.ts:38 msgid "Provide support for protocols like SAML and OAuth to assigned applications." msgstr "" @@ -2478,14 +2504,14 @@ msgstr "" msgid "Provider Type" msgstr "" -#: src/pages/sources/oauth/OAuthSourceForm.ts:160 +#: src/pages/sources/oauth/OAuthSourceForm.ts:161 msgid "Provider type" msgstr "" -#: src/interfaces/AdminInterface.ts:20 -#: src/pages/outposts/OutpostForm.ts:82 +#: src/interfaces/AdminInterface.ts:44 +#: src/pages/outposts/OutpostForm.ts:83 #: src/pages/outposts/OutpostListPage.ts:51 -#: src/pages/providers/ProviderListPage.ts:34 +#: src/pages/providers/ProviderListPage.ts:35 msgid "Providers" msgstr "" @@ -2594,7 +2620,7 @@ msgstr "" msgid "Related" msgstr "" -#: src/interfaces/Interface.ts:52 +#: src/interfaces/Interface.ts:56 msgid "Reload" msgstr "" @@ -2629,7 +2655,7 @@ msgstr "" msgid "Reset Password" msgstr "" -#: src/interfaces/AdminInterface.ts:20 +#: src/interfaces/AdminInterface.ts:36 msgid "Resources" msgstr "" @@ -2779,7 +2805,7 @@ msgstr "" msgid "Selected policies are executed when the stage is submitted to validate the data." msgstr "" -#: src/pages/outposts/OutpostForm.ts:76 +#: src/pages/outposts/OutpostForm.ts:77 msgid "Selecting a service-connection enables the management of the outpost by authentik." msgstr "" @@ -2816,11 +2842,15 @@ msgstr "" msgid "Server validation of credential failed: {err}" msgstr "" +#: src/interfaces/AdminInterface.ts:54 +msgid "Service Connections" +msgstr "" + #: src/pages/providers/saml/SAMLProviderForm.ts:94 msgid "Service Provider Binding" msgstr "" -#: src/pages/outposts/OutpostForm.ts:61 +#: src/pages/outposts/OutpostForm.ts:62 msgid "Service connection" msgstr "" @@ -2845,7 +2875,7 @@ msgid "Set a custom HTTP-Basic Authentication header based on values from authen msgstr "" #: src/pages/groups/GroupForm.ts:139 -#: src/pages/outposts/OutpostForm.ts:109 +#: src/pages/outposts/OutpostForm.ts:121 #: src/pages/outposts/ServiceConnectionKubernetesForm.ts:73 #: src/pages/policies/PolicyTestForm.ts:79 #: src/pages/users/UserForm.ts:82 @@ -2912,7 +2942,7 @@ msgstr "" msgid "Something went wrong! Please try again later." msgstr "" -#: src/pages/providers/ProviderListPage.ts:91 +#: src/pages/providers/ProviderListPage.ts:92 #: src/pages/sources/SourcesListPage.ts:88 msgid "Source" msgstr "" @@ -2921,7 +2951,7 @@ msgstr "" msgid "Source {0}" msgstr "" -#: src/interfaces/AdminInterface.ts:20 +#: src/interfaces/AdminInterface.ts:41 #: src/pages/sources/SourcesListPage.ts:31 msgid "Sources" msgstr "" @@ -2980,7 +3010,7 @@ msgstr "" msgid "Stage-specific settings" msgstr "" -#: src/interfaces/AdminInterface.ts:29 +#: src/interfaces/AdminInterface.ts:87 #: src/pages/flows/FlowListPage.ts:49 #: src/pages/stages/StageListPage.ts:44 #: src/pages/stages/prompt/PromptListPage.ts:50 @@ -3025,7 +3055,7 @@ msgstr "" msgid "Status: Enabled" msgstr "" -#: src/interfaces/Interface.ts:63 +#: src/interfaces/Interface.ts:67 msgid "Stop impersonation" msgstr "" @@ -3106,6 +3136,7 @@ msgstr "" msgid "Successfully created prompt." msgstr "" +#: src/pages/providers/ldap/LDAPProviderForm.ts:47 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:49 #: src/pages/providers/proxy/ProxyProviderForm.ts:51 #: src/pages/providers/saml/SAMLProviderForm.ts:46 @@ -3243,6 +3274,7 @@ msgstr "" msgid "Successfully updated prompt." msgstr "" +#: src/pages/providers/ldap/LDAPProviderForm.ts:44 #: src/pages/providers/oauth2/OAuth2ProviderForm.ts:46 #: src/pages/providers/proxy/ProxyProviderForm.ts:48 #: src/pages/providers/saml/SAMLProviderForm.ts:43 @@ -3337,7 +3369,7 @@ msgstr "" msgid "System Overview" msgstr "" -#: src/interfaces/AdminInterface.ts:17 +#: src/interfaces/AdminInterface.ts:31 #: src/pages/system-tasks/SystemTaskListPage.ts:27 msgid "System Tasks" msgstr "" @@ -3485,7 +3517,7 @@ msgid "Token validity" msgstr "" #: src/flows/stages/authenticator_static/AuthenticatorStaticStage.ts:62 -#: src/interfaces/AdminInterface.ts:32 +#: src/interfaces/AdminInterface.ts:109 #: src/pages/tokens/TokenListPage.ts:26 #: src/pages/user-settings/UserSettingsPage.ts:77 msgid "Tokens" @@ -3512,7 +3544,7 @@ msgstr "" #: src/pages/outposts/ServiceConnectionListPage.ts:54 #: src/pages/policies/PolicyListPage.ts:57 #: src/pages/property-mappings/PropertyMappingListPage.ts:55 -#: src/pages/providers/ProviderListPage.ts:54 +#: src/pages/providers/ProviderListPage.ts:55 #: src/pages/sources/SourcesListPage.ts:53 #: src/pages/stages/prompt/PromptForm.ts:97 #: src/pages/stages/prompt/PromptListPage.ts:48 @@ -3588,7 +3620,8 @@ msgstr "" #: src/pages/policies/BoundPoliciesList.ts:129 #: src/pages/policies/PolicyListPage.ts:77 #: src/pages/property-mappings/PropertyMappingListPage.ts:66 -#: src/pages/providers/ProviderListPage.ts:73 +#: src/pages/providers/ProviderListPage.ts:74 +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:93 #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts:118 #: src/pages/providers/proxy/ProxyProviderViewPage.ts:117 #: src/pages/providers/saml/SAMLProviderViewPage.ts:111 @@ -3632,6 +3665,10 @@ msgstr "" msgid "Update Group" msgstr "" +#: src/pages/providers/ldap/LDAPProviderViewPage.ts:96 +msgid "Update LDAP Provider" +msgstr "" + #: src/pages/sources/ldap/LDAPSourceViewPage.ts:98 msgid "Update LDAP Source" msgstr "" @@ -3699,7 +3736,7 @@ msgstr "" #: src/pages/policies/BoundPoliciesList.ts:71 #: src/pages/policies/PolicyListPage.ts:80 #: src/pages/property-mappings/PropertyMappingListPage.ts:69 -#: src/pages/providers/ProviderListPage.ts:76 +#: src/pages/providers/ProviderListPage.ts:77 #: src/pages/sources/SourcesListPage.ts:73 #: src/pages/stages/StageListPage.ts:88 #: src/pages/users/UserActiveForm.ts:41 @@ -3831,7 +3868,7 @@ msgstr "" msgid "Username: Same as Text input, but checks for and prevents duplicate usernames." msgstr "" -#: src/interfaces/AdminInterface.ts:32 +#: src/interfaces/AdminInterface.ts:100 #: src/pages/admin-overview/AdminOverviewPage.ts:50 #: src/pages/users/UserListPage.ts:33 msgid "Users" @@ -3841,6 +3878,10 @@ msgstr "" msgid "Users added to this group will be superusers." msgstr "" +#: src/pages/providers/ldap/LDAPProviderForm.ts:88 +msgid "Users in the selected group can do search queries." +msgstr "" + #: src/pages/events/EventInfo.ts:108 msgid "Using flow" msgstr "" @@ -3918,7 +3959,7 @@ msgstr "" msgid "Warning: Policy is not assigned." msgstr "" -#: src/pages/providers/ProviderListPage.ts:68 +#: src/pages/providers/ProviderListPage.ts:69 msgid "Warning: Provider not assigned to any application." msgstr "" @@ -4007,7 +4048,7 @@ msgstr "" msgid "Yes" msgstr "" -#: src/interfaces/Interface.ts:61 +#: src/interfaces/Interface.ts:65 msgid "You're currently impersonating {0}." msgstr ""