feat(cloud): improve partner onboarding

This commit is contained in:
Henry
2026-05-15 22:33:14 +01:00
parent 0c2b670baf
commit 8436644966
6 changed files with 135 additions and 63 deletions

View File

@@ -146,7 +146,7 @@ export default withRateLimit(
},
);
return res.redirect(
`/onboarding?license_key=${encodeURIComponent(license.license_key)}`,
`/onboarding/workspace?license_key=${encodeURIComponent(license.license_key)}`,
);
}

View File

@@ -16,7 +16,7 @@ export default withRateLimit(
const { license_key } = req.query;
if (!license_key || typeof license_key !== "string") {
return res.redirect("/?partner_error=missing_license");
return res.redirect("/boards?partner_error=missing_license");
}
const { db, user } = await createNextApiContext(req);
@@ -30,11 +30,11 @@ export default withRateLimit(
const sub = await subscriptionRepo.getByPartnerLicenseKey(db, license_key);
if (!sub) {
return res.redirect("/?partner_error=invalid_license");
return res.redirect("/boards?partner_error=invalid_license");
}
if (sub.status !== "active") {
return res.redirect("/?partner_error=license_inactive");
return res.redirect("/boards?partner_error=license_inactive");
}
const memberships = await workspaceRepo.getAllByUserId(db, user.id);
@@ -42,7 +42,7 @@ export default withRateLimit(
if (!workspace) {
return res.redirect(
`/onboarding?license_key=${encodeURIComponent(license_key)}`,
`/onboarding/workspace?license_key=${encodeURIComponent(license_key)}`,
);
}
@@ -59,6 +59,6 @@ export default withRateLimit(
plan: sub.plan as "free" | "team" | "pro" | "enterprise",
});
return res.redirect("/?partner_activated=1");
return res.redirect("/boards?partner_activated=1");
}),
);

View File

@@ -20,6 +20,12 @@ export default function PartnerActivatePage() {
const [isMagicLinkSent, setIsMagicLinkSent] = useState(false);
const [magicLinkRecipient, setMagicLinkRecipient] = useState("");
useEffect(() => {
if (licenseKey) {
localStorage.setItem("partnerLicenseKey", licenseKey);
}
}, [licenseKey]);
useEffect(() => {
if (!isPending && session?.user && licenseKey) {
router.push(
@@ -68,6 +74,11 @@ export default function PartnerActivatePage() {
setIsMagicLinkSent(val);
setMagicLinkRecipient(recipient);
}}
callbackURL={
licenseKey
? `/api/partner/link?license_key=${encodeURIComponent(licenseKey)}`
: "/boards"
}
/>
</div>
</div>