diff --git a/plugins/github/server/api/github.ts b/plugins/github/server/api/github.ts index 3bf9d80045..793be354b8 100644 --- a/plugins/github/server/api/github.ts +++ b/plugins/github/server/api/github.ts @@ -1,6 +1,7 @@ import Router from "koa-router"; import find from "lodash/find"; import { IntegrationService, IntegrationType } from "@shared/types"; +import { parseDomain } from "@shared/utils/domains"; import Logger from "@server/logging/Logger"; import auth from "@server/middlewares/authentication"; import { transaction } from "@server/middlewares/transaction"; @@ -51,12 +52,14 @@ router.get( rejectOnEmpty: true, transaction, }); - return ctx.redirectOnClient( - GitHubUtils.callbackUrl({ - baseUrl: team.url, - params: ctx.request.querystring, - }) - ); + return parseDomain(ctx.host).teamSubdomain === team.subdomain + ? ctx.redirect("/") + : ctx.redirectOnClient( + GitHubUtils.callbackUrl({ + baseUrl: team.url, + params: ctx.request.querystring, + }) + ); } catch (err) { Logger.error(`Error fetching team for teamId: ${teamId}!`, err); return ctx.redirect(GitHubUtils.errorUrl("unauthenticated")); diff --git a/plugins/slack/server/auth/slack.ts b/plugins/slack/server/auth/slack.ts index abafff0c41..12aa5de5ba 100644 --- a/plugins/slack/server/auth/slack.ts +++ b/plugins/slack/server/auth/slack.ts @@ -4,6 +4,7 @@ import Router from "koa-router"; import { Profile } from "passport"; import { Strategy as SlackStrategy } from "passport-slack-oauth2"; import { IntegrationService, IntegrationType } from "@shared/types"; +import { parseDomain } from "@shared/utils/domains"; import accountProvisioner from "@server/commands/accountProvisioner"; import { ValidationError } from "@server/errors"; import auth from "@server/middlewares/authentication"; @@ -155,12 +156,14 @@ if (env.SLACK_CLIENT_ID && env.SLACK_CLIENT_SECRET) { const team = await Team.findByPk(teamId, { rejectOnEmpty: true, }); - return ctx.redirectOnClient( - SlackUtils.connectUrl({ - baseUrl: team.url, - params: ctx.request.querystring, - }) - ); + return parseDomain(ctx.host).teamSubdomain === team.subdomain + ? ctx.redirect("/") + : ctx.redirectOnClient( + SlackUtils.connectUrl({ + baseUrl: team.url, + params: ctx.request.querystring, + }) + ); } catch (err) { return ctx.redirect(SlackUtils.errorUrl("unauthenticated")); }