149 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
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
 | 
						|
  - attrs:
 | 
						|
      order: 200
 | 
						|
      placeholder: Username
 | 
						|
      placeholder_expression: false
 | 
						|
      initial_value: |
 | 
						|
        try:
 | 
						|
            return user.username
 | 
						|
        except:
 | 
						|
            return ''
 | 
						|
      initial_value_expression: true
 | 
						|
      required: true
 | 
						|
      type: username
 | 
						|
      field_key: username
 | 
						|
      label: Username
 | 
						|
    identifiers:
 | 
						|
      name: default-user-settings-field-username
 | 
						|
    id: prompt-field-username
 | 
						|
    model: authentik_stages_prompt.prompt
 | 
						|
  - attrs:
 | 
						|
      order: 201
 | 
						|
      placeholder: Name
 | 
						|
      placeholder_expression: false
 | 
						|
      initial_value: |
 | 
						|
        try:
 | 
						|
            return user.name
 | 
						|
        except:
 | 
						|
            return ''
 | 
						|
      initial_value_expression: true
 | 
						|
      required: true
 | 
						|
      type: text
 | 
						|
      field_key: name
 | 
						|
      label: Name
 | 
						|
    identifiers:
 | 
						|
      name: default-user-settings-field-name
 | 
						|
    id: prompt-field-name
 | 
						|
    model: authentik_stages_prompt.prompt
 | 
						|
  - attrs:
 | 
						|
      order: 202
 | 
						|
      placeholder: Email
 | 
						|
      placeholder_expression: false
 | 
						|
      initial_value: |
 | 
						|
        try:
 | 
						|
            return user.email
 | 
						|
        except:
 | 
						|
            return ''
 | 
						|
      initial_value_expression: true
 | 
						|
      required: true
 | 
						|
      type: email
 | 
						|
      field_key: email
 | 
						|
      label: Email
 | 
						|
    identifiers:
 | 
						|
      name: default-user-settings-field-email
 | 
						|
    id: prompt-field-email
 | 
						|
    model: authentik_stages_prompt.prompt
 | 
						|
  - attrs:
 | 
						|
      order: 203
 | 
						|
      placeholder: Locale
 | 
						|
      placeholder_expression: false
 | 
						|
      initial_value: |
 | 
						|
        try:
 | 
						|
            return user.attributes.get("settings", {}).get("locale", "")
 | 
						|
        except:
 | 
						|
            return ''
 | 
						|
      initial_value_expression: true
 | 
						|
      required: true
 | 
						|
      type: ak-locale
 | 
						|
      field_key: attributes.settings.locale
 | 
						|
      label: Locale
 | 
						|
    identifiers:
 | 
						|
      name: default-user-settings-field-locale
 | 
						|
    id: prompt-field-locale
 | 
						|
    model: authentik_stages_prompt.prompt
 | 
						|
  - attrs:
 | 
						|
      expression: |
 | 
						|
        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, request.http_request.tenant.default_user_change_email
 | 
						|
        ):
 | 
						|
            if prompt_data.get("email") != request.user.email:
 | 
						|
                ak_message("Not allowed to change email address.")
 | 
						|
                return False
 | 
						|
 | 
						|
        if not request.user.group_attributes(request.http_request).get(
 | 
						|
            USER_ATTRIBUTE_CHANGE_NAME, request.http_request.tenant.default_user_change_name
 | 
						|
        ):
 | 
						|
            if prompt_data.get("name") != request.user.name:
 | 
						|
                ak_message("Not allowed to change name.")
 | 
						|
                return False
 | 
						|
 | 
						|
        if not request.user.group_attributes(request.http_request).get(
 | 
						|
            USER_ATTRIBUTE_CHANGE_USERNAME, request.http_request.tenant.default_user_change_username
 | 
						|
        ):
 | 
						|
            if prompt_data.get("username") != request.user.username:
 | 
						|
                ak_message("Not allowed to change username.")
 | 
						|
                return False
 | 
						|
 | 
						|
        return True
 | 
						|
    identifiers:
 | 
						|
      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
 | 
						|
  - attrs:
 | 
						|
      fields:
 | 
						|
        - !KeyOf prompt-field-username
 | 
						|
        - !KeyOf prompt-field-name
 | 
						|
        - !KeyOf prompt-field-email
 | 
						|
        - !KeyOf prompt-field-locale
 | 
						|
      validation_policies:
 | 
						|
        - !KeyOf default-user-settings-authorization
 | 
						|
    identifiers:
 | 
						|
      name: default-user-settings
 | 
						|
    id: default-user-settings
 | 
						|
    model: authentik_stages_prompt.promptstage
 | 
						|
  - identifiers:
 | 
						|
      order: 20
 | 
						|
      stage: !KeyOf default-user-settings
 | 
						|
      target: !KeyOf flow
 | 
						|
    model: authentik_flows.flowstagebinding
 | 
						|
  - identifiers:
 | 
						|
      order: 100
 | 
						|
      stage: !KeyOf default-user-settings-write
 | 
						|
      target: !KeyOf flow
 | 
						|
    model: authentik_flows.flowstagebinding
 |