예제 #1
0
파일: jwt.go 프로젝트: webx-top/webx
func (j *JWT) Validate() echo.MiddlewareFunc {
	return echo.MiddlewareFunc(func(h echo.Handler) echo.Handler {
		return echo.HandlerFunc(func(c echo.Context) error {
			if j.CondFn != nil && j.CondFn(c) == false {
				return h.Handle(c)
			}
			/*//Test
			tokenString, err := j.Response(map[string]interface{}{"uid": "1", "username": "******"})
			if err == nil {
				println("jwt token:", tokenString)
			}
			//*/
			token, err := ParseFromRequest(c.Request(), func(token *jwt.Token) (interface{}, error) {
				b := ([]byte(j.Secret))
				return b, nil
			})
			if err != nil {
				return err
			}
			if !token.Valid {
				return errors.New(`Incorrect signature.`)
			}
			c.Set(`webx:jwtClaims`, token.Claims)
			return h.Handle(c)
		})
	})
}
예제 #2
0
파일: server.go 프로젝트: webx-top/webx
func webxHeader() echo.MiddlewareFunc {
	return echo.MiddlewareFunc(func(h echo.Handler) echo.Handler {
		return echo.HandlerFunc(func(c echo.Context) error {
			c.Response().Header().Set(`Server`, `webx v`+VERSION)
			return h.Handle(c)
		})
	})
}
예제 #3
0
파일: session.go 프로젝트: webx-top/webx
func Sessions(name string, store ss.Store) echo.MiddlewareFunc {
	return echo.MiddlewareFunc(func(h echo.Handler) echo.Handler {
		return echo.HandlerFunc(func(ctx echo.Context) error {
			c := X.X(ctx)
			s := ss.NewMySession(store, name, ctx)
			if se, ok := interface{}(c).(Sessionser); ok {
				se.InitSession(s)
			}
			err := h.Handle(c)
			s.Save()
			return err
		})
	})
}
예제 #4
0
파일: language.go 프로젝트: webx-top/webx
func (a *Language) Middleware() echo.MiddlewareFunc {
	return echo.MiddlewareFunc(func(h echo.Handler) echo.Handler {
		return echo.HandlerFunc(func(c echo.Context) error {
			lang := a.DetectURI(c.Response(), c.Request())
			c.SetFunc("Lang", func() string {
				return lang
			})
			c.SetFunc("T", func(key string, args ...interface{}) string {
				return i18n.T(lang, key, args...)
			})
			X.X(c).Language = lang
			return h.Handle(c)
		})
	})
}
예제 #5
0
파일: config.go 프로젝트: webx-top/webx
func (c *Config) Middleware() echo.MiddlewareFunc {
	return echo.MiddlewareFunc(func(h echo.Handler) echo.Handler {
		return echo.HandlerFunc(func(ctx echo.Context) error {
			if c.Read(ctx) {
				return nil
			}
			if err := h.Handle(ctx); err != nil {
				return err
			}
			if X.X(ctx).Exit {
				return nil
			}
			c.Write(ctx.Response().Body(), ctx)
			return nil
		})
	})
}
예제 #6
0
파일: xsrf.go 프로젝트: webx-top/webx
func (c *Xsrf) Middleware() echo.MiddlewareFunc {
	return echo.MiddlewareFunc(func(h echo.Handler) echo.Handler {
		return echo.HandlerFunc(func(ctx echo.Context) error {
			if !c.On {
				return h.Handle(ctx)
			}
			if ignore, _ := ctx.Get(`webx:ignoreXsrf`).(bool); ignore {
				return h.Handle(ctx)
			}
			c.Register(ctx)
			val := c.Value(ctx)
			if ctx.Request().Method() == `POST` {
				formVal := ctx.Form(c.FieldName)
				if formVal == "" || val != formVal {
					return errors.New("xsrf token error.")
				}
			}
			return h.Handle(ctx)
		})
	})
}