| 
					
				 | 
			
			
				@@ -30,9 +30,18 @@ type PathPattern struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	signingKey    = []byte("secret") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	store         = sessions.NewCookieStore([]byte("something-very-secret")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	jwtMiddleware = jwtmiddleware.New(jwtmiddleware.Options{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	signingKey = []byte("secret") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	store      = sessions.NewCookieStore([]byte("something-very-secret")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	jwtCookie  = jwtmiddleware.New(jwtmiddleware.Options{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return signingKey, nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SigningMethod: jwt.SigningMethodHS256, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Extractor:     fromCookie, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ErrorHandler:  onError, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	jwtHeader = jwtmiddleware.New(jwtmiddleware.Options{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			return signingKey, nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,7 +70,12 @@ var ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Generate CRUD handlers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func generateHandler(r *mux.Router, base string) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	for _, pattern := range patterns { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		r.Handle(fmt.Sprintf(pattern.Path, base), jwtMiddleware.Handler(recoverHandler(modelHandler(base, fmt.Sprintf(pattern.Path, base), pattern.RedirectPath)))).Methods(pattern.Methods...) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		r.Handle( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			fmt.Sprintf(pattern.Path, base), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			jwtCookie.Handler(recoverHandler(modelHandler( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				base, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fmt.Sprintf(pattern.Path, base), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				pattern.RedirectPath)))).Methods(pattern.Methods...) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -81,7 +95,7 @@ func Handlers() *mux.Router { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// Dashboard 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	r.Handle("/", jwtMiddleware.Handler(recoverHandler(dashboardHandler()))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	r.Handle("/", jwtCookie.Handler(recoverHandler(dashboardHandler()))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// Generate model handlers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |