add header filter
This commit is contained in:
6
main.go
6
main.go
@@ -23,14 +23,18 @@ func main() {
|
||||
|
||||
// Middleware
|
||||
e.Use(middleware.Logger())
|
||||
e.Use(mw.FilterHeaders)
|
||||
e.Use(mw.TokenFromCookies)
|
||||
e.Use(mw.JWT_MW)
|
||||
|
||||
// Routes
|
||||
e.GET("/*", checkAuth)
|
||||
e.POST("/auth/login", users.Login)
|
||||
e.GET("/health", handler.Health)
|
||||
|
||||
// Users
|
||||
e.POST("/auth/login", users.Login)
|
||||
e.GET("/users/me", users.GetCurrentUser)
|
||||
|
||||
e.Logger.Fatal(e.Start(":" + config.Env.Server.Port))
|
||||
}
|
||||
|
||||
|
||||
17
mw/filter_headers.go
Normal file
17
mw/filter_headers.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package mw
|
||||
|
||||
import (
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
var NOT_ALLOWED_HEADERS = [2]string{"UserId", "Authorization"}
|
||||
|
||||
func FilterHeaders(next echo.HandlerFunc) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
for _, header := range NOT_ALLOWED_HEADERS {
|
||||
c.Request().Header.Set(header, "")
|
||||
}
|
||||
|
||||
return next(c)
|
||||
}
|
||||
}
|
||||
@@ -2,22 +2,16 @@ package mw
|
||||
|
||||
import (
|
||||
"github.com/labstack/echo/v4"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func TokenFromCookies(next echo.HandlerFunc) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
var token, err = c.Request().Cookie("accessToken")
|
||||
var authToken = c.Request().Header.Get("Authorization")
|
||||
|
||||
if err != nil {
|
||||
return next(c)
|
||||
}
|
||||
|
||||
if authToken != "" {
|
||||
return c.NoContent(http.StatusBadRequest)
|
||||
}
|
||||
|
||||
c.Request().Header.Set("Authorization", "Bearer "+token.Value)
|
||||
|
||||
return next(c)
|
||||
|
||||
@@ -7,15 +7,39 @@ import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func PostRequest(url string, model any) ([]byte, error) {
|
||||
func PostRequest(url string, model any, header http.Header) ([]byte, error) {
|
||||
uJson, err := json.Marshal(model)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := http.Post(url,
|
||||
"application/json", bytes.NewReader(uJson))
|
||||
client := http.Client{}
|
||||
req, err := http.NewRequest("POST", url, bytes.NewReader(uJson))
|
||||
req.Header = header
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
|
||||
resp, err := client.Do(req)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
data, err := io.ReadAll(resp.Body)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func GetRequest(url string, header http.Header) ([]byte, error) {
|
||||
client := http.Client{}
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
req.Header = header
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
resp, err := client.Do(req)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -19,7 +19,7 @@ func Login(c echo.Context) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
data, err := api.PostRequest(config.Env.MSHosts.UsersHost+"/login", u)
|
||||
data, err := api.PostRequest(config.Env.MSHosts.UsersHost+"/login", u, c.Request().Header)
|
||||
|
||||
u.Password = ""
|
||||
|
||||
@@ -53,3 +53,17 @@ func Login(c echo.Context) (err error) {
|
||||
|
||||
return c.JSON(http.StatusOK, u)
|
||||
}
|
||||
|
||||
func GetCurrentUser(c echo.Context) error {
|
||||
u := new(model.User)
|
||||
|
||||
data, err := api.GetRequest(config.Env.MSHosts.UsersHost+"/me", c.Request().Header)
|
||||
|
||||
err = json.Unmarshal(data, &u)
|
||||
|
||||
if err != nil {
|
||||
return c.NoContent(http.StatusBadGateway)
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusOK, u)
|
||||
}
|
||||
Reference in New Issue
Block a user