فهرست منبع

fix: github enterprise auth compatibility

Nick 5 سال پیش
والد
کامیت
8b7122277a
2فایلهای تغییر یافته به همراه33 افزوده شده و 6 حذف شده
  1. 15 6
      server/modules/authentication/github/authentication.js
  2. 18 0
      server/modules/authentication/github/definition.yml

+ 15 - 6
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: {

+ 18 - 0
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