/
session.go
69 lines (59 loc) · 1.36 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
package main
import (
"time"
"github.com/twinj/uuid"
)
type Session struct {
Key string
UserID uint
UserName string
LastAccessed time.Time
// DeletedAt time.Time
}
var sessStore = make(map[string]Session)
// Register : method will create new session id and store session values in map, it will return session tokey
func (sess *Session) Register() string {
//uuidStr := uuid.NewV4().String()
// uuidStr1 := uuid.UnmarshalText(uuidStr)
uuidStr := sess.Save()
sessStore[uuidStr] = Session{
Key: uuidStr,
UserID: sess.UserID,
UserName: sess.UserName,
LastAccessed: time.Now(),
}
return uuidStr
}
func (sess *Session) Get() bool {
if val, ok := sessStore[sess.Key]; ok {
sess.UserID = val.UserID
sess.UserName = val.UserName
sessStore[sess.Key] = Session{
Key: sess.Key,
UserID: sess.UserID,
UserName: sess.UserName,
LastAccessed: time.Now(),
}
return true
}
return false
}
func (sess *Session) Save() string {
sess.Key = uuid.NewV4().String()
session := Session{
Key: sess.Key,
UserID: sess.UserID,
UserName: sess.UserName,
LastAccessed: time.Now(),
}
db.Create(&session)
return sess.Key
}
//Destroy : method will destroy session
func (sess *Session) Destroy() bool {
if sess.Key == "" {
return false
}
delete(sessStore, sess.Key)
return true
}