@@ -6,12 +6,14 @@ import { redirect, typedjson, useTypedLoaderData } from "remix-typedjson";
6
6
import { LoginPageLayout } from "~/components/LoginPageLayout" ;
7
7
import { Button , LinkButton } from "~/components/primitives/Buttons" ;
8
8
import { Fieldset } from "~/components/primitives/Fieldset" ;
9
+ import { FormError } from "~/components/primitives/FormError" ;
9
10
import { Header1 } from "~/components/primitives/Headers" ;
10
11
import { Paragraph } from "~/components/primitives/Paragraph" ;
11
12
import { TextLink } from "~/components/primitives/TextLink" ;
12
13
import { isGithubAuthSupported } from "~/services/auth.server" ;
13
14
import { commitSession , setRedirectTo } from "~/services/redirectTo.server" ;
14
15
import { getUserId } from "~/services/session.server" ;
16
+ import { getUserSession } from "~/services/sessionStorage.server" ;
15
17
import { requestUrl } from "~/utils/requestUrl.server" ;
16
18
17
19
export const meta : MetaFunction = ( { matches } ) => {
@@ -48,17 +50,34 @@ export async function loader({ request }: LoaderFunctionArgs) {
48
50
const session = await setRedirectTo ( request , redirectTo ) ;
49
51
50
52
return typedjson (
51
- { redirectTo, showGithubAuth : isGithubAuthSupported } ,
53
+ {
54
+ redirectTo,
55
+ showGithubAuth : isGithubAuthSupported ,
56
+ authError : null ,
57
+ } ,
52
58
{
53
59
headers : {
54
60
"Set-Cookie" : await commitSession ( session ) ,
55
61
} ,
56
62
}
57
63
) ;
58
64
} else {
65
+ const session = await getUserSession ( request ) ;
66
+ const error = session . get ( "auth:error" ) ;
67
+
68
+ let authError : string | undefined ;
69
+ if ( error ) {
70
+ if ( "message" in error ) {
71
+ authError = error . message ;
72
+ } else {
73
+ authError = JSON . stringify ( error , null , 2 ) ;
74
+ }
75
+ }
76
+
59
77
return typedjson ( {
60
78
redirectTo : null ,
61
79
showGithubAuth : isGithubAuthSupported ,
80
+ authError,
62
81
} ) ;
63
82
}
64
83
}
@@ -81,7 +100,7 @@ export default function LoginPage() {
81
100
Create an account or login
82
101
</ Paragraph >
83
102
< Fieldset className = "w-full" >
84
- < div className = "flex flex-col gap-y-2" >
103
+ < div className = "flex flex-col items-center gap-y-2" >
85
104
{ data . showGithubAuth && (
86
105
< Button
87
106
type = "submit"
@@ -103,6 +122,7 @@ export default function LoginPage() {
103
122
< EnvelopeIcon className = "mr-2 size-5 text-text-bright" />
104
123
Continue with Email
105
124
</ LinkButton >
125
+ { data . authError && < FormError > { data . authError } </ FormError > }
106
126
</ div >
107
127
< Paragraph variant = "extra-small" className = "mt-2 text-center" >
108
128
By signing up you agree to our{ " " }
0 commit comments