/
base.go
69 lines (60 loc) · 1.84 KB
/
base.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// Copyright 2014 beego authors
//
// Licensed under the Apache License, Version 2.0 (the "License"): you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.
//
// Maintain by https://github.com/slene
package apps
import (
"encoding/base64"
"github.com/astaxie/beego/orm"
"github.com/Michael2008S/oauth2beego"
)
type BaseProvider struct {
App social.Provider
ClientId string
ClientSecret string
Scope string
AuthURL string
TokenURL string
RedirectURL string
AccessType string
ApprovalPrompt string
}
func (p *BaseProvider) getBasicAuth() string {
return "Basic " + base64.StdEncoding.EncodeToString([]byte(p.ClientId+":"+p.ClientSecret))
}
func (p *BaseProvider) GetConfig() *social.Config {
return &social.Config{
ClientId: p.ClientId,
ClientSecret: p.ClientSecret,
Scope: p.Scope,
AuthURL: p.AuthURL,
TokenURL: p.TokenURL,
RedirectURL: p.RedirectURL,
AccessType: p.AccessType,
ApprovalPrompt: p.ApprovalPrompt,
}
}
func (p *BaseProvider) CanConnect(tok *social.Token, userSocial *social.UserSocial) (bool, error) {
identify, err := p.App.GetIndentify(tok)
if err != nil {
return false, err
}
if err := social.UserSocials().Filter("Identify", identify).Filter("Type", p.App.GetType()).One(userSocial); err == orm.ErrNoRows {
return true, nil
} else if err == nil {
return false, nil
} else {
return false, err
}
}