@@ -51,15 +51,12 @@ export const LoginPage = () => {
5151 const formId = useId ( ) ;
5252
5353 const searchParams = new URLSearchParams ( search ) ;
54- const {
55- values : props ,
56- isOidc,
57- compiled : compiledOIDCParams ,
58- } = useOIDCParams ( searchParams ) ;
54+ const redirectUri = searchParams . get ( "redirect_uri" ) || undefined ;
55+ const oidcParams = useOIDCParams ( searchParams ) ;
5956
6057 const [ isOauthAutoRedirect , setIsOauthAutoRedirect ] = useState (
6158 providers . find ( ( provider ) => provider . id === oauthAutoRedirect ) !==
62- undefined && props . redirect_uri ,
59+ undefined && redirectUri !== undefined ,
6360 ) ;
6461
6562 const oauthProviders = providers . filter (
@@ -77,12 +74,16 @@ export const LoginPage = () => {
7774 variables : oauthVariables ,
7875 } = useMutation ( {
7976 mutationFn : ( provider : string ) => {
80- const params = isOidc
81- ? `?${ compiledOIDCParams } `
82- : props . redirect_uri
83- ? `?redirect_uri=${ encodeURIComponent ( props . redirect_uri ) } `
84- : "" ;
85- return axios . get ( `/api/oauth/url/${ provider } ${ params } ` ) ;
77+ const getParams = function ( ) : string {
78+ if ( oidcParams . isOidc ) {
79+ return `?${ oidcParams . compiled } ` ;
80+ }
81+ if ( redirectUri ) {
82+ return `?redirect_uri=${ encodeURIComponent ( redirectUri ) } ` ;
83+ }
84+ return "" ;
85+ } ;
86+ return axios . get ( `/api/oauth/url/${ provider } ${ getParams ( ) } ` ) ;
8687 } ,
8788 mutationKey : [ "oauth" ] ,
8889 onSuccess : ( data ) => {
@@ -113,8 +114,12 @@ export const LoginPage = () => {
113114 mutationKey : [ "login" ] ,
114115 onSuccess : ( data ) => {
115116 if ( data . data . totpPending ) {
117+ if ( oidcParams . isOidc ) {
118+ window . location . replace ( `/totp?${ oidcParams . compiled } ` ) ;
119+ return ;
120+ }
116121 window . location . replace (
117- `/totp${ props . redirect_uri ? `?redirect_uri=${ encodeURIComponent ( props . redirect_uri ) } ` : "" } ` ,
122+ `/totp${ redirectUri ? `?redirect_uri=${ encodeURIComponent ( redirectUri ) } ` : "" } ` ,
118123 ) ;
119124 return ;
120125 }
@@ -124,12 +129,12 @@ export const LoginPage = () => {
124129 } ) ;
125130
126131 redirectTimer . current = window . setTimeout ( ( ) => {
127- if ( isOidc ) {
128- window . location . replace ( `/authorize?${ compiledOIDCParams } ` ) ;
132+ if ( oidcParams . isOidc ) {
133+ window . location . replace ( `/authorize?${ oidcParams . compiled } ` ) ;
129134 return ;
130135 }
131136 window . location . replace (
132- `/continue${ props . redirect_uri ? `?redirect_uri=${ encodeURIComponent ( props . redirect_uri ) } ` : "" } ` ,
137+ `/continue${ redirectUri ? `?redirect_uri=${ encodeURIComponent ( redirectUri ) } ` : "" } ` ,
133138 ) ;
134139 } , 500 ) ;
135140 } ,
@@ -148,7 +153,7 @@ export const LoginPage = () => {
148153 ! isLoggedIn &&
149154 isOauthAutoRedirect &&
150155 ! hasAutoRedirectedRef . current &&
151- props . redirect_uri
156+ redirectUri !== undefined
152157 ) {
153158 hasAutoRedirectedRef . current = true ;
154159 oauthMutate ( oauthAutoRedirect ) ;
@@ -159,7 +164,7 @@ export const LoginPage = () => {
159164 hasAutoRedirectedRef ,
160165 oauthAutoRedirect ,
161166 isOauthAutoRedirect ,
162- props . redirect_uri ,
167+ redirectUri ,
163168 ] ) ;
164169
165170 useEffect ( ( ) => {
@@ -174,14 +179,14 @@ export const LoginPage = () => {
174179 } ;
175180 } , [ redirectTimer , redirectButtonTimer ] ) ;
176181
177- if ( isLoggedIn && isOidc ) {
178- return < Navigate to = { `/authorize?${ compiledOIDCParams } ` } replace /> ;
182+ if ( isLoggedIn && oidcParams . isOidc ) {
183+ return < Navigate to = { `/authorize?${ oidcParams . compiled } ` } replace /> ;
179184 }
180185
181- if ( isLoggedIn && props . redirect_uri !== "" ) {
186+ if ( isLoggedIn && redirectUri !== undefined ) {
182187 return (
183188 < Navigate
184- to = { `/continue${ props . redirect_uri ? `?redirect_uri=${ encodeURIComponent ( props . redirect_uri ) } ` : "" } ` }
189+ to = { `/continue${ redirectUri ? `?redirect_uri=${ encodeURIComponent ( redirectUri ) } ` : "" } ` }
185190 replace
186191 />
187192 ) ;
0 commit comments