-
Notifications
You must be signed in to change notification settings - Fork 329
/
session.go
109 lines (90 loc) · 2.55 KB
/
session.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package request
import (
"net/url"
"github.com/cortezaproject/corteza/server/system/types"
"github.com/gorilla/sessions"
)
const (
keyRememberMe = "remember-me"
keyOriginalSession = "originalSession"
keyAuthUser = "authUser"
keyRoles = "roles"
keyOAuth2AuthParams = "oauth2AuthParams"
keyOAuth2Client = "oauth2ClientID"
keyOAuth2ClientAuthorized = "oauth2ClientAuthorized"
)
// GetUser is wrapper to get value from session
func GetAuthUser(ses *sessions.Session) *authUser {
val, has := ses.Values[keyAuthUser]
if !has {
return nil
}
au := val.(*authUser)
if au.User != nil {
au.User.SetRoles(getRoleMemberships(ses)...)
}
return au
}
// GetRoleMemberships is wrapper to get value from session
func getRoleMemberships(ses *sessions.Session) []uint64 {
val, has := ses.Values[keyRoles]
if !has {
return nil
}
return val.([]uint64)
}
// GetOAuth2AuthParams is wrapper to get value from session
func GetOAuth2AuthParams(ses *sessions.Session) url.Values {
val, has := ses.Values[keyOAuth2AuthParams]
if !has {
return nil
}
return val.(url.Values)
}
// SetOauth2AuthParams is a session value setting wrapper for Oauth2AuthParams
func SetOauth2AuthParams(ses *sessions.Session, val url.Values) {
if val != nil {
ses.Values[keyOAuth2AuthParams] = val
} else {
delete(ses.Values, keyOAuth2AuthParams)
}
}
// GetOauth2Client is wrapper to get value from session
func GetOauth2Client(ses *sessions.Session) *types.AuthClient {
val, has := ses.Values[keyOAuth2Client]
if !has {
return nil
}
return val.(*types.AuthClient)
}
// SetOauth2Client is a session value setting wrapper for Oauth2Client
func SetOauth2Client(ses *sessions.Session, val *types.AuthClient) {
if val != nil {
ses.Values[keyOAuth2Client] = val
} else {
delete(ses.Values, keyOAuth2Client)
}
}
// IsOauth2ClientAuthorized is wrapper to get value from session
func IsOauth2ClientAuthorized(ses *sessions.Session) bool {
val, has := ses.Values[keyOAuth2ClientAuthorized]
if !has {
return false
}
return val.(bool)
}
// SetOauth2ClientAuthorized is a session value setting wrapper for Oauth2ClientAuthorized
func SetOauth2ClientAuthorized(ses *sessions.Session, val bool) {
if val {
ses.Values[keyOAuth2ClientAuthorized] = true
} else {
delete(ses.Values, keyOAuth2ClientAuthorized)
}
}
// IsPermLogin decodes remember-me flag from the session and returns true if set
func IsPermLogin(ses *sessions.Session) (p bool) {
if aux, has := ses.Values[keyRememberMe]; has {
p, _ = aux.(bool)
}
return
}