order authenticate before respond
order authorize before reverse_proxy
security {
	local identity store localdb {
		realm local
		path /data/caddy/users.json
	}
	oauth identity provider generic {
		realm remote
		driver generic
		client_id {$OAUTH_CLIENT_ID}
		client_secret {$OAUTH_CLIENT_SECRET}
		scopes openid email profile seafile joh

		enable logout
		# extract all from userinfo
		extract seafile_email from userinfo

		delay_start 5
		retry_attempts 3
		retry_interval 10

		base_auth_url https://authentik.{$DOMAIN}
		metadata_url https://authentik.{$DOMAIN}/application/o/caddy/.well-known/openid-configuration
	}
	authentication portal myportal {
		enable identity store localdb
		enable identity provider generic
		cookie domain {$DOMAIN}
		ui {
			links {
				"My Identity" "/whoami" icon "las la-user"
				"Jellyfin" https://jellyfin.{$SUBDOMAIN}.{$DOMAIN} icon "las la-play"
			}
		}
		transform user {
			match realm remote
			action add role authp/user
			action add iets "Zo iets!" as string

		}
		transform user {
			match origin local
			action add role authp/user
		}
	}
	authorization policy mypolicy {
		set auth url https://auth.{$SUBDOMAIN}.{$DOMAIN}/oauth2/generic
		allow roles authp/admin authp/user
		validate bearer header

		set user identity seafile_id

		inject headers with claims
		inject header "X-Seafile-Email" from "user|email"
		inject header "X-Test" from "userinfo|seafile_email"
		inject header "X-Onzin" from "realm"
	}
}
