diff --git a/pkg/api/login.go b/pkg/api/login.go
index 4f976f753a2..789765ee01e 100644
--- a/pkg/api/login.go
+++ b/pkg/api/login.go
@@ -27,6 +27,8 @@ func LoginView(c *middleware.Context) {
viewData.Settings["googleAuthEnabled"] = setting.OAuthService.Google
viewData.Settings["githubAuthEnabled"] = setting.OAuthService.GitHub
+ viewData.Settings["genericOAuthEnabled"] = setting.OAuthService.Generic
+ viewData.Settings["oauthProviderName"] = setting.OAuthService.OAuthProviderName
viewData.Settings["disableUserSignUp"] = !setting.AllowUserSignUp
viewData.Settings["loginHint"] = setting.LoginHint
viewData.Settings["allowUserPassLogin"] = setting.AllowUserPassLogin
diff --git a/pkg/setting/setting_oauth.go b/pkg/setting/setting_oauth.go
index db2f0fb3802..71c4ade1468 100644
--- a/pkg/setting/setting_oauth.go
+++ b/pkg/setting/setting_oauth.go
@@ -11,8 +11,9 @@ type OAuthInfo struct {
}
type OAuther struct {
- GitHub, Google, Twitter bool
- OAuthInfos map[string]*OAuthInfo
+ GitHub, Google, Twitter, Generic bool
+ OAuthInfos map[string]*OAuthInfo
+ OAuthProviderName string
}
var OAuthService *OAuther
diff --git a/pkg/social/social.go b/pkg/social/social.go
index 4a8cb8bac5d..402f02449ff 100644
--- a/pkg/social/social.go
+++ b/pkg/social/social.go
@@ -42,7 +42,7 @@ func NewOAuthService() {
setting.OAuthService = &setting.OAuther{}
setting.OAuthService.OAuthInfos = make(map[string]*setting.OAuthInfo)
- allOauthes := []string{"github", "google"}
+ allOauthes := []string{"github", "google", "generic-oauth"}
for _, name := range allOauthes {
sec := setting.Cfg.Section("auth." + name)
@@ -98,6 +98,22 @@ func NewOAuthService() {
allowSignup: info.AllowSignup,
}
}
+
+ // Generic - Uses the same scheme as Github.
+ if name == "generic-oauth" {
+ setting.OAuthService.Generic = true
+ setting.OAuthService.OAuthProviderName = sec.Key("oauth_provider_name").String()
+ teamIds := sec.Key("team_ids").Ints(",")
+ allowedOrganizations := sec.Key("allowed_organizations").Strings(" ")
+ SocialMap["generic-oauth"] = &SocialGithub{
+ Config: &config,
+ allowedDomains: info.AllowedDomains,
+ apiUrl: info.ApiUrl,
+ allowSignup: info.AllowSignup,
+ teamIds: teamIds,
+ allowedOrganizations: allowedOrganizations,
+ }
+ }
}
}
diff --git a/public/app/core/controllers/login_ctrl.js b/public/app/core/controllers/login_ctrl.js
index 8696d94f4f3..60136a05c0c 100644
--- a/public/app/core/controllers/login_ctrl.js
+++ b/public/app/core/controllers/login_ctrl.js
@@ -17,8 +17,10 @@ function (angular, coreModule, config) {
$scope.googleAuthEnabled = config.googleAuthEnabled;
$scope.githubAuthEnabled = config.githubAuthEnabled;
- $scope.oauthEnabled = config.githubAuthEnabled || config.googleAuthEnabled;
+ $scope.oauthEnabled = config.githubAuthEnabled || config.googleAuthEnabled || config.genericOAuthEnabled;
$scope.allowUserPassLogin = config.allowUserPassLogin;
+ $scope.genericOAuthEnabled = config.genericOAuthEnabled;
+ $scope.oauthProviderName = config.oauthProviderName;
$scope.disableUserSignUp = config.disableUserSignUp;
$scope.loginHint = config.loginHint;
diff --git a/public/app/partials/login.html b/public/app/partials/login.html
index 5bee63e6214..200200ee4b9 100644
--- a/public/app/partials/login.html
+++ b/public/app/partials/login.html
@@ -59,6 +59,10 @@
with Github
+
+
+ with {{oauthProviderName || "OAuth 2"}}
+