-
Notifications
You must be signed in to change notification settings - Fork 4
/
dash_middlewares.go
77 lines (68 loc) · 1.69 KB
/
dash_middlewares.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 korm
import (
"net/http"
"github.com/kamalshkeir/aes"
"github.com/kamalshkeir/ksmux"
)
var (
BASIC_AUTH_USER = "notset"
BASIC_AUTH_PASS = "testnotsetbutwaititshouldbeset"
)
var Auth = func(handler ksmux.Handler) ksmux.Handler {
return func(c *ksmux.Context) {
session, err := c.GetCookie("session")
if err != nil || session == "" {
// NOT AUTHENTICATED
c.DeleteCookie("session")
handler(c)
return
}
session, err = aes.Decrypt(session)
if err != nil {
handler(c)
return
}
// Check session
user, err := Model[User]().Where("uuid = ?", session).One()
if err != nil {
// session fail
handler(c)
return
}
// AUTHENTICATED AND FOUND IN DB
c.SetKey("korm-user", user)
handler(c)
}
}
var Admin = func(handler ksmux.Handler) ksmux.Handler {
return func(c *ksmux.Context) {
session, err := c.GetCookie("session")
if err != nil || session == "" {
// NOT AUTHENTICATED
c.DeleteCookie("session")
c.Status(http.StatusTemporaryRedirect).Redirect(adminPathNameGroup + "/login")
return
}
session, err = aes.Decrypt(session)
if err != nil {
c.Status(http.StatusTemporaryRedirect).Redirect(adminPathNameGroup + "/login")
return
}
user, err := Model[User]().Where("uuid = ?", session).One()
if err != nil {
// AUTHENTICATED BUT NOT FOUND IN DB
c.Status(http.StatusTemporaryRedirect).Redirect(adminPathNameGroup + "/login")
return
}
// Not admin
if !user.IsAdmin {
c.Status(403).Text("Middleware : Not allowed to access this page")
return
}
c.SetKey("korm-user", user)
handler(c)
}
}
var BasicAuth = func(handler ksmux.Handler) ksmux.Handler {
return ksmux.BasicAuth(handler, BASIC_AUTH_USER, BASIC_AUTH_PASS)
}