mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
(core) fix redirects for multi-team Grist on a single domain
Summary: The logic for calculating redirects wasn't quite right for Grist configured to use a single domain, with teams encoded in the path. This fixes it. Test Plan: tested manually with docker compose and /etc/hosts Reviewers: georgegevoian Reviewed By: georgegevoian Differential Revision: https://phab.getgrist.com/D3359
This commit is contained in:
parent
bb5f3fc378
commit
6c6bfee00e
@ -112,6 +112,9 @@ export interface OrgUrlOptions {
|
||||
|
||||
// Base URL used for accessing plugin material.
|
||||
pluginUrl?: string;
|
||||
|
||||
// If set, org is expected to be encoded in the path, not domain.
|
||||
pathOnly?: boolean;
|
||||
}
|
||||
|
||||
// Result of getOrgUrlInfo().
|
||||
@ -145,6 +148,9 @@ export function getOrgUrlInfo(newOrg: string, currentHost: string, options: OrgU
|
||||
if (newOrg === options.singleOrg) {
|
||||
return {};
|
||||
}
|
||||
if (options.pathOnly) {
|
||||
return {orgInPath: newOrg};
|
||||
}
|
||||
const hostType = getHostType(currentHost, options);
|
||||
if (hostType !== 'plugin') {
|
||||
const hostname = currentHost.split(":")[0];
|
||||
|
@ -1515,12 +1515,8 @@ export class FlexServer implements GristServer {
|
||||
* path.
|
||||
*/
|
||||
private _getOrgRedirectUrl(req: RequestWithLogin, subdomain: string, pathname: string = req.originalUrl): string {
|
||||
const {hostname, orgInPath} = getOrgUrlInfo(subdomain, req.get('host')!, {
|
||||
org: req.org,
|
||||
baseDomain: this._defaultBaseDomain,
|
||||
pluginUrl: this._pluginUrl,
|
||||
singleOrg: process.env.GRIST_SINGLE_ORG,
|
||||
});
|
||||
const config = this.getGristConfig();
|
||||
const {hostname, orgInPath} = getOrgUrlInfo(subdomain, req.get('host')!, config);
|
||||
const redirectUrl = new URL(pathname, `${req.protocol}://${req.get('host')}`);
|
||||
if (hostname) {
|
||||
redirectUrl.hostname = hostname;
|
||||
|
Loading…
Reference in New Issue
Block a user