-
Notifications
You must be signed in to change notification settings - Fork 2
/
util.go
77 lines (64 loc) · 2.4 KB
/
util.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
70
71
72
73
74
75
76
77
package character
import (
"crypto/sha256"
"encoding/base64"
"net/http"
"strconv"
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
"github.com/kaikourok/lunchtote-backend/library/secure"
"golang.org/x/oauth2"
)
func (u *CharacterController) oauthFailedResponse(c *gin.Context, mode string, state int) {
config := u.registry.GetConfig()
if mode != "signin" && mode != "register" {
c.String(http.StatusBadRequest, strconv.Itoa(http.StatusBadRequest)+" Bad Request.")
return
}
if mode == "signin" {
c.Redirect(http.StatusFound, config.GetString("oauth.signin-url")+"?result="+strconv.Itoa(state))
} else {
c.Redirect(http.StatusFound, config.GetString("oauth.registered-uri")+"?result="+strconv.Itoa(state))
}
}
func (u *CharacterController) getSessionDefaultConfig() sessions.Options {
config := u.registry.GetConfig()
return sessions.Options{
MaxAge: config.GetInt("secure.max-age"),
Path: config.GetString("general.api-path"),
}
}
func (u *CharacterController) getGoogleAuthConfig() *oauth2.Config {
config := u.registry.GetConfig()
return &oauth2.Config{
ClientID: config.GetString("oauth.google.client-id"),
ClientSecret: config.GetString("oauth.google.client-secret"),
Endpoint: oauth2.Endpoint{
AuthURL: config.GetString("oauth.google.auth-url"),
TokenURL: config.GetString("oauth.google.token-url"),
},
RedirectURL: config.GetString("general.host") + config.GetString("oauth.google.redirect-uri"),
Scopes: config.GetStringSlice("oauth.google.scopes"),
}
}
func (u *CharacterController) getTwitterAuthConfig() *oauth2.Config {
config := u.registry.GetConfig()
return &oauth2.Config{
ClientID: config.GetString("oauth.twitter.client-id"),
ClientSecret: config.GetString("oauth.twitter.client-secret"),
Endpoint: oauth2.Endpoint{
AuthURL: config.GetString("oauth.twitter.auth-url"),
TokenURL: config.GetString("oauth.twitter.token-url"),
},
RedirectURL: config.GetString("general.host") + config.GetString("oauth.twitter.redirect-uri"),
Scopes: config.GetStringSlice("oauth.twitter.scopes"),
}
}
func (u *CharacterController) generateCodeVerifier() string {
config := u.registry.GetConfig()
return secure.GenerateSecureRandomHex(config.GetInt("oauth.verifier-length"))
}
func (u *CharacterController) convertCodeChallenge(verifier string) string {
s := sha256.Sum256([]byte(verifier))
return base64.RawURLEncoding.EncodeToString(s[:])
}