diff --git a/server/routes/auth/providers/req.ts b/server/routes/auth/providers/req.ts new file mode 100644 index 00000000..22beba6e --- /dev/null +++ b/server/routes/auth/providers/req.ts @@ -0,0 +1,64 @@ +import passport from "@outlinewiki/koa-passport"; +import Router from "koa-router"; +import { capitalize } from "lodash"; +import { Strategy as ReqStrategy } from "passport-req"; +import accountProvisioner from "@server/commands/accountProvisioner"; +import env from "@server/env"; +import passportMiddleware from "@server/middlewares/passport"; +import { getAllowedDomains } from "@server/utils/authentication"; +import { StateStore } from "@server/utils/passport"; + +const router = new Router(); +const providerName = "req"; +const allowedDomains = getAllowedDomains(); + +export const config = { + name: "Visitor", + enabled: true, +}; + +if (true) { + passport.use( + new ReqStrategy( + async function (req,done) { + try { + const domain = "domain.tld"; + const subdomain = domain.split(".")[0]; + const teamName = capitalize(subdomain); + const name = "Visitor"; + const email = "visitor@domain.tld"; + const result = await accountProvisioner({ + ip: req.ip, + team: { + name: teamName, + domain, + subdomain, + }, + user: { + name: name, + email: email, + avatarUrl: null, + }, + authenticationProvider: { + name: providerName, + providerId: domain, + }, + authentication: { + providerId: "1234", + accessToken: null, + refreshToken: null, + scopes: [], + }, + }); + return done(null, result.user, result); + } catch (err) { + return done(err, null); + } + } + ) + ); + + router.get("req", passportMiddleware(providerName)); +} + +export default router; diff --git a/yarn.lock b/yarn.lock index 0bc83b9b..06e1b385 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11790,6 +11790,14 @@ passport-oauth@1.0.x: passport-oauth1 "1.x.x" passport-oauth2 "1.x.x" +passport-req@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/passport-req/-/passport-req-0.1.1.tgz#451bff1500b3d464a768d42f0762328a21236a18" + integrity sha1-RRv/FQCz1GSnaNQvB2IyiiEjahg= + dependencies: + passport "~0.1.1" + pkginfo "0.2.x" + passport-slack-oauth2@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/passport-slack-oauth2/-/passport-slack-oauth2-1.1.1.tgz#d831ffc3f1e968fcc3622e6ecf41643c8d8f9cbc" diff --git a/package.json b/package.json index ff45e246..a5837c23 100644 --- a/package.json +++ b/package.json @@ -144,6 +144,7 @@ "passport": "^0.6.0", "passport-google-oauth2": "^0.2.0", "passport-oauth2": "^1.6.1", + "passport-req": "^0.1.1", "passport-slack-oauth2": "^1.1.1", "pg": "^8.5.1", "pg-hstore": "^2.3.4",