Skip to content

Commit 15d38c2

Browse files
committed
improve security middleware
1 parent 9be0a76 commit 15d38c2

File tree

4 files changed

+12
-3
lines changed

4 files changed

+12
-3
lines changed

configs/struct.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ type (
44
User struct {
55
Id string
66
Email string
7-
Role string
7+
Role int
88
}
99

1010
Env struct {
@@ -34,6 +34,7 @@ type (
3434
HeaderUserId string
3535
HeaderUserEmail string
3636
HeaderUserRole string
37+
MaximumRole int
3738
CacheLifetime int
3839
User *User
3940
TemplateLocation string

dics/core.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ var Core = []dingo.Def{
120120
env.HeaderUserId = os.Getenv("HEADER_USER_ID")
121121
env.HeaderUserEmail = os.Getenv("HEADER_USER_EMAIL")
122122
env.HeaderUserRole = os.Getenv("HEADER_USER_ROLE")
123+
env.MaximumRole, _ = strconv.Atoi(os.Getenv("MAXIMUM_ROLE"))
123124

124125
env.CacheLifetime, _ = strconv.Atoi(os.Getenv("CACHE_LIFETIME"))
125126

middlewares.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
middlewares:
2-
- core:middleware:auth
2+
# - core:middleware:auth

middlewares/auth.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package middlewares
22

33
import (
44
"net/http"
5+
"strconv"
56

67
configs "github.com/crowdeco/skeleton/configs"
78
)
@@ -13,7 +14,13 @@ type Auth struct {
1314
func (a *Auth) Attach(request *http.Request, response http.ResponseWriter) bool {
1415
a.Env.User.Id = request.Header.Get(a.Env.HeaderUserId)
1516
a.Env.User.Email = request.Header.Get(a.Env.HeaderUserEmail)
16-
a.Env.User.Role = request.Header.Get(a.Env.HeaderUserRole)
17+
a.Env.User.Role, _ = strconv.Atoi(request.Header.Get(a.Env.HeaderUserRole))
18+
19+
if a.Env.User.Role == 0 || a.Env.User.Role > a.Env.MaximumRole {
20+
http.Error(response, "Unauthorization", http.StatusUnauthorized)
21+
22+
return true
23+
}
1724

1825
return false
1926
}

0 commit comments

Comments
 (0)