Patches applied on top of the official next branch (eb93574).
Adds support for any standards-compliant OpenID Connect provider (Authelia, Keycloak, Authentik, etc.) as a login method, using the certified openid-client library.
The iss parameter is forwarded through the full callback chain to satisfy providers that implement RFC9207 (authorization_response_iss_parameter_supported). Tested with Authelia.
Redirect URI to register in your identity provider:
https://forms.example.com/connect/oidc/callback
| Variable | Required | Description |
|---|---|---|
OIDC_CLIENT_ID | yes | Client ID registered in your IdP |
OIDC_CLIENT_SECRET | yes | Client secret |
OIDC_ISSUER | yes | Issuer URL (e.g. https://sso.example.com) |
OIDC_DISPLAY_NAME | no | Label shown on the login button (default: SSO) |
Disables email-based login and registration to enforce SSO-only authentication. The email/password form is hidden in the UI and blocked at the API level.
| Variable | Default | Description |
|---|---|---|
APP_DISABLE_EMAIL_LOGIN | false | Disable email login and sign-up |
When APP_DISABLE_REGISTRATION=true, new users coming from a social/OIDC login are still blocked by default. Set ENABLE_SOCIAL_REGISTRATION=true to allow first-login provisioning via SSO while keeping email sign-up disabled.
| Variable | Default | Description |
|---|---|---|
APP_DISABLE_REGISTRATION | false | Disable all user registration |
ENABLE_SOCIAL_REGISTRATION | false | Allow user creation via social/OIDC login even if APP_DISABLE_REGISTRATION=true |
Sets removeBranding to true at workspace creation time, hiding the "Powered by HeyForm" badge in the form footer for all new workspaces.
| Variable | Default | Description |
|---|---|---|
APP_REMOVE_BRANDING | false | Remove HeyForm branding badge on new workspaces |
Note: Only affects workspaces created after deployment. For existing workspaces run:
db.teams.updateMany( { removeBranding: { $exists: false } }, { $set: { removeBranding: true } } )
# Authentication
APP_DISABLE_REGISTRATION=true
APP_DISABLE_EMAIL_LOGIN=true
ENABLE_SOCIAL_REGISTRATION=true
# OIDC provider
OIDC_CLIENT_ID=heyform
OIDC_CLIENT_SECRET=your-secret
OIDC_ISSUER=https://sso.example.com
OIDC_DISPLAY_NAME=Company SSO
# Branding
APP_REMOVE_BRANDING=true
Object.values() on TypeScript numeric enums includes string reverse mappings, causing Mongoose to accept string values like "ADMIN" or "TRASH" instead of rejecting them. Fixed by filtering to numeric values only. Affected models: form, template, submission, app, attachment, integration, team-activity, team-member.disableLoginWithGoogle / disableLoginWithApple missing from runtimeConfig — Google and Apple login buttons were always visible even when unconfigured.removeBranding missing from PUBLIC_FORM_GQL — the field was returned by the server but not requested by the frontend GraphQL query, so the branding badge was never hidden even when removeBranding=true in the workspace settings.Content type
Image
Digest
sha256:3e6d34056…
Size
241.1 MB
Last updated
6 months ago
docker pull gecoit84/heyform:next-geco