func setup() *gin.Engine { runtime.GOMAXPROCS(runtime.NumCPU()) if _, err := database.InitDb(); err != nil { panic(err) } app := gin.New() app.Use(func(c *gin.Context) { c.Set(config.SecretKey, config.GetSecret()) c.Next() }) if config.GetEnv() == config.EnvProduction { app.Use(middleware.Recovery()) } else { app.Use(gin.Recovery()) } if config.GetEnv() == config.EnvTesting { gin.SetMode(gin.TestMode) } else { app.Use(gin.Logger()) } app.Use(middleware.ErrorHandler()) //Set up api v1 routeV1(app) return app }
func (a *authMiddleware) RequireLogin() gin.HandlerFunc { return func(c *gin.Context) { token, err := jwt_lib.ParseFromRequest(c.Request, func(token *jwt_lib.Token) (interface{}, error) { b := ([]byte(config.GetSecret())) return b, nil }) if err != nil || token == nil || (token != nil && !token.Valid) { c.Error(apiErrors.ThrowError(apiErrors.AccessDenied)) c.Abort() return } var currentUser *models.User var findUserErr error if userId, ok := token.Claims["userId"].(string); ok { if currentUser, findUserErr = userResource.GetById(userId); findUserErr != nil { c.Error(findUserErr) c.Abort() return } } else { panic("Must load userId in token") } c.Set("currentUser", currentUser) c.Next() } }