mirror of
https://github.com/grafana/grafana.git
synced 2025-02-03 20:21:01 -06:00
feat(oauth): refactoring PR #6077
This commit is contained in:
parent
5ccdbf01fd
commit
e5fc4332cd
@ -25,11 +25,12 @@ func LoginView(c *middleware.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
viewData.Settings["googleAuthEnabled"] = setting.OAuthService.Google
|
||||
viewData.Settings["githubAuthEnabled"] = setting.OAuthService.GitHub
|
||||
viewData.Settings["grafanaNetAuthEnabled"] = setting.OAuthService.GrafanaNet
|
||||
viewData.Settings["genericOAuthEnabled"] = setting.OAuthService.Generic
|
||||
viewData.Settings["oauthProviderName"] = setting.OAuthService.OAuthProviderName
|
||||
enabledOAuths := make(map[string]interface{})
|
||||
for key, oauth := range setting.OAuthService.OAuthInfos {
|
||||
enabledOAuths[key] = map[string]string{"name": oauth.Name}
|
||||
}
|
||||
|
||||
viewData.Settings["oauth"] = enabledOAuths
|
||||
viewData.Settings["disableUserSignUp"] = !setting.AllowUserSignUp
|
||||
viewData.Settings["loginHint"] = setting.LoginHint
|
||||
viewData.Settings["allowUserPassLogin"] = setting.AllowUserPassLogin
|
||||
|
@ -8,12 +8,11 @@ type OAuthInfo struct {
|
||||
AllowedDomains []string
|
||||
ApiUrl string
|
||||
AllowSignup bool
|
||||
Name string
|
||||
}
|
||||
|
||||
type OAuther struct {
|
||||
GitHub, Google, Twitter, Generic, GrafanaNet bool
|
||||
OAuthInfos map[string]*OAuthInfo
|
||||
OAuthProviderName string
|
||||
OAuthInfos map[string]*OAuthInfo
|
||||
}
|
||||
|
||||
var OAuthService *OAuther
|
||||
|
@ -51,6 +51,7 @@ func NewOAuthService() {
|
||||
Enabled: sec.Key("enabled").MustBool(),
|
||||
AllowedDomains: sec.Key("allowed_domains").Strings(" "),
|
||||
AllowSignup: sec.Key("allow_sign_up").MustBool(),
|
||||
Name: sec.Key("name").MustString(name),
|
||||
}
|
||||
|
||||
if !info.Enabled {
|
||||
@ -71,22 +72,18 @@ func NewOAuthService() {
|
||||
|
||||
// GitHub.
|
||||
if name == "github" {
|
||||
setting.OAuthService.GitHub = true
|
||||
teamIds := sec.Key("team_ids").Ints(",")
|
||||
allowedOrganizations := sec.Key("allowed_organizations").Strings(" ")
|
||||
SocialMap["github"] = &SocialGithub{
|
||||
Config: &config,
|
||||
allowedDomains: info.AllowedDomains,
|
||||
apiUrl: info.ApiUrl,
|
||||
allowSignup: info.AllowSignup,
|
||||
teamIds: teamIds,
|
||||
allowedOrganizations: allowedOrganizations,
|
||||
teamIds: sec.Key("team_ids").Ints(","),
|
||||
allowedOrganizations: sec.Key("allowed_organizations").Strings(" "),
|
||||
}
|
||||
}
|
||||
|
||||
// Google.
|
||||
if name == "google" {
|
||||
setting.OAuthService.Google = true
|
||||
SocialMap["google"] = &SocialGoogle{
|
||||
Config: &config, allowedDomains: info.AllowedDomains,
|
||||
apiUrl: info.ApiUrl,
|
||||
@ -96,35 +93,23 @@ func NewOAuthService() {
|
||||
|
||||
// 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"] = &GenericOAuth{
|
||||
Config: &config,
|
||||
allowedDomains: info.AllowedDomains,
|
||||
apiUrl: info.ApiUrl,
|
||||
allowSignup: info.AllowSignup,
|
||||
teamIds: teamIds,
|
||||
allowedOrganizations: allowedOrganizations,
|
||||
teamIds: sec.Key("team_ids").Ints(","),
|
||||
allowedOrganizations: sec.Key("allowed_organizations").Strings(" "),
|
||||
}
|
||||
}
|
||||
|
||||
if name == "grafananet" {
|
||||
setting.OAuthService.GrafanaNet = true
|
||||
allowedOrganizations := sec.Key("allowed_organizations").Strings(" ")
|
||||
|
||||
url := sec.Key("url").String()
|
||||
if url == "" {
|
||||
url = "https://grafana.net"
|
||||
}
|
||||
|
||||
config := oauth2.Config{
|
||||
ClientID: info.ClientId,
|
||||
ClientSecret: info.ClientSecret,
|
||||
Endpoint: oauth2.Endpoint{
|
||||
AuthURL: url + "/oauth2/authorize",
|
||||
TokenURL: url + "/api/oauth2/token",
|
||||
AuthURL: setting.GrafanaNetUrl + "/oauth2/authorize",
|
||||
TokenURL: setting.GrafanaNetUrl + "/api/oauth2/token",
|
||||
},
|
||||
RedirectURL: strings.TrimSuffix(setting.AppUrl, "/") + SocialBaseUrl + name,
|
||||
Scopes: info.Scopes,
|
||||
@ -132,9 +117,9 @@ func NewOAuthService() {
|
||||
|
||||
SocialMap["grafananet"] = &SocialGrafanaNet{
|
||||
Config: &config,
|
||||
url: url,
|
||||
url: setting.GrafanaNetUrl,
|
||||
allowSignup: info.AllowSignup,
|
||||
allowedOrganizations: allowedOrganizations,
|
||||
allowedOrganizations: sec.Key("allowed_organizations").Strings(" "),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
define([
|
||||
'angular',
|
||||
'lodash',
|
||||
'../core_module',
|
||||
'app/core/config',
|
||||
],
|
||||
function (angular, coreModule, config) {
|
||||
function (angular, _, coreModule, config) {
|
||||
'use strict';
|
||||
|
||||
var failCodes = {
|
||||
@ -21,18 +22,10 @@ function (angular, coreModule, config) {
|
||||
|
||||
contextSrv.sidemenu = false;
|
||||
|
||||
$scope.googleAuthEnabled = config.googleAuthEnabled;
|
||||
$scope.githubAuthEnabled = config.githubAuthEnabled;
|
||||
$scope.grafanaNetAuthEnabled = config.grafanaNetAuthEnabled;
|
||||
$scope.oauthEnabled = (
|
||||
config.githubAuthEnabled
|
||||
|| config.googleAuthEnabled
|
||||
|| config.grafanaNetAuthEnabled
|
||||
|| config.genericOAuthEnabled
|
||||
);
|
||||
$scope.oauth = config.oauth;
|
||||
$scope.oauthEnabled = _.keys(config.oauth).length > 0;
|
||||
|
||||
$scope.allowUserPassLogin = config.allowUserPassLogin;
|
||||
$scope.genericOAuthEnabled = config.genericOAuthEnabled;
|
||||
$scope.oauthProviderName = config.oauthProviderName;
|
||||
$scope.disableUserSignUp = config.disableUserSignUp;
|
||||
$scope.loginHint = config.loginHint;
|
||||
|
||||
|
@ -51,20 +51,20 @@
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<div class="login-oauth text-center" ng-show="oauthEnabled">
|
||||
<a class="btn btn-large btn-google" href="login/google" target="_self" ng-if="googleAuthEnabled">
|
||||
<a class="btn btn-large btn-google" href="login/google" target="_self" ng-if="oauth.google">
|
||||
<i class="fa fa-google"></i>
|
||||
with Google
|
||||
</a>
|
||||
<a class="btn btn-large btn-github" href="login/github" target="_self" ng-if="githubAuthEnabled">
|
||||
<a class="btn btn-large btn-github" href="login/github" target="_self" ng-if="oauth.github">
|
||||
<i class="fa fa-github"></i>
|
||||
with Github
|
||||
</a>
|
||||
<a class="btn btn-large btn-grafana-net" href="login/grafananet" target="_self" ng-if="grafanaNetAuthEnabled">
|
||||
<a class="btn btn-large btn-grafana-net" href="login/grafananet" target="_self" ng-if="oauth.grafananet">
|
||||
with <span>Grafana.net</span>
|
||||
</a>
|
||||
<a class="btn btn-large btn-generic-oauth" href="login/generic_oauth" target="_self" ng-if="genericOAuthEnabled">
|
||||
<a class="btn btn-large btn-generic-oauth" href="login/generic_oauth" target="_self" ng-if="oauth.generic_oauth">
|
||||
<i class="fa fa-gear"></i>
|
||||
with {{oauthProviderName || "OAuth 2"}}
|
||||
with {{oauth.generic_oauth.name}}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user