mirror of
https://github.com/documenso/documenso.git
synced 2025-11-21 04:01:45 +10:00
feat: add option to change or disable OIDC login prompt parameter (#2037)
This commit is contained in:
@ -23,6 +23,10 @@ NEXT_PRIVATE_OIDC_CLIENT_ID=""
|
|||||||
NEXT_PRIVATE_OIDC_CLIENT_SECRET=""
|
NEXT_PRIVATE_OIDC_CLIENT_SECRET=""
|
||||||
NEXT_PRIVATE_OIDC_PROVIDER_LABEL="OIDC"
|
NEXT_PRIVATE_OIDC_PROVIDER_LABEL="OIDC"
|
||||||
NEXT_PRIVATE_OIDC_SKIP_VERIFY=""
|
NEXT_PRIVATE_OIDC_SKIP_VERIFY=""
|
||||||
|
# Specifies the prompt to use for OIDC signin, explicitly setting
|
||||||
|
# an empty string will omit the prompt parameter.
|
||||||
|
# See: https://www.cerberauth.com/blog/openid-connect-oauth2-prompts/
|
||||||
|
NEXT_PRIVATE_OIDC_PROMPT="login"
|
||||||
|
|
||||||
# [[URLS]]
|
# [[URLS]]
|
||||||
NEXT_PUBLIC_WEBAPP_URL="http://localhost:3000"
|
NEXT_PUBLIC_WEBAPP_URL="http://localhost:3000"
|
||||||
|
|||||||
@ -27,13 +27,13 @@ type HandleOAuthAuthorizeUrlOptions = {
|
|||||||
/**
|
/**
|
||||||
* Optional prompt to pass to the authorization endpoint.
|
* Optional prompt to pass to the authorization endpoint.
|
||||||
*/
|
*/
|
||||||
prompt?: 'login' | 'consent' | 'select_account';
|
prompt?: 'none' | 'login' | 'consent' | 'select_account';
|
||||||
};
|
};
|
||||||
|
|
||||||
const oauthCookieMaxAge = 60 * 10; // 10 minutes.
|
const oauthCookieMaxAge = 60 * 10; // 10 minutes.
|
||||||
|
|
||||||
export const handleOAuthAuthorizeUrl = async (options: HandleOAuthAuthorizeUrlOptions) => {
|
export const handleOAuthAuthorizeUrl = async (options: HandleOAuthAuthorizeUrlOptions) => {
|
||||||
const { c, clientOptions, redirectPath, prompt = 'login' } = options;
|
const { c, clientOptions, redirectPath } = options;
|
||||||
|
|
||||||
if (!clientOptions.clientId || !clientOptions.clientSecret) {
|
if (!clientOptions.clientId || !clientOptions.clientSecret) {
|
||||||
throw new AppError(AppErrorCode.NOT_SETUP);
|
throw new AppError(AppErrorCode.NOT_SETUP);
|
||||||
@ -63,7 +63,11 @@ export const handleOAuthAuthorizeUrl = async (options: HandleOAuthAuthorizeUrlOp
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Pass the prompt to the authorization endpoint.
|
// Pass the prompt to the authorization endpoint.
|
||||||
url.searchParams.append('prompt', prompt);
|
if (process.env.NEXT_PRIVATE_OIDC_PROMPT !== '') {
|
||||||
|
const prompt = process.env.NEXT_PRIVATE_OIDC_PROMPT ?? 'login';
|
||||||
|
|
||||||
|
url.searchParams.append('prompt', prompt);
|
||||||
|
}
|
||||||
|
|
||||||
setCookie(c, `${clientOptions.id}_oauth_state`, state, {
|
setCookie(c, `${clientOptions.id}_oauth_state`, state, {
|
||||||
...sessionCookieOptions,
|
...sessionCookieOptions,
|
||||||
|
|||||||
@ -119,6 +119,7 @@
|
|||||||
"GOOGLE_APPLICATION_CREDENTIALS",
|
"GOOGLE_APPLICATION_CREDENTIALS",
|
||||||
"E2E_TEST_AUTHENTICATE_USERNAME",
|
"E2E_TEST_AUTHENTICATE_USERNAME",
|
||||||
"E2E_TEST_AUTHENTICATE_USER_EMAIL",
|
"E2E_TEST_AUTHENTICATE_USER_EMAIL",
|
||||||
"E2E_TEST_AUTHENTICATE_USER_PASSWORD"
|
"E2E_TEST_AUTHENTICATE_USER_PASSWORD",
|
||||||
|
"NEXT_PRIVATE_OIDC_PROMPT"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user