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.
|
// Base URL used for accessing plugin material.
|
||||||
pluginUrl?: string;
|
pluginUrl?: string;
|
||||||
|
|
||||||
|
// If set, org is expected to be encoded in the path, not domain.
|
||||||
|
pathOnly?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Result of getOrgUrlInfo().
|
// Result of getOrgUrlInfo().
|
||||||
@ -145,6 +148,9 @@ export function getOrgUrlInfo(newOrg: string, currentHost: string, options: OrgU
|
|||||||
if (newOrg === options.singleOrg) {
|
if (newOrg === options.singleOrg) {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
if (options.pathOnly) {
|
||||||
|
return {orgInPath: newOrg};
|
||||||
|
}
|
||||||
const hostType = getHostType(currentHost, options);
|
const hostType = getHostType(currentHost, options);
|
||||||
if (hostType !== 'plugin') {
|
if (hostType !== 'plugin') {
|
||||||
const hostname = currentHost.split(":")[0];
|
const hostname = currentHost.split(":")[0];
|
||||||
|
@ -1515,12 +1515,8 @@ export class FlexServer implements GristServer {
|
|||||||
* path.
|
* path.
|
||||||
*/
|
*/
|
||||||
private _getOrgRedirectUrl(req: RequestWithLogin, subdomain: string, pathname: string = req.originalUrl): string {
|
private _getOrgRedirectUrl(req: RequestWithLogin, subdomain: string, pathname: string = req.originalUrl): string {
|
||||||
const {hostname, orgInPath} = getOrgUrlInfo(subdomain, req.get('host')!, {
|
const config = this.getGristConfig();
|
||||||
org: req.org,
|
const {hostname, orgInPath} = getOrgUrlInfo(subdomain, req.get('host')!, config);
|
||||||
baseDomain: this._defaultBaseDomain,
|
|
||||||
pluginUrl: this._pluginUrl,
|
|
||||||
singleOrg: process.env.GRIST_SINGLE_ORG,
|
|
||||||
});
|
|
||||||
const redirectUrl = new URL(pathname, `${req.protocol}://${req.get('host')}`);
|
const redirectUrl = new URL(pathname, `${req.protocol}://${req.get('host')}`);
|
||||||
if (hostname) {
|
if (hostname) {
|
||||||
redirectUrl.hostname = hostname;
|
redirectUrl.hostname = hostname;
|
||||||
|
Loading…
Reference in New Issue
Block a user