diff --git a/authentik/core/types.py b/authentik/core/types.py
index a10be69bb..892f58e7e 100644
--- a/authentik/core/types.py
+++ b/authentik/core/types.py
@@ -29,3 +29,4 @@ class UserSettingSerializer(PassiveSerializer):
component = CharField()
title = CharField()
configure_url = CharField(required=False)
+ icon_url = CharField()
diff --git a/authentik/sources/oauth/models.py b/authentik/sources/oauth/models.py
index dfbb8f5a0..de7156442 100644
--- a/authentik/sources/oauth/models.py
+++ b/authentik/sources/oauth/models.py
@@ -75,14 +75,17 @@ class OAuthSource(Source):
)
def ui_user_settings(self) -> Optional[UserSettingSerializer]:
+ provider_type = self.type
+ provider = provider_type()
return UserSettingSerializer(
data={
- "title": f"OAuth {self.name}",
+ "title": self.name,
"component": "ak-user-settings-source-oauth",
"configure_url": reverse(
"authentik_sources_oauth:oauth-client-login",
kwargs={"source_slug": self.slug},
),
+ "icon_url": provider.icon_url(),
}
)
diff --git a/authentik/sources/plex/models.py b/authentik/sources/plex/models.py
index c16fd28dd..734f7fefa 100644
--- a/authentik/sources/plex/models.py
+++ b/authentik/sources/plex/models.py
@@ -80,9 +80,10 @@ class PlexSource(Source):
def ui_user_settings(self) -> Optional[UserSettingSerializer]:
return UserSettingSerializer(
data={
- "title": f"Plex {self.name}",
+ "title": self.name,
"component": "ak-user-settings-source-plex",
"configure_url": self.client_id,
+ "icon_url": static("authentik/sources/plex.svg"),
}
)
diff --git a/schema.yml b/schema.yml
index e48e8fe8c..9d8a463d4 100644
--- a/schema.yml
+++ b/schema.yml
@@ -31275,8 +31275,11 @@ components:
type: string
configure_url:
type: string
+ icon_url:
+ type: string
required:
- component
+ - icon_url
- object_uid
- title
UserSourceConnection:
diff --git a/web/src/authentik.css b/web/src/authentik.css
index 1467a7e27..ce62eb54c 100644
--- a/web/src/authentik.css
+++ b/web/src/authentik.css
@@ -339,9 +339,16 @@ html > form > input {
) !important;
}
/* data list */
+ .pf-c-data-list {
+ border-top-color: var(--ak-dark-background-lighter);
+ }
.pf-c-data-list__item {
- --pf-c-data-list__item--BackgroundColor: var(--ak-dark-background-light);
+ --pf-c-data-list__item--BackgroundColor: transparent;
--pf-c-data-list__item--BorderBottomColor: var(--ak-dark-background-lighter);
color: var(--ak-dark-foreground);
}
}
+
+.pf-c-data-list__item {
+ background-color: transparent;
+}
diff --git a/web/src/flows/stages/identification/IdentificationStage.ts b/web/src/flows/stages/identification/IdentificationStage.ts
index 4b1447bc2..841aa9b06 100644
--- a/web/src/flows/stages/identification/IdentificationStage.ts
+++ b/web/src/flows/stages/identification/IdentificationStage.ts
@@ -168,13 +168,13 @@ export class IdentificationStage extends BaseStage<
}
return html`
${this.challenge.enrollUrl
- ? html`
+ ? html`
${t`Need an account?`}
${t`Sign up.`}
`
: html``}
${this.challenge.recoveryUrl
- ? html`
+ ? html`
${t`Forgot username or password?`}
diff --git a/web/src/locales/en.po b/web/src/locales/en.po
index dcc9c4936..35c16fc82 100644
--- a/web/src/locales/en.po
+++ b/web/src/locales/en.po
@@ -988,14 +988,18 @@ msgstr "Connect"
msgid "Connect to the LDAP Server on port 389:"
msgstr "Connect to the LDAP Server on port 389:"
+#: src/user/user-settings/sources/SourceSettings.ts
+msgid "Connect your user account to the services listed below, to allow you to login using the service instead of traditional credentials."
+msgstr "Connect your user account to the services listed below, to allow you to login using the service instead of traditional credentials."
+
#: src/user/user-settings/UserSettingsPage.ts
msgid "Connected services"
msgstr "Connected services"
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Connected."
-msgstr "Connected."
+#~ msgid "Connected."
+#~ msgstr "Connected."
#: src/common/ws.ts
msgid "Connection error, reconnecting..."
@@ -3138,8 +3142,8 @@ msgstr "Not configured action"
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Not connected."
-msgstr "Not connected."
+#~ msgid "Not connected."
+#~ msgstr "Not connected."
#: src/elements/router/Router404.ts
msgid "Not found"
@@ -4329,8 +4333,8 @@ msgstr "Source linked"
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Source {0}"
-msgstr "Source {0}"
+#~ msgid "Source {0}"
+#~ msgstr "Source {0}"
#: src/pages/sources/SourcesListPage.ts
msgid "Source(s)"
diff --git a/web/src/locales/fr_FR.po b/web/src/locales/fr_FR.po
index c681ddf21..3bfbc510c 100644
--- a/web/src/locales/fr_FR.po
+++ b/web/src/locales/fr_FR.po
@@ -987,14 +987,18 @@ msgstr "Connecter"
msgid "Connect to the LDAP Server on port 389:"
msgstr ""
+#: src/user/user-settings/sources/SourceSettings.ts
+msgid "Connect your user account to the services listed below, to allow you to login using the service instead of traditional credentials."
+msgstr ""
+
#: src/user/user-settings/UserSettingsPage.ts
msgid "Connected services"
msgstr "Services connectés"
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Connected."
-msgstr "Connecté."
+#~ msgid "Connected."
+#~ msgstr "Connecté."
#: src/common/ws.ts
msgid "Connection error, reconnecting..."
@@ -3117,8 +3121,8 @@ msgstr "Action non configurée"
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Not connected."
-msgstr "Déconnecté."
+#~ msgid "Not connected."
+#~ msgstr "Déconnecté."
#: src/elements/router/Router404.ts
msgid "Not found"
@@ -4292,8 +4296,8 @@ msgstr "Source liée"
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Source {0}"
-msgstr "Source {0}"
+#~ msgid "Source {0}"
+#~ msgstr "Source {0}"
#: src/pages/sources/SourcesListPage.ts
msgid "Source(s)"
diff --git a/web/src/locales/pseudo-LOCALE.po b/web/src/locales/pseudo-LOCALE.po
index c7d800837..1747c7d0e 100644
--- a/web/src/locales/pseudo-LOCALE.po
+++ b/web/src/locales/pseudo-LOCALE.po
@@ -982,14 +982,18 @@ msgstr ""
msgid "Connect to the LDAP Server on port 389:"
msgstr ""
+#: src/user/user-settings/sources/SourceSettings.ts
+msgid "Connect your user account to the services listed below, to allow you to login using the service instead of traditional credentials."
+msgstr ""
+
#: src/user/user-settings/UserSettingsPage.ts
msgid "Connected services"
msgstr ""
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Connected."
-msgstr ""
+#~ msgid "Connected."
+#~ msgstr ""
#: src/common/ws.ts
msgid "Connection error, reconnecting..."
@@ -3128,8 +3132,8 @@ msgstr ""
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Not connected."
-msgstr ""
+#~ msgid "Not connected."
+#~ msgstr ""
#: src/elements/router/Router404.ts
msgid "Not found"
@@ -4319,8 +4323,8 @@ msgstr ""
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Source {0}"
-msgstr ""
+#~ msgid "Source {0}"
+#~ msgstr ""
#: src/pages/sources/SourcesListPage.ts
msgid "Source(s)"
diff --git a/web/src/locales/tr.po b/web/src/locales/tr.po
index 34af78219..348c9fd1f 100644
--- a/web/src/locales/tr.po
+++ b/web/src/locales/tr.po
@@ -978,14 +978,18 @@ msgstr "Bağlan"
msgid "Connect to the LDAP Server on port 389:"
msgstr "Bağlantı noktası 389 LDAP sunucusuna bağlanın:"
+#: src/user/user-settings/sources/SourceSettings.ts
+msgid "Connect your user account to the services listed below, to allow you to login using the service instead of traditional credentials."
+msgstr ""
+
#: src/user/user-settings/UserSettingsPage.ts
msgid "Connected services"
msgstr "Bağlı hizmetler"
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Connected."
-msgstr "Bağlantılı."
+#~ msgid "Connected."
+#~ msgstr "Bağlantılı."
#: src/common/ws.ts
msgid "Connection error, reconnecting..."
@@ -3091,8 +3095,8 @@ msgstr "Yapılandırılmış eylem"
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Not connected."
-msgstr "Bağlantılı değil."
+#~ msgid "Not connected."
+#~ msgstr "Bağlantılı değil."
#: src/elements/router/Router404.ts
msgid "Not found"
@@ -4253,8 +4257,8 @@ msgstr "Kaynak bağlantılı"
#: src/user/user-settings/sources/SourceSettingsOAuth.ts
#: src/user/user-settings/sources/SourceSettingsPlex.ts
-msgid "Source {0}"
-msgstr "Kaynak {0}"
+#~ msgid "Source {0}"
+#~ msgstr "Kaynak {0}"
#: src/pages/sources/SourcesListPage.ts
msgid "Source(s)"
diff --git a/web/src/user/user-settings/BaseUserSettings.ts b/web/src/user/user-settings/BaseUserSettings.ts
index 8ef00ab78..666563663 100644
--- a/web/src/user/user-settings/BaseUserSettings.ts
+++ b/web/src/user/user-settings/BaseUserSettings.ts
@@ -3,7 +3,6 @@ import { property } from "lit/decorators.js";
import AKGlobal from "../../authentik.css";
import PFButton from "@patternfly/patternfly/components/Button/button.css";
-import PFCard from "@patternfly/patternfly/components/Card/card.css";
import PFForm from "@patternfly/patternfly/components/Form/form.css";
import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css";
import PFBase from "@patternfly/patternfly/patternfly-base.css";
@@ -16,6 +15,6 @@ export abstract class BaseUserSettings extends LitElement {
configureUrl?: string;
static get styles(): CSSResult[] {
- return [PFBase, PFCard, PFButton, PFForm, PFFormControl, AKGlobal];
+ return [PFBase, PFButton, PFForm, PFFormControl, AKGlobal];
}
}
diff --git a/web/src/user/user-settings/sources/SourceSettings.ts b/web/src/user/user-settings/sources/SourceSettings.ts
index 2e9321f65..0a69f658d 100644
--- a/web/src/user/user-settings/sources/SourceSettings.ts
+++ b/web/src/user/user-settings/sources/SourceSettings.ts
@@ -1,10 +1,12 @@
import { t } from "@lingui/macro";
-import { CSSResult, LitElement, TemplateResult, html } from "lit";
+import { CSSResult, LitElement, TemplateResult, css, html } from "lit";
import { customElement, property } from "lit/decorators.js";
import { until } from "lit/directives/until.js";
-import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css";
+import AKGlobal from "../../../authentik.css";
+import PFContent from "@patternfly/patternfly/components/Content/content.css";
+import PFDataList from "@patternfly/patternfly/components/DataList/data-list.css";
import { SourcesApi, UserSetting } from "@goauthentik/api";
@@ -20,7 +22,27 @@ export class UserSourceSettingsPage extends LitElement {
sourceSettings?: Promise;
static get styles(): CSSResult[] {
- return [PFGrid];
+ return [
+ PFDataList,
+ PFContent,
+ AKGlobal,
+ css`
+ .pf-c-data-list__cell {
+ display: flex;
+ align-items: center;
+ }
+ .pf-c-data-list__cell img {
+ max-width: 48px;
+ width: 48px;
+ margin-right: 16px;
+ }
+ @media (prefers-color-scheme: dark) {
+ .pf-c-data-list__cell img {
+ filter: invert(1);
+ }
+ }
+ `,
+ ];
}
constructor() {
@@ -38,6 +60,7 @@ export class UserSourceSettingsPage extends LitElement {
switch (source.component) {
case "ak-user-settings-source-oauth":
return html``;
case "ak-user-settings-source-plex":
return html`
- ${until(
- this.sourceSettings?.then((source) => {
- if (source.length < 1) {
- return html``;
- }
- return source.map((stage) => {
- return html`
- ${this.renderSourceSettings(stage)}
-
`;
- });
- }),
- html` `,
- )}
-
`;
+ return html`
+
+ ${t`Connect your user account to the services listed below, to allow you to login using the service instead of traditional credentials.`}
+
+
+