|
@@ -2,11 +2,11 @@ package social
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
"encoding/json"
|
|
"encoding/json"
|
|
|
|
|
+ "errors"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
|
|
+ "net/http"
|
|
|
"strconv"
|
|
"strconv"
|
|
|
"strings"
|
|
"strings"
|
|
|
- "errors"
|
|
|
|
|
- "net/http"
|
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/models"
|
|
"github.com/grafana/grafana/pkg/models"
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
@@ -78,13 +78,23 @@ func NewOAuthService() {
|
|
|
if name == "github" {
|
|
if name == "github" {
|
|
|
setting.OAuthService.GitHub = true
|
|
setting.OAuthService.GitHub = true
|
|
|
teamIds := sec.Key("team_ids").Ints(",")
|
|
teamIds := sec.Key("team_ids").Ints(",")
|
|
|
- SocialMap["github"] = &SocialGithub{Config: &config, allowedDomains: info.AllowedDomains, ApiUrl: info.ApiUrl, allowSignup: info.AllowSignup, teamIds: teamIds}
|
|
|
|
|
|
|
+ SocialMap["github"] = &SocialGithub{
|
|
|
|
|
+ Config: &config,
|
|
|
|
|
+ allowedDomains: info.AllowedDomains,
|
|
|
|
|
+ apiUrl: info.ApiUrl,
|
|
|
|
|
+ allowSignup: info.AllowSignup,
|
|
|
|
|
+ teamIds: teamIds,
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Google.
|
|
// Google.
|
|
|
if name == "google" {
|
|
if name == "google" {
|
|
|
setting.OAuthService.Google = true
|
|
setting.OAuthService.Google = true
|
|
|
- SocialMap["google"] = &SocialGoogle{Config: &config, allowedDomains: info.AllowedDomains, ApiUrl: info.ApiUrl, allowSignup: info.AllowSignup}
|
|
|
|
|
|
|
+ SocialMap["google"] = &SocialGoogle{
|
|
|
|
|
+ Config: &config, allowedDomains: info.AllowedDomains,
|
|
|
|
|
+ apiUrl: info.ApiUrl,
|
|
|
|
|
+ allowSignup: info.AllowSignup,
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -106,7 +116,7 @@ func isEmailAllowed(email string, allowedDomains []string) bool {
|
|
|
type SocialGithub struct {
|
|
type SocialGithub struct {
|
|
|
*oauth2.Config
|
|
*oauth2.Config
|
|
|
allowedDomains []string
|
|
allowedDomains []string
|
|
|
- ApiUrl string
|
|
|
|
|
|
|
+ apiUrl string
|
|
|
allowSignup bool
|
|
allowSignup bool
|
|
|
teamIds []int
|
|
teamIds []int
|
|
|
}
|
|
}
|
|
@@ -129,8 +139,8 @@ func (s *SocialGithub) IsSignupAllowed() bool {
|
|
|
|
|
|
|
|
func (s *SocialGithub) IsTeamMember(client *http.Client, username string, teamId int) bool {
|
|
func (s *SocialGithub) IsTeamMember(client *http.Client, username string, teamId int) bool {
|
|
|
var data struct {
|
|
var data struct {
|
|
|
- Url string `json:"url"`
|
|
|
|
|
- State string `json:"state"`
|
|
|
|
|
|
|
+ Url string `json:"url"`
|
|
|
|
|
+ State string `json:"state"`
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
membershipUrl := fmt.Sprintf("https://api.github.com/teams/%d/memberships/%s", teamId, username)
|
|
membershipUrl := fmt.Sprintf("https://api.github.com/teams/%d/memberships/%s", teamId, username)
|
|
@@ -158,7 +168,7 @@ func (s *SocialGithub) UserInfo(token *oauth2.Token) (*BasicUserInfo, error) {
|
|
|
|
|
|
|
|
var err error
|
|
var err error
|
|
|
client := s.Client(oauth2.NoContext, token)
|
|
client := s.Client(oauth2.NoContext, token)
|
|
|
- r, err := client.Get(s.ApiUrl)
|
|
|
|
|
|
|
+ r, err := client.Get(s.apiUrl)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return nil, err
|
|
return nil, err
|
|
|
}
|
|
}
|
|
@@ -198,7 +208,7 @@ func (s *SocialGithub) UserInfo(token *oauth2.Token) (*BasicUserInfo, error) {
|
|
|
type SocialGoogle struct {
|
|
type SocialGoogle struct {
|
|
|
*oauth2.Config
|
|
*oauth2.Config
|
|
|
allowedDomains []string
|
|
allowedDomains []string
|
|
|
- ApiUrl string
|
|
|
|
|
|
|
+ apiUrl string
|
|
|
allowSignup bool
|
|
allowSignup bool
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -223,7 +233,7 @@ func (s *SocialGoogle) UserInfo(token *oauth2.Token) (*BasicUserInfo, error) {
|
|
|
var err error
|
|
var err error
|
|
|
|
|
|
|
|
client := s.Client(oauth2.NoContext, token)
|
|
client := s.Client(oauth2.NoContext, token)
|
|
|
- r, err := client.Get(s.ApiUrl)
|
|
|
|
|
|
|
+ r, err := client.Get(s.apiUrl)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return nil, err
|
|
return nil, err
|
|
|
}
|
|
}
|