From 8b7122277ad66558191c2c6366c29fe55c271a36 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 14 Jul 2019 13:36:39 -0400 Subject: [PATCH] fix: github enterprise auth compatibility --- .../authentication/github/authentication.js | 21 +++++++++++++------ .../authentication/github/definition.yml | 18 ++++++++++++++++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/server/modules/authentication/github/authentication.js b/server/modules/authentication/github/authentication.js index 721d7da0..2d776b47 100644 --- a/server/modules/authentication/github/authentication.js +++ b/server/modules/authentication/github/authentication.js @@ -9,13 +9,22 @@ const _ = require('lodash') module.exports = { init (passport, conf) { + let githubConfig = { + clientID: conf.clientId, + clientSecret: conf.clientSecret, + callbackURL: conf.callbackURL, + scope: ['user:email'] + } + + if (conf.useEnterprise) { + githubConfig.authorizationURL = `https://${conf.enterpriseDomain}/login/oauth/authorize` + githubConfig.tokenURL = `https://${conf.enterpriseDomain}/login/oauth/access_token` + githubConfig.userProfileURL = conf.enterpriseUserEndpoint + githubConfig.userEmailURL = `${conf.enterpriseUserEndpoint}/emails` + } + passport.use('github', - new GitHubStrategy({ - clientID: conf.clientId, - clientSecret: conf.clientSecret, - callbackURL: conf.callbackURL, - scope: ['user:email'] - }, async (accessToken, refreshToken, profile, cb) => { + new GitHubStrategy(githubConfig, async (accessToken, refreshToken, profile, cb) => { try { const user = await WIKI.models.users.processProfile({ profile: { diff --git a/server/modules/authentication/github/definition.yml b/server/modules/authentication/github/definition.yml index 6af5e24f..691e24e9 100644 --- a/server/modules/authentication/github/definition.yml +++ b/server/modules/authentication/github/definition.yml @@ -18,4 +18,22 @@ props: title: Client Secret hint: Application Client Secret order: 2 + useEnterprise: + type: Boolean + title: Use GitHub Enterprise + hint: Enable if you're using the self-hosted GitHub Enterprise version + default: false + order: 3 + enterpriseDomain: + type: String + title: GitHub Enterprise Domain + hint: GitHub Enterprise Only - Domain of your installation (e.g. github.company.com). Leave blank otherwise. + default: '' + order: 4 + enterpriseUserEndpoint: + type: String + title: GitHub Enterprise User Endpoint + hint: GitHub Enterprise Only - Endpoint to fetch user details (e.g. https://api.github.com/user). Leave blank otherwise. + default: 'https://api.github.com/user' + order: 5