fix: Add redirect for OAuth from /login (#1163)

This allows for a complete sign-up flow:
1. coder login https://dev.coder.com
2. Navigates to /cli-auth
3. Redirects to /login?redirect=%2Fcli-auth
4. User signs in with GitHub
5. User is redirected back to /cli-auth
This commit is contained in:
Kyle Carberry
2022-04-25 17:07:10 -05:00
committed by GitHub
parent 4f7ceebe65
commit 159024a196
3 changed files with 12 additions and 2 deletions

View File

@ -34,7 +34,14 @@ export const AppRouter: React.FC = () => (
<Route path="login" element={<LoginPage />} /> <Route path="login" element={<LoginPage />} />
<Route path="healthz" element={<HealthzPage />} /> <Route path="healthz" element={<HealthzPage />} />
<Route path="cli-auth" element={<CliAuthenticationPage />} /> <Route
path="cli-auth"
element={
<RequireAuth>
<CliAuthenticationPage />
</RequireAuth>
}
/>
<Route path="templates"> <Route path="templates">
<Route <Route

View File

@ -53,6 +53,7 @@ const useStyles = makeStyles((theme) => ({
export interface SignInFormProps { export interface SignInFormProps {
isLoading: boolean isLoading: boolean
redirectTo: string
authErrorMessage?: string authErrorMessage?: string
methodsErrorMessage?: string methodsErrorMessage?: string
authMethods?: AuthMethods authMethods?: AuthMethods
@ -61,6 +62,7 @@ export interface SignInFormProps {
export const SignInForm: React.FC<SignInFormProps> = ({ export const SignInForm: React.FC<SignInFormProps> = ({
authMethods, authMethods,
redirectTo,
isLoading, isLoading,
authErrorMessage, authErrorMessage,
methodsErrorMessage, methodsErrorMessage,
@ -113,7 +115,7 @@ export const SignInForm: React.FC<SignInFormProps> = ({
</form> </form>
{authMethods?.github && ( {authMethods?.github && (
<div className={styles.submitBtn}> <div className={styles.submitBtn}>
<Link href="/api/v2/users/oauth2/github/callback"> <Link href={`/api/v2/users/oauth2/github/callback?redirect=${encodeURIComponent(redirectTo)}`}>
<Button color="primary" disabled={isLoading} fullWidth type="submit" variant="contained"> <Button color="primary" disabled={isLoading} fullWidth type="submit" variant="contained">
{Language.githubSignIn} {Language.githubSignIn}
</Button> </Button>

View File

@ -52,6 +52,7 @@ export const LoginPage: React.FC = () => {
<div className={styles.container}> <div className={styles.container}>
<SignInForm <SignInForm
authMethods={authState.context.methods} authMethods={authState.context.methods}
redirectTo={redirectTo}
isLoading={isLoading} isLoading={isLoading}
authErrorMessage={authErrorMessage} authErrorMessage={authErrorMessage}
methodsErrorMessage={getMethodsError} methodsErrorMessage={getMethodsError}