@@ -33,6 +33,7 @@ function RegisterPageContent() {
3333 const router = useRouter ( ) ;
3434 const searchParams = useSearchParams ( ) ;
3535 const selectedPlan = searchParams . get ( 'plan' ) ;
36+ const callbackUrl = searchParams . get ( 'callback' ) ;
3637 const [ isLoading , setIsLoading ] = useState ( false ) ;
3738 const [ formData , setFormData ] = useState ( {
3839 name : '' ,
@@ -53,6 +54,18 @@ function RegisterPageContent() {
5354 setFormData ( ( prev ) => ( { ...prev , [ name ] : value } ) ) ;
5455 } ;
5556
57+ const handleAuthSuccess = ( ) => {
58+ if ( callbackUrl ) {
59+ toast . success ( 'Account created! Completing integration...' ) ;
60+ router . push ( callbackUrl ) ;
61+ } else if ( selectedPlan ) {
62+ localStorage . setItem ( 'pendingPlanSelection' , selectedPlan ) ;
63+ router . push ( `/billing?tab=plans&plan=${ selectedPlan } ` ) ;
64+ } else {
65+ router . push ( '/websites' ) ;
66+ }
67+ } ;
68+
5669 const handleSubmit = async ( e : React . FormEvent ) => {
5770 e . preventDefault ( ) ;
5871
@@ -78,21 +91,18 @@ function RegisterPageContent() {
7891 password : formData . password ,
7992 name : formData . name ,
8093 fetchOptions : {
81- onSuccess : ( ctx ) => {
82- const authToken = ctx . response . headers . get ( 'set-auth-token' ) ;
83- if ( authToken ) {
84- localStorage . setItem ( 'authToken' , authToken ) ;
85- }
86- toast . success (
87- 'Account created! Please check your email to verify your account.'
88- ) ;
89- setRegistrationStep ( 'verification-needed' ) ;
90-
91- // Store plan selection for post-verification redirect
92- if ( selectedPlan ) {
93- localStorage . setItem ( 'pendingPlanSelection' , selectedPlan ) ;
94+ onSuccess : ( ) => {
95+ if ( callbackUrl ) {
96+ handleAuthSuccess ( ) ;
97+ } else {
98+ toast . success (
99+ 'Account created! Please check your email to verify your account.'
100+ ) ;
101+ setRegistrationStep ( 'verification-needed' ) ;
102+ if ( selectedPlan ) {
103+ localStorage . setItem ( 'pendingPlanSelection' , selectedPlan ) ;
104+ }
94105 }
95- // router.push(`/verify?email=${encodeURIComponent(formData.email)}`);
96106 } ,
97107 } ,
98108 } ) ;
@@ -128,31 +138,27 @@ function RegisterPageContent() {
128138 const handleSocialLogin = async ( provider : 'github' | 'google' ) => {
129139 setIsLoading ( true ) ;
130140
131- await authClient . signIn . social ( {
132- provider,
133- fetchOptions : {
134- onSuccess : ( ctx ) => {
135- const authToken = ctx . response . headers . get ( 'set-auth-token' ) ;
136- if ( authToken ) {
137- localStorage . setItem ( 'authToken' , authToken ) ;
138- }
139- toast . success ( 'Registration successful!' ) ;
140-
141- // Redirect to billing with plan selection if plan was specified
142- if ( selectedPlan ) {
143- localStorage . setItem ( 'pendingPlanSelection' , selectedPlan ) ;
144- router . push ( `/billing?tab=plans&plan=${ selectedPlan } ` ) ;
145- } else {
146- router . push ( '/home' ) ;
147- }
148- } ,
149- onError : ( ) => {
150- toast . error ( 'Login failed. Please try again.' ) ;
141+ try {
142+ await authClient . signIn . social ( {
143+ provider,
144+ callbackURL : callbackUrl || '/websites' ,
145+ fetchOptions : {
146+ onSuccess : ( ) => {
147+ toast . success ( 'Registration successful!' ) ;
148+ handleAuthSuccess ( ) ;
149+ } ,
150+ onError : ( ) => {
151+ toast . error (
152+ `${ provider === 'github' ? 'GitHub' : 'Google' } login failed. Please try again.`
153+ ) ;
154+ setIsLoading ( false ) ;
155+ } ,
151156 } ,
152- } ,
153- } ) ;
154-
155- setIsLoading ( false ) ;
157+ } ) ;
158+ } catch ( error ) {
159+ toast . error ( 'Login failed. Please try again.' ) ;
160+ setIsLoading ( false ) ;
161+ }
156162 } ;
157163
158164 // Render header content based on current registration step
@@ -549,7 +555,11 @@ function RegisterPageContent() {
549555 Already have an account?{ ' ' }
550556 < Link
551557 className = "font-medium text-primary hover:text-primary/80"
552- href = "/login"
558+ href = {
559+ callbackUrl
560+ ? `/login?callback=${ encodeURIComponent ( callbackUrl ) } `
561+ : '/login'
562+ }
553563 >
554564 Sign in
555565 </ Link >
0 commit comments