Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Managed query string parameters in the authorize endpoint. #28

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

adrianolettieri
Copy link

When configuring the authorizeEndpoint it may be necessary to set a url that contains a query string parameter. For example with AWS Cognito you can add idp_identifier to specify which idp should be used (without showing the list with alle the availble idps).

const url = `${logoutEndpoint || `${provider}/logout`}?${toUrlEncoded(query)}`
const logoutUrl = `${logoutEndpoint || `${provider}/logout`}`;
// Check if the url already contains at least one parameter
const separator = new RegExp('^.*\?.+=.+$').test(logoutUrl) ? '&' : '?';
Copy link

@sidm1983 sidm1983 Feb 11, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, thank you for this code update. I actually just requested an enhancement for this without realising that this PR existed.

I think we should make a very small tweak to the regex here. Instead of '^.*\?.+=.+$', which will still use a '?' character for a query string parameter with no value, it should be changed to '^.*\?.+=.*$'. (Note the '*' instead of a '+' character before the '$' character.)

This will allow us to also add query string parameters with null/empty values (e.g. ?key=)

Suggested change
const separator = new RegExp('^.*\?.+=.+$').test(logoutUrl) ? '&' : '?';
const separator = new RegExp('^.*\?.+=.*$').test(logoutUrl) ? '&' : '?';

const url = `${authorizeEndpoint || `${provider}/authorize`}?${toUrlEncoded(query)}`
const authorizeUrl = `${authorizeEndpoint || `${provider}/authorize`}`;
// Check if the url already contains at least one parameter
const separator = new RegExp('^.*\?.+=.+$').test(authorizeUrl) ? '&' : '?';
Copy link

@sidm1983 sidm1983 Feb 11, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const separator = new RegExp('^.*\?.+=.+$').test(authorizeUrl) ? '&' : '?';
const separator = new RegExp('^.*\?.+=.*$').test(authorizeUrl) ? '&' : '?';

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants