diff --git a/dashboard/src/controllers/loginAsAdmin.js b/dashboard/src/controllers/loginAsAdmin.js index 7913cac..12633e1 100644 --- a/dashboard/src/controllers/loginAsAdmin.js +++ b/dashboard/src/controllers/loginAsAdmin.js @@ -5,8 +5,9 @@ export function loginAsAdmin(siteName) { url: 'jcloud.api.site.login', params: { name: siteName }, onSuccess(data) { - if (data?.sid && data?.site) { - window.open(`https://${data.site}/desk?sid=${data.sid}`, '_blank'); + // Use the URL returned by backend which includes correct route + if (data?.url) { + window.open(data.url, '_blank'); } }, validate() { diff --git a/dashboard/src/pages/saas/LoginToSite.vue b/dashboard/src/pages/saas/LoginToSite.vue index 61ef98b..e760117 100644 --- a/dashboard/src/pages/saas/LoginToSite.vue +++ b/dashboard/src/pages/saas/LoginToSite.vue @@ -212,12 +212,10 @@ export default { getLoginSid: { method: 'get_login_sid', onSuccess(data) { - const sid = data; - const redirectRoute = - this.$resources?.saasProduct?.pg?.redirect_to_after_login ?? - '/desk'; - const loginURL = `https://${this.$resources.siteRequest.pg.domain}${redirectRoute}?sid=${sid}`; - window.open(loginURL, '_blank'); + // Backend returns complete URL with correct route + if (data) { + window.open(data, '_blank'); + } }, }, }, diff --git a/dashboard/src/views/site/AppSiteSetup.vue b/dashboard/src/views/site/AppSiteSetup.vue index 393b73c..ac9eeb6 100644 --- a/dashboard/src/views/site/AppSiteSetup.vue +++ b/dashboard/src/views/site/AppSiteSetup.vue @@ -136,8 +136,9 @@ const loginToSite = createResource({ }; }, onSuccess(data) { - if (data?.sid && data?.site) { - window.location.href = `https://${data.site}/desk?sid=${data.sid}`; + // Backend returns the complete URL with correct route + if (data?.url) { + window.location.href = data.url; } } }); diff --git a/jcloud/api/site.py b/jcloud/api/site.py index b310ef3..a5d98aa 100644 --- a/jcloud/api/site.py +++ b/jcloud/api/site.py @@ -1538,7 +1538,11 @@ def activate(name): @jingrow.whitelist() @protected("Site") def login(name, reason=None): - return {"sid": jingrow.get_pg("Site", name).login(reason), "site": name} + site = jingrow.get_pg("Site", name) + sid = site.login(reason) + # Return correct route based on setup_wizard_complete status + route = "/setup-wizard" if not site.setup_wizard_complete else "/app" + return {"sid": sid, "site": name, "url": f"https://{site.host_name or name}{route}?sid={sid}"} @jingrow.whitelist() diff --git a/jcloud/jcloud/pagetype/site/site.js b/jcloud/jcloud/pagetype/site/site.js index a7fa7e9..fb7cd80 100644 --- a/jcloud/jcloud/pagetype/site/site.js +++ b/jcloud/jcloud/pagetype/site/site.js @@ -422,12 +422,9 @@ function login_as_admin(site_name, reason = null) { }) .then( (res) => { - console.log(site_name, res.message.sid); - if (res) { - window.open( - `https://${site_name}/desk?sid=${res.message.sid}`, - '_blank', - ); + // Use the URL returned by backend which includes correct route + if (res?.message?.url) { + window.open(res.message.url, '_blank'); } }, (error) => { diff --git a/jcloud/jcloud/pagetype/site/site.py b/jcloud/jcloud/pagetype/site/site.py index ec4999f..1708b55 100644 --- a/jcloud/jcloud/pagetype/site/site.py +++ b/jcloud/jcloud/pagetype/site/site.py @@ -1419,7 +1419,9 @@ class Site(Page, TagHelpers): @site_action(["Active", "Broken"]) def login_as_admin(self, reason=None): sid = self.login(reason=reason) - return f"https://{self.host_name or self.name}/desk?sid={sid}" + # Redirect to setup-wizard if setup is not complete + route = "/setup-wizard" if not self.setup_wizard_complete else "/app" + return f"https://{self.host_name or self.name}{route}?sid={sid}" @dashboard_whitelist() @site_action(["Active"]) @@ -1427,13 +1429,16 @@ class Site(Page, TagHelpers): if self.additional_system_user_created: team_user = jingrow.db.get_value("Team", self.team, "user") sid = self.get_login_sid(user=team_user) - if self.standby_for_product: + # Redirect to setup-wizard if setup is not complete + if not self.setup_wizard_complete: + redirect_route = "/setup-wizard" + elif self.standby_for_product: redirect_route = ( jingrow.db.get_value("Product Trial", self.standby_for_product, "redirect_to_after_login") - or "/desk" + or "/app" ) else: - redirect_route = "/desk" + redirect_route = "/app" return f"https://{self.host_name or self.name}{redirect_route}?sid={sid}" jingrow.throw("No additional system user created for this site") @@ -1443,13 +1448,16 @@ class Site(Page, TagHelpers): def login_as_user(self, user_email, reason=None): try: sid = self.get_login_sid(user=user_email) - if self.standby_for_product: + # Redirect to setup-wizard if setup is not complete + if not self.setup_wizard_complete: + redirect_route = "/setup-wizard" + elif self.standby_for_product: redirect_route = ( jingrow.db.get_value("Product Trial", self.standby_for_product, "redirect_to_after_login") - or "/desk" + or "/app" ) else: - redirect_route = "/desk" + redirect_route = "/app" return f"https://{self.host_name or self.name}{redirect_route}?sid={sid}" except Exception as e: jingrow.throw(str(e)) diff --git a/jcloud/saas/pagetype/product_trial/product_trial.json b/jcloud/saas/pagetype/product_trial/product_trial.json index afecf1f..f60fc53 100644 --- a/jcloud/saas/pagetype/product_trial/product_trial.json +++ b/jcloud/saas/pagetype/product_trial/product_trial.json @@ -220,7 +220,7 @@ "label": "Create Additional System User" }, { - "default": "/desk", + "default": "/app", "fieldname": "redirect_to_after_login", "fieldtype": "Data", "label": "Redirect To After Login", diff --git a/jcloud/saas/pagetype/product_trial_request/product_trial_request.py b/jcloud/saas/pagetype/product_trial_request/product_trial_request.py index 6b6e9c4..9a439b7 100644 --- a/jcloud/saas/pagetype/product_trial_request/product_trial_request.py +++ b/jcloud/saas/pagetype/product_trial_request/product_trial_request.py @@ -313,11 +313,10 @@ class ProductTrialRequest(Page): @dashboard_whitelist() def get_login_sid(self): site: Site = jingrow.get_pg("Site", self.site) + # Return complete URL with correct route based on setup_wizard_complete if site.additional_system_user_created: - email = jingrow.db.get_value("Team", self.team, "user") - return site.get_login_sid(user=email) - - return site.get_login_sid() + return site.login_as_team() + return site.login_as_admin() def get_app_trial_page_url(): diff --git a/jcloud/www/github/redirect.py b/jcloud/www/github/redirect.py index c845b5a..2468d05 100644 --- a/jcloud/www/github/redirect.py +++ b/jcloud/www/github/redirect.py @@ -32,6 +32,6 @@ def get_context(context): except Exception: log_error("GitHub App Creation Error", code=code, response=response) - redirect_url = jingrow.utils.get_url("/desk#Form/Jcloud Settings") + redirect_url = jingrow.utils.get_url("/app#Form/Jcloud Settings") jingrow.flags.redirect_location = redirect_url raise jingrow.Redirect