Compare commits

..

1 Commits

Author SHA1 Message Date
00608c1143 wip add username whitespace check to invitation flow blueprint 2024-02-15 15:02:38 +01:00
3 changed files with 26 additions and 8 deletions

View File

@ -76,7 +76,7 @@ services:
- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}" - "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}"
- "traefik.http.middlewares.${STACK_NAME}-frameOptions.headers.customFrameOptionsValue=SAMEORIGIN" - "traefik.http.middlewares.${STACK_NAME}-frameOptions.headers.customFrameOptionsValue=SAMEORIGIN"
- "traefik.http.middlewares.${STACK_NAME}-frameOptions.headers.contentSecurityPolicy=frame-ancestors ${X_FRAME_OPTIONS_ALLOW_FROM}" - "traefik.http.middlewares.${STACK_NAME}-frameOptions.headers.contentSecurityPolicy=frame-ancestors ${X_FRAME_OPTIONS_ALLOW_FROM}"
- "coop-cloud.${STACK_NAME}.version=4.3.0+2023.10.7" - "coop-cloud.${STACK_NAME}.version=4.2.0+2023.10.7"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}" - "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
worker: worker:

View File

@ -26,16 +26,22 @@ entries:
### POLICIES ### POLICIES
- attrs: - attrs:
expression: | expression: "if not regex_match(request.context.get('prompt_data').get('username'),\
if not regex_match(request.context.get('prompt_data').get('username'), '\s'): \ '\\s'):\n return True\n\nak_message(\"Username must not contain\
return True \ whitespace!\")\nreturn False"
ak_message("Username must not contain any whitespace!") name: username-without-spaces-policy
return False
id: username-without-spaces-policy id: username-without-spaces-policy
identifiers: identifiers:
name: username-without-spaces-policy name: username-without-spaces-policy
model: authentik_policies_expression.expressionpolicy model: authentik_policies_expression.expressionpolicy
### POLICY BINDINGS
- identifiers:
policy: !KeyOf username-without-spaces-policy
target: !KeyOf prompt-stage-binding
order: 10
model: authentik_policies.policybinding
### STAGES ### STAGES
- identifiers: - identifiers:
name: invitation-stage name: invitation-stage
@ -53,8 +59,6 @@ entries:
- !Find [authentik_stages_prompt.prompt, [name, default-user-settings-field-email]] - !Find [authentik_stages_prompt.prompt, [name, default-user-settings-field-email]]
- !Find [authentik_stages_prompt.prompt, [name, default-password-change-field-password]] - !Find [authentik_stages_prompt.prompt, [name, default-password-change-field-password]]
- !Find [authentik_stages_prompt.prompt, [name, default-password-change-field-password-repeat]] - !Find [authentik_stages_prompt.prompt, [name, default-password-change-field-password-repeat]]
validation_policies:
- !Find [ authentik_policies_expression.expressionpolicy, [name, username-without-spaces-policy]]
### STAGE BINDINGS ### STAGE BINDINGS
- identifiers: - identifiers:
@ -67,6 +71,7 @@ entries:
stage: !KeyOf enrollment-prompt-userdata stage: !KeyOf enrollment-prompt-userdata
target: !KeyOf invitation-enrollment-flow target: !KeyOf invitation-enrollment-flow
model: authentik_flows.flowstagebinding model: authentik_flows.flowstagebinding
id: prompt-stage-binding
- identifiers: - identifiers:
order: 20 order: 20
stage: !Find [authentik_stages_user_write.userwritestage, [name, default-source-enrollment-write]] stage: !Find [authentik_stages_user_write.userwritestage, [name, default-source-enrollment-write]]

View File

@ -69,3 +69,16 @@ entries:
attrs: attrs:
label: !Context transl_username label: !Context transl_username
placeholder: !Context transl_username placeholder: !Context transl_username
### POLICIES
- model: authentik_policies_expression.expressionpolicy
identifiers:
name: username-without-spaces-policy
attrs:
expression: "if not regex_match(request.context.get('prompt_data').get('username'),\
\ '\\s'):\n return True\n\nak_message(\"Benutzername darf kein Leerzeichen\
\ enthalten\")\nreturn False"
name: username-without-spaces-policy
id: username-without-spaces-policy
Benutzername darf kein Leerzeichen enthalten\")\n