Compare commits
4 Commits
5165-passw
...
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