Add apikey

This commit is contained in:
alikhanich 2023-03-17 09:22:01 +03:00
parent aadf099f50
commit 73cd5ae94d
5 changed files with 50 additions and 9 deletions

View file

@ -47,11 +47,31 @@ func (t *TemplateRegistry) Render(w io.Writer, name string, data interface{}, c
return tmpl.ExecuteTemplate(w, "base.html", data)
}
func apiKeyMiddleware(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
apiKey := c.Request().Header.Get("X-API-Key")
if apiKey == "" {
apiKey = c.QueryParam("api_key")
}
sess, err := session.Get("session", c)
if err != nil {
return err
}
sess.Values["api_key"] = apiKey
err = sess.Save(c.Request(), c.Response())
if err != nil {
return err
}
return next(c)
}
}
// New function
func New(tmplBox *rice.Box, extraData map[string]string, secret []byte) *echo.Echo {
e := echo.New()
e.Use(session.Middleware(sessions.NewCookieStore(secret)))
store := sessions.NewCookieStore(secret)
e.Use(session.Middleware(store))
e.Use(apiKeyMiddleware)
// read html template file to string
tmplBaseString, err := tmplBox.String("base.html")
if err != nil {