修复jcloud的dashboard界面点击设置站点无法打开jingrow新版前端初始化设置页面的问题

This commit is contained in:
jingrow 2026-02-21 08:47:16 +08:00
parent 1014575ba1
commit 7948d4dcc2
9 changed files with 38 additions and 30 deletions

View File

@ -5,8 +5,9 @@ export function loginAsAdmin(siteName) {
url: 'jcloud.api.site.login', url: 'jcloud.api.site.login',
params: { name: siteName }, params: { name: siteName },
onSuccess(data) { onSuccess(data) {
if (data?.sid && data?.site) { // Use the URL returned by backend which includes correct route
window.open(`https://${data.site}/desk?sid=${data.sid}`, '_blank'); if (data?.url) {
window.open(data.url, '_blank');
} }
}, },
validate() { validate() {

View File

@ -212,12 +212,10 @@ export default {
getLoginSid: { getLoginSid: {
method: 'get_login_sid', method: 'get_login_sid',
onSuccess(data) { onSuccess(data) {
const sid = data; // Backend returns complete URL with correct route
const redirectRoute = if (data) {
this.$resources?.saasProduct?.pg?.redirect_to_after_login ?? window.open(data, '_blank');
'/desk'; }
const loginURL = `https://${this.$resources.siteRequest.pg.domain}${redirectRoute}?sid=${sid}`;
window.open(loginURL, '_blank');
}, },
}, },
}, },

View File

@ -136,8 +136,9 @@ const loginToSite = createResource({
}; };
}, },
onSuccess(data) { onSuccess(data) {
if (data?.sid && data?.site) { // Backend returns the complete URL with correct route
window.location.href = `https://${data.site}/desk?sid=${data.sid}`; if (data?.url) {
window.location.href = data.url;
} }
} }
}); });

View File

@ -1538,7 +1538,11 @@ def activate(name):
@jingrow.whitelist() @jingrow.whitelist()
@protected("Site") @protected("Site")
def login(name, reason=None): 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() @jingrow.whitelist()

View File

@ -422,12 +422,9 @@ function login_as_admin(site_name, reason = null) {
}) })
.then( .then(
(res) => { (res) => {
console.log(site_name, res.message.sid); // Use the URL returned by backend which includes correct route
if (res) { if (res?.message?.url) {
window.open( window.open(res.message.url, '_blank');
`https://${site_name}/desk?sid=${res.message.sid}`,
'_blank',
);
} }
}, },
(error) => { (error) => {

View File

@ -1419,7 +1419,9 @@ class Site(Page, TagHelpers):
@site_action(["Active", "Broken"]) @site_action(["Active", "Broken"])
def login_as_admin(self, reason=None): def login_as_admin(self, reason=None):
sid = self.login(reason=reason) 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() @dashboard_whitelist()
@site_action(["Active"]) @site_action(["Active"])
@ -1427,13 +1429,16 @@ class Site(Page, TagHelpers):
if self.additional_system_user_created: if self.additional_system_user_created:
team_user = jingrow.db.get_value("Team", self.team, "user") team_user = jingrow.db.get_value("Team", self.team, "user")
sid = self.get_login_sid(user=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 = ( redirect_route = (
jingrow.db.get_value("Product Trial", self.standby_for_product, "redirect_to_after_login") jingrow.db.get_value("Product Trial", self.standby_for_product, "redirect_to_after_login")
or "/desk" or "/app"
) )
else: else:
redirect_route = "/desk" redirect_route = "/app"
return f"https://{self.host_name or self.name}{redirect_route}?sid={sid}" return f"https://{self.host_name or self.name}{redirect_route}?sid={sid}"
jingrow.throw("No additional system user created for this site") 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): def login_as_user(self, user_email, reason=None):
try: try:
sid = self.get_login_sid(user=user_email) 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 = ( redirect_route = (
jingrow.db.get_value("Product Trial", self.standby_for_product, "redirect_to_after_login") jingrow.db.get_value("Product Trial", self.standby_for_product, "redirect_to_after_login")
or "/desk" or "/app"
) )
else: else:
redirect_route = "/desk" redirect_route = "/app"
return f"https://{self.host_name or self.name}{redirect_route}?sid={sid}" return f"https://{self.host_name or self.name}{redirect_route}?sid={sid}"
except Exception as e: except Exception as e:
jingrow.throw(str(e)) jingrow.throw(str(e))

View File

@ -220,7 +220,7 @@
"label": "Create Additional System User" "label": "Create Additional System User"
}, },
{ {
"default": "/desk", "default": "/app",
"fieldname": "redirect_to_after_login", "fieldname": "redirect_to_after_login",
"fieldtype": "Data", "fieldtype": "Data",
"label": "Redirect To After Login", "label": "Redirect To After Login",

View File

@ -313,11 +313,10 @@ class ProductTrialRequest(Page):
@dashboard_whitelist() @dashboard_whitelist()
def get_login_sid(self): def get_login_sid(self):
site: Site = jingrow.get_pg("Site", self.site) 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: if site.additional_system_user_created:
email = jingrow.db.get_value("Team", self.team, "user") return site.login_as_team()
return site.get_login_sid(user=email) return site.login_as_admin()
return site.get_login_sid()
def get_app_trial_page_url(): def get_app_trial_page_url():

View File

@ -32,6 +32,6 @@ def get_context(context):
except Exception: except Exception:
log_error("GitHub App Creation Error", code=code, response=response) 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 jingrow.flags.redirect_location = redirect_url
raise jingrow.Redirect raise jingrow.Redirect