-
Notifications
You must be signed in to change notification settings - Fork 1
/
Sessions.go
83 lines (62 loc) · 1.52 KB
/
Sessions.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
package controllers
import (
"encoding/gob"
"go_framework/app/models/entities"
"os"
"github.com/gorilla/sessions"
"github.com/labstack/echo"
)
var store *sessions.CookieStore
func init() {
store = sessions.NewCookieStore([]byte("super-secret-key"))
// authKeyOne := securecookie.GenerateRandomKey(64)
// encryptionKeyOne := securecookie.GenerateRandomKey(32)
// store = sessions.NewCookieStore(
// authKeyOne,
// encryptionKeyOne,
// )
store.Options = &sessions.Options{
Path: "/",
MaxAge: 60 * 15,
HttpOnly: true,
}
gob.Register(entities.UserEntity{})
}
func AuthGetUser(c echo.Context) entities.UserEntity {
session, err := store.Get(c.Request(), os.Getenv("LOGIN_SESSION_ID"))
if err != nil {
return entities.UserEntity{}
}
val := session.Values["user"]
var user = entities.UserEntity{}
user, ok := val.(entities.UserEntity)
if !ok {
return entities.UserEntity{}
}
return user
}
func AuthLogin(c echo.Context, user entities.UserEntity) error {
session, err := store.Get(c.Request(), os.Getenv("LOGIN_SESSION_ID"))
if err != nil {
return err
}
session.Values["user"] = user
err = session.Save(c.Request(), c.Response())
if err != nil {
return err
}
return nil
}
func AuthLogout(c echo.Context) error {
session, err := store.Get(c.Request(), os.Getenv("LOGIN_SESSION_ID"))
if err != nil {
return err
}
session.Values["user"] = entities.UserEntity{}
session.Options.MaxAge = -1
err = session.Save(c.Request(), c.Response())
if err != nil {
return err
}
return nil
}