| 
					
				 | 
			
			
				@@ -2,7 +2,7 @@ package api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"errors" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	"log" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"fmt" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"net/http" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"net/url" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	"time" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -55,8 +55,7 @@ func loginHandler() http.Handler { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return http.HandlerFunc(fn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func queryDB(username string, password string) (*User, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	log.Println(username, config.Config.Admin.Username, password, config.Config.Admin.Password) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func checkCredential(username string, password string) (*User, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if username == config.Config.Admin.Username && password == config.Config.Admin.Password { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return &User{username, true}, nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -64,7 +63,8 @@ func queryDB(username string, password string) (*User, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func getToken(username string, password string) ([]byte, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	user, err := queryDB(username, password) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	user, err := checkCredential(username, password) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return nil, err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -86,3 +86,33 @@ func getToken(username string, password string) ([]byte, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return []byte(tokenString), nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func getTokenHandler() http.Handler { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	fn := func(w http.ResponseWriter, r *http.Request) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		username, password, _ := r.BasicAuth() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		user, err := checkCredential(username, password) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			panic(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		/* Set token claims */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		claims := make(map[string]interface{}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		claims["admin"] = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		claims["name"] = user.Name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		claims["exp"] = time.Now().Add(time.Hour * 24).Unix() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		/* Create the token */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims(claims)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		/* Sign the token with our secret */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tokenString, err := token.SignedString(signingKey) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			panic(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		w.Header().Set("Content-Type", "application/json; charset=utf-8") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		w.Write([]byte(fmt.Sprintf("{\"Token\":\"%s\",\"User\":\"%s\"}", tokenString, user.Name))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return http.HandlerFunc(fn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |