Compare commits
	
		
			4 Commits
		
	
	
		
			version/20
			...
			version/20
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8ff27f69e1 | |||
| 045cd98276 | |||
| b520843984 | |||
| 92216e4ea8 | 
| @ -1,5 +1,5 @@ | |||||||
| [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*))? | ||||||
|  | |||||||
| @ -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
	