version: 1
metadata:
name: Default - User settings flow
entries:
- attrs:
designation: stage_configuration
name: User settings
title: Update your info
authentication: require_authenticated
identifiers:
slug: default-user-settings-flow
model: authentik_flows.flow
id: flow
order: 200
placeholder: |
try:
return user.username
except:
return ''
placeholder_expression: true
required: true
type: text
field_key: username
label: Username
name: default-user-settings-field-username
id: prompt-field-username
model: authentik_stages_prompt.prompt
order: 201
return user.name
field_key: name
label: Name
name: default-user-settings-field-name
id: prompt-field-name
order: 202
return user.email
type: email
field_key: email
label: Email
name: default-user-settings-field-email
id: prompt-field-email
order: 203
return user.attributes.get("settings", {}).get("locale", "")
type: ak-locale
field_key: attributes.settings.locale
label: Locale
name: default-user-settings-field-locale
id: prompt-field-locale
expression: |
from authentik.lib.config import CONFIG
from authentik.core.models import (
USER_ATTRIBUTE_CHANGE_EMAIL,
USER_ATTRIBUTE_CHANGE_NAME,
USER_ATTRIBUTE_CHANGE_USERNAME
)
prompt_data = request.context.get("prompt_data")
if not request.user.group_attributes(request.http_request).get(
USER_ATTRIBUTE_CHANGE_EMAIL, CONFIG.y_bool("default_user_change_email", True)
):
if prompt_data.get("email") != request.user.email:
ak_message("Not allowed to change email address.")
return False
USER_ATTRIBUTE_CHANGE_NAME, CONFIG.y_bool("default_user_change_name", True)
if prompt_data.get("name") != request.user.name:
ak_message("Not allowed to change name.")
USER_ATTRIBUTE_CHANGE_USERNAME, CONFIG.y_bool("default_user_change_username", True)
if prompt_data.get("username") != request.user.username:
ak_message("Not allowed to change username.")
return True
name: default-user-settings-authorization
id: default-user-settings-authorization
model: authentik_policies_expression.expressionpolicy
- identifiers:
name: default-user-settings-write
attrs:
user_creation_mode: never_create
id: default-user-settings-write
model: authentik_stages_user_write.userwritestage
fields:
- !KeyOf prompt-field-username
- !KeyOf prompt-field-name
- !KeyOf prompt-field-email
- !KeyOf prompt-field-locale
validation_policies:
- !KeyOf default-user-settings-authorization
name: default-user-settings
id: default-user-settings
model: authentik_stages_prompt.promptstage
order: 20
stage: !KeyOf default-user-settings
target: !KeyOf flow
model: authentik_flows.flowstagebinding
order: 100
stage: !KeyOf default-user-settings-write