Compare commits
2 Commits
c64387668d
...
main
Author | SHA1 | Date |
---|---|---|
trav | 3e68d80a9e | |
trav | 170213a305 |
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
kind: pipeline
|
||||
name: linters
|
||||
steps:
|
||||
- name: publish image
|
||||
image: plugins/docker
|
||||
settings:
|
||||
auto_tag: true
|
||||
username: thecoopcloud
|
||||
password:
|
||||
from_secret: thecoopcloud_password
|
||||
repo: thecoopcloud/outline-with-patch
|
||||
tags: latest
|
||||
when:
|
||||
event:
|
||||
exclude:
|
||||
- pull_request
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- main
|
|
@ -8,7 +8,7 @@ import {
|
|||
} from "../errors";
|
||||
import mailer from "../mailer";
|
||||
import { Collection, Team, User } from "../models";
|
||||
import teamCreator from "./teamCreator";
|
||||
import teamCreator, { findExistingTeam } from "./teamCreator";
|
||||
import userCreator from "./userCreator";
|
||||
|
||||
type Props = {|
|
||||
|
@ -53,13 +53,15 @@ export default async function accountProvisioner({
|
|||
}: Props): Promise<AccountProvisionerResult> {
|
||||
let result;
|
||||
try {
|
||||
result = await teamCreator({
|
||||
result =
|
||||
(await findExistingTeam(authenticationProviderParams)) ||
|
||||
(await teamCreator({
|
||||
name: teamParams.name,
|
||||
domain: teamParams.domain,
|
||||
subdomain: teamParams.subdomain,
|
||||
avatarUrl: teamParams.avatarUrl,
|
||||
authenticationProvider: authenticationProviderParams,
|
||||
});
|
||||
}));
|
||||
} catch (err) {
|
||||
throw new AuthenticationError(err.message);
|
||||
}
|
||||
|
|
|
@ -12,6 +12,44 @@ type TeamCreatorResult = {|
|
|||
isNewTeam: boolean,
|
||||
|};
|
||||
|
||||
export async function findExistingTeam(authenticationProvider: {|
|
||||
name: string,
|
||||
providerId: string,
|
||||
|}): Promise<TeamCreatorResult | null> {
|
||||
// Should outline deployed in a multi-tenant environment, skip searching
|
||||
// for an existing team.
|
||||
if (process.env.DEPLOYMENT === "hosted") return null;
|
||||
|
||||
// get the first team that exists, ordered by createdAt
|
||||
const team = await Team.findOne({ limit: 1, order: ["createdAt"] });
|
||||
if (team === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// query if a corresponding authenticationProvider already exists
|
||||
let authenticationProviders = await team.getAuthenticationProviders({
|
||||
where: {
|
||||
name: authenticationProvider.name,
|
||||
},
|
||||
});
|
||||
|
||||
// ... if this is not the case, create a new authentication provider
|
||||
// that we use instead, overwriting the providerId with the domain of the team
|
||||
let authP =
|
||||
authenticationProviders.length === 0
|
||||
? await team.createAuthenticationProvider({
|
||||
...authenticationProvider,
|
||||
providerId: team.domain,
|
||||
})
|
||||
: authenticationProviders[0];
|
||||
|
||||
return {
|
||||
authenticationProvider: authP,
|
||||
team: team,
|
||||
isNewTeam: false,
|
||||
};
|
||||
}
|
||||
|
||||
export default async function teamCreator({
|
||||
name,
|
||||
domain,
|
||||
|
|
Reference in New Issue