Compare commits
	
		
			4 Commits
		
	
	
		
			tests/e2e/
			...
			version/20
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8ff27f69e1 | |||
| 045cd98276 | |||
| b520843984 | |||
| 92216e4ea8 | 
@ -1,16 +1,16 @@
 | 
				
			|||||||
[bumpversion]
 | 
					[bumpversion]
 | 
				
			||||||
current_version = 2023.10.7
 | 
					current_version = 2024.2.0-rc1
 | 
				
			||||||
tag = True
 | 
					tag = True
 | 
				
			||||||
commit = True
 | 
					commit = True
 | 
				
			||||||
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(?:-(?P<rc_t>[a-zA-Z-]+)(?P<rc_n>[1-9]\\d*))?
 | 
					parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(?:-(?P<rc_t>[a-zA-Z-]+)(?P<rc_n>[1-9]\\d*))?
 | 
				
			||||||
serialize =
 | 
					serialize = 
 | 
				
			||||||
	{major}.{minor}.{patch}-{rc_t}{rc_n}
 | 
						{major}.{minor}.{patch}-{rc_t}{rc_n}
 | 
				
			||||||
	{major}.{minor}.{patch}
 | 
						{major}.{minor}.{patch}
 | 
				
			||||||
message = release: {new_version}
 | 
					message = release: {new_version}
 | 
				
			||||||
tag_name = version/{new_version}
 | 
					tag_name = version/{new_version}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[bumpversion:part:rc_t]
 | 
					[bumpversion:part:rc_t]
 | 
				
			||||||
values =
 | 
					values = 
 | 
				
			||||||
	rc
 | 
						rc
 | 
				
			||||||
	final
 | 
						final
 | 
				
			||||||
optional_value = final
 | 
					optional_value = final
 | 
				
			||||||
 | 
				
			|||||||
@ -78,8 +78,9 @@ runs:
 | 
				
			|||||||
                suffix = f"-{image_arch}"
 | 
					                suffix = f"-{image_arch}"
 | 
				
			||||||
            for name in image_names:
 | 
					            for name in image_names:
 | 
				
			||||||
                image_tags += [
 | 
					                image_tags += [
 | 
				
			||||||
                    f"{name}:gh-{sha}{suffix}",
 | 
					                    f"{name}:gh-{sha}{suffix}",  # Used for ArgoCD and PR comments
 | 
				
			||||||
                    f"{name}:gh-{safe_branch_name}{suffix}",
 | 
					                    f"{name}:gh-{safe_branch_name}{suffix}",  # For convenience
 | 
				
			||||||
 | 
					                    f"{name}:gh-{safe_branch_name}-{int(time())}-{sha[:7]}{suffix}",  # Use by FluxCD
 | 
				
			||||||
                ]
 | 
					                ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        image_main_tag = image_tags[0]
 | 
					        image_main_tag = image_tags[0]
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
from os import environ
 | 
					from os import environ
 | 
				
			||||||
from typing import Optional
 | 
					from typing import Optional
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__version__ = "2023.10.7"
 | 
					__version__ = "2024.2.0"
 | 
				
			||||||
ENV_GIT_HASH_KEY = "GIT_BUILD_HASH"
 | 
					ENV_GIT_HASH_KEY = "GIT_BUILD_HASH"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -32,7 +32,7 @@ services:
 | 
				
			|||||||
    volumes:
 | 
					    volumes:
 | 
				
			||||||
      - redis:/data
 | 
					      - redis:/data
 | 
				
			||||||
  server:
 | 
					  server:
 | 
				
			||||||
    image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.10.7}
 | 
					    image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.2.0}
 | 
				
			||||||
    restart: unless-stopped
 | 
					    restart: unless-stopped
 | 
				
			||||||
    command: server
 | 
					    command: server
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
@ -53,7 +53,7 @@ services:
 | 
				
			|||||||
      - postgresql
 | 
					      - postgresql
 | 
				
			||||||
      - redis
 | 
					      - redis
 | 
				
			||||||
  worker:
 | 
					  worker:
 | 
				
			||||||
    image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.10.7}
 | 
					    image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.2.0}
 | 
				
			||||||
    restart: unless-stopped
 | 
					    restart: unless-stopped
 | 
				
			||||||
    command: worker
 | 
					    command: worker
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
 | 
				
			|||||||
@ -29,4 +29,4 @@ func UserAgent() string {
 | 
				
			|||||||
	return fmt.Sprintf("authentik@%s", FullVersion())
 | 
						return fmt.Sprintf("authentik@%s", FullVersion())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const VERSION = "2023.10.7"
 | 
					const VERSION = "2024.2.0"
 | 
				
			||||||
 | 
				
			|||||||
@ -86,6 +86,7 @@ elif [[ "$1" == "bash" ]]; then
 | 
				
			|||||||
    /bin/bash
 | 
					    /bin/bash
 | 
				
			||||||
elif [[ "$1" == "test-all" ]]; then
 | 
					elif [[ "$1" == "test-all" ]]; then
 | 
				
			||||||
    prepare_debug
 | 
					    prepare_debug
 | 
				
			||||||
 | 
					    chmod 777 /root
 | 
				
			||||||
    check_if_root "python -m manage test authentik"
 | 
					    check_if_root "python -m manage test authentik"
 | 
				
			||||||
elif [[ "$1" == "healthcheck" ]]; then
 | 
					elif [[ "$1" == "healthcheck" ]]; then
 | 
				
			||||||
    run_authentik healthcheck $(cat $MODE_FILE)
 | 
					    run_authentik healthcheck $(cat $MODE_FILE)
 | 
				
			||||||
 | 
				
			|||||||
@ -113,7 +113,7 @@ filterwarnings = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[tool.poetry]
 | 
					[tool.poetry]
 | 
				
			||||||
name = "authentik"
 | 
					name = "authentik"
 | 
				
			||||||
version = "2023.10.7"
 | 
					version = "2024.2.0"
 | 
				
			||||||
description = ""
 | 
					description = ""
 | 
				
			||||||
authors = ["authentik Team <hello@goauthentik.io>"]
 | 
					authors = ["authentik Team <hello@goauthentik.io>"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
openapi: 3.0.3
 | 
					openapi: 3.0.3
 | 
				
			||||||
info:
 | 
					info:
 | 
				
			||||||
  title: authentik
 | 
					  title: authentik
 | 
				
			||||||
  version: 2023.10.7
 | 
					  version: 2024.2.0
 | 
				
			||||||
  description: Making authentication simple.
 | 
					  description: Making authentication simple.
 | 
				
			||||||
  contact:
 | 
					  contact:
 | 
				
			||||||
    email: hello@goauthentik.io
 | 
					    email: hello@goauthentik.io
 | 
				
			||||||
 | 
				
			|||||||
@ -22,25 +22,36 @@ import { AdminApi, Settings, SettingsRequest } from "@goauthentik/api";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@customElement("ak-admin-settings-form")
 | 
					@customElement("ak-admin-settings-form")
 | 
				
			||||||
export class AdminSettingsForm extends Form<SettingsRequest> {
 | 
					export class AdminSettingsForm extends Form<SettingsRequest> {
 | 
				
			||||||
    @property({ attribute: false })
 | 
					    //
 | 
				
			||||||
    set settings(value: Settings) {
 | 
					    // Custom property accessors in Lit 2 require a manual call to requestUpdate(). See:
 | 
				
			||||||
 | 
					    // https://lit.dev/docs/v2/components/properties/#accessors-custom
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    set settings(value: Settings | undefined) {
 | 
				
			||||||
        this._settings = value;
 | 
					        this._settings = value;
 | 
				
			||||||
 | 
					        this.requestUpdate();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property({ type: Object })
 | 
				
			||||||
 | 
					    get settings() {
 | 
				
			||||||
 | 
					        return this._settings;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private _settings?: Settings;
 | 
					    private _settings?: Settings;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    static get styles(): CSSResult[] {
 | 
				
			||||||
 | 
					        return super.styles.concat(PFList);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    getSuccessMessage(): string {
 | 
					    getSuccessMessage(): string {
 | 
				
			||||||
        return msg("Successfully updated settings.");
 | 
					        return msg("Successfully updated settings.");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async send(data: SettingsRequest): Promise<Settings> {
 | 
					    async send(data: SettingsRequest): Promise<Settings> {
 | 
				
			||||||
        return new AdminApi(DEFAULT_CONFIG).adminSettingsUpdate({
 | 
					        const result = await new AdminApi(DEFAULT_CONFIG).adminSettingsUpdate({
 | 
				
			||||||
            settingsRequest: data,
 | 
					            settingsRequest: data,
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					        this.dispatchEvent(new CustomEvent("ak-admin-setting-changed"));
 | 
				
			||||||
 | 
					        return result;
 | 
				
			||||||
    static get styles(): CSSResult[] {
 | 
					 | 
				
			||||||
        return super.styles.concat(PFList);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    renderForm(): TemplateResult {
 | 
					    renderForm(): TemplateResult {
 | 
				
			||||||
 | 
				
			|||||||
@ -14,8 +14,8 @@ import "@goauthentik/elements/buttons/SpinnerButton";
 | 
				
			|||||||
import "@goauthentik/elements/forms/ModalForm";
 | 
					import "@goauthentik/elements/forms/ModalForm";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { msg } from "@lit/localize";
 | 
					import { msg } from "@lit/localize";
 | 
				
			||||||
import { CSSResult, TemplateResult, html } from "lit";
 | 
					import { html, nothing } from "lit";
 | 
				
			||||||
import { customElement, property } from "lit/decorators.js";
 | 
					import { customElement, query, state } from "lit/decorators.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import PFBanner from "@patternfly/patternfly/components/Banner/banner.css";
 | 
					import PFBanner from "@patternfly/patternfly/components/Banner/banner.css";
 | 
				
			||||||
import PFButton from "@patternfly/patternfly/components/Button/button.css";
 | 
					import PFButton from "@patternfly/patternfly/components/Button/button.css";
 | 
				
			||||||
@ -32,7 +32,7 @@ import { AdminApi, Settings } from "@goauthentik/api";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@customElement("ak-admin-settings")
 | 
					@customElement("ak-admin-settings")
 | 
				
			||||||
export class AdminSettingsPage extends AKElement {
 | 
					export class AdminSettingsPage extends AKElement {
 | 
				
			||||||
    static get styles(): CSSResult[] {
 | 
					    static get styles() {
 | 
				
			||||||
        return [
 | 
					        return [
 | 
				
			||||||
            PFBase,
 | 
					            PFBase,
 | 
				
			||||||
            PFButton,
 | 
					            PFButton,
 | 
				
			||||||
@ -46,41 +46,46 @@ export class AdminSettingsPage extends AKElement {
 | 
				
			|||||||
            PFBanner,
 | 
					            PFBanner,
 | 
				
			||||||
        ];
 | 
					        ];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    @property({ attribute: false })
 | 
					
 | 
				
			||||||
 | 
					    @query("ak-admin-settings-form#form")
 | 
				
			||||||
 | 
					    form?: AdminSettingsForm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @state()
 | 
				
			||||||
    settings?: Settings;
 | 
					    settings?: Settings;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    loadSettings(): void {
 | 
					    constructor() {
 | 
				
			||||||
        new AdminApi(DEFAULT_CONFIG).adminSettingsRetrieve().then((settings) => {
 | 
					        super();
 | 
				
			||||||
 | 
					        AdminSettingsPage.fetchSettings().then((settings) => {
 | 
				
			||||||
            this.settings = settings;
 | 
					            this.settings = settings;
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					        this.save = this.save.bind(this);
 | 
				
			||||||
 | 
					        this.reset = this.reset.bind(this);
 | 
				
			||||||
 | 
					        this.addEventListener("ak-admin-setting-changed", this.handleUpdate.bind(this));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    firstUpdated(): void {
 | 
					    static async fetchSettings() {
 | 
				
			||||||
        this.loadSettings();
 | 
					        return await new AdminApi(DEFAULT_CONFIG).adminSettingsRetrieve();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async save(): Promise<void> {
 | 
					    async handleUpdate() {
 | 
				
			||||||
        const form = this.shadowRoot?.querySelector<AdminSettingsForm>("ak-admin-settings-form");
 | 
					        this.settings = await AdminSettingsPage.fetchSettings();
 | 
				
			||||||
        if (!form) {
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    async save() {
 | 
				
			||||||
 | 
					        if (!this.form) {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        await form.submit(new Event("submit"));
 | 
					        await this.form.submit(new Event("submit"));
 | 
				
			||||||
        this.resetForm();
 | 
					        this.settings = await AdminSettingsPage.fetchSettings();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    resetForm(): void {
 | 
					    async reset() {
 | 
				
			||||||
        const form = this.shadowRoot?.querySelector<AdminSettingsForm>("ak-admin-settings-form");
 | 
					        this.form?.resetForm();
 | 
				
			||||||
        if (!form) {
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        this.loadSettings();
 | 
					 | 
				
			||||||
        form.settings = this.settings!;
 | 
					 | 
				
			||||||
        form.resetForm();
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    render(): TemplateResult {
 | 
					    render() {
 | 
				
			||||||
        if (!this.settings) {
 | 
					        if (!this.settings) {
 | 
				
			||||||
            return html``;
 | 
					            return nothing;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return html`
 | 
					        return html`
 | 
				
			||||||
            <ak-page-header icon="fa fa-cog" header="" description="">
 | 
					            <ak-page-header icon="fa fa-cog" header="" description="">
 | 
				
			||||||
@ -93,18 +98,10 @@ export class AdminSettingsPage extends AKElement {
 | 
				
			|||||||
                        </ak-admin-settings-form>
 | 
					                        </ak-admin-settings-form>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                    <div class="pf-c-card__footer">
 | 
					                    <div class="pf-c-card__footer">
 | 
				
			||||||
                        <ak-spinner-button
 | 
					                        <ak-spinner-button .callAction=${this.save} class="pf-m-primary"
 | 
				
			||||||
                            .callAction=${async () => {
 | 
					 | 
				
			||||||
                                await this.save();
 | 
					 | 
				
			||||||
                            }}
 | 
					 | 
				
			||||||
                            class="pf-m-primary"
 | 
					 | 
				
			||||||
                            >${msg("Save")}</ak-spinner-button
 | 
					                            >${msg("Save")}</ak-spinner-button
 | 
				
			||||||
                        >
 | 
					                        >
 | 
				
			||||||
                        <ak-spinner-button
 | 
					                        <ak-spinner-button .callAction=${this.reset} class="pf-m-secondary"
 | 
				
			||||||
                            .callAction=${() => {
 | 
					 | 
				
			||||||
                                this.resetForm();
 | 
					 | 
				
			||||||
                            }}
 | 
					 | 
				
			||||||
                            class="pf-m-secondary"
 | 
					 | 
				
			||||||
                            >${msg("Cancel")}</ak-spinner-button
 | 
					                            >${msg("Cancel")}</ak-spinner-button
 | 
				
			||||||
                        >
 | 
					                        >
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@ export const SUCCESS_CLASS = "pf-m-success";
 | 
				
			|||||||
export const ERROR_CLASS = "pf-m-danger";
 | 
					export const ERROR_CLASS = "pf-m-danger";
 | 
				
			||||||
export const PROGRESS_CLASS = "pf-m-in-progress";
 | 
					export const PROGRESS_CLASS = "pf-m-in-progress";
 | 
				
			||||||
export const CURRENT_CLASS = "pf-m-current";
 | 
					export const CURRENT_CLASS = "pf-m-current";
 | 
				
			||||||
export const VERSION = "2023.10.7";
 | 
					export const VERSION = "2024.2.0";
 | 
				
			||||||
export const TITLE_DEFAULT = "authentik";
 | 
					export const TITLE_DEFAULT = "authentik";
 | 
				
			||||||
export const ROUTE_SEPARATOR = ";";
 | 
					export const ROUTE_SEPARATOR = ";";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user