Mercurial > gemma
changeset 149:83d798ea9f58
Rename token.go to session.go because its more fitting.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 02 Jul 2018 11:14:46 +0200 |
parents | 0116aae1071b |
children | 44a7e27a0816 |
files | auth/session.go auth/token.go |
diffstat | 2 files changed, 54 insertions(+), 54 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/auth/session.go Mon Jul 02 11:14:46 2018 +0200 @@ -0,0 +1,54 @@ +package auth + +import ( + "crypto/rand" + "encoding/base64" + "io" + "time" +) + +type Session struct { + ExpiresAt int64 `json:"expires"` + User string `json:"user"` + Password string `json:"password"` + Roles []string `json:"roles"` +} + +const ( + sessionKeyLength = 20 + maxTokenValid = time.Hour * 3 +) + +func NewSession(user, password string, roles []string) *Session { + + // Create the Claims + return &Session{ + ExpiresAt: time.Now().Add(maxTokenValid).Unix(), + User: user, + Password: password, + Roles: roles, + } +} + +func GenerateSessionKey() string { + return base64.URLEncoding.EncodeToString(GenerateRandomKey(sessionKeyLength)) +} + +func GenerateRandomKey(length int) []byte { + k := make([]byte, length) + if _, err := io.ReadFull(rand.Reader, k); err != nil { + return nil + } + return k +} + +func GenerateSession(user, password string) (string, *Session, error) { + roles, err := AllOtherRoles(user, password) + if err != nil { + return "", nil, err + } + token := GenerateSessionKey() + session := NewSession(user, password, roles) + ConnPool.Add(token, session) + return token, session, nil +}
--- a/auth/token.go Mon Jul 02 11:00:19 2018 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -package auth - -import ( - "crypto/rand" - "encoding/base64" - "io" - "time" -) - -type Session struct { - ExpiresAt int64 `json:"expires"` - User string `json:"user"` - Password string `json:"password"` - Roles []string `json:"roles"` -} - -const ( - sessionKeyLength = 20 - maxTokenValid = time.Hour * 3 -) - -func NewSession(user, password string, roles []string) *Session { - - // Create the Claims - return &Session{ - ExpiresAt: time.Now().Add(maxTokenValid).Unix(), - User: user, - Password: password, - Roles: roles, - } -} - -func GenerateSessionKey() string { - return base64.URLEncoding.EncodeToString(GenerateRandomKey(sessionKeyLength)) -} - -func GenerateRandomKey(length int) []byte { - k := make([]byte, length) - if _, err := io.ReadFull(rand.Reader, k); err != nil { - return nil - } - return k -} - -func GenerateSession(user, password string) (string, *Session, error) { - roles, err := AllOtherRoles(user, password) - if err != nil { - return "", nil, err - } - token := GenerateSessionKey() - session := NewSession(user, password, roles) - ConnPool.Add(token, session) - return token, session, nil -}