diff --git a/web/scheduler/server/backup_controller.go b/web/scheduler/server/backup_controller.go index 0fd0e0d..3c4f3f9 100644 --- a/web/scheduler/server/backup_controller.go +++ b/web/scheduler/server/backup_controller.go @@ -46,9 +46,9 @@ func (ps *PortwardenServer) GetGoogleDriveLoginHandler(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": ErrRetrievingOauthCode}) return } - tok, err := ps.GoogleDriveAppConfig.Exchange(ps.GoogleDriveContext, gdc.Code) + tok, err := GoogleDriveAppConfig.Exchange(oauth2.NoContext, gdc.Code) if err != nil { - c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "message": ErrRetrievingOauthCode}) + c.JSON(http.StatusUnauthorized, gin.H{"error": err.Error(), "message": "Login failure"}) return } // pu := &PortwardenUser{GoogleToken: tok} diff --git a/web/scheduler/server/middleware.go b/web/scheduler/server/middleware.go index 6bc5516..e64926f 100644 --- a/web/scheduler/server/middleware.go +++ b/web/scheduler/server/middleware.go @@ -1,14 +1,20 @@ package server import ( + "fmt" "net/http" "github.com/gin-gonic/gin" "golang.org/x/oauth2" ) +const ( + GoogleOauth2TokenContextVariableName = "GoogleOauth2TokenContextVariableName" +) + func TokenAuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { + fmt.Println("middleware called") code := c.Query("code") tok, err := GoogleDriveAppConfig.Exchange(oauth2.NoContext, code) @@ -23,6 +29,8 @@ func TokenAuthMiddleware() gin.HandlerFunc { c.Abort() return } + c.Set(GoogleOauth2TokenContextVariableName, tok) + fmt.Println("middleware passed") c.Next() } } diff --git a/web/scheduler/server/server.go b/web/scheduler/server/server.go index 4edb607..2b74203 100644 --- a/web/scheduler/server/server.go +++ b/web/scheduler/server/server.go @@ -31,7 +31,7 @@ type PortwardenServer struct { func (ps *PortwardenServer) Run() { var err error ps.GoogleDriveContext = context.Background() - ps.GoogleDriveAppConfig, err = google.ConfigFromJSON(ps.GoogleDriveAppCredentials, "https://www.googleapis.com/auth/userinfo.profile", drive.DriveScope) + ps.GoogleDriveAppConfig, err = google.ConfigFromJSON(ps.GoogleDriveAppCredentials, "https://www.googleapis.com/auth/userinfo.profile", "email", drive.DriveScope) GoogleDriveAppConfig = ps.GoogleDriveAppConfig // quick hack if err != nil { log.Fatalf("Unable to parse client secret file to config: %v", err) @@ -61,7 +61,6 @@ func (ps *PortwardenServer) Run() { ps.Router.POST("/decrypt", DecryptBackupHandler) ps.Router.GET("/gdrive/loginUrl", ps.GetGoogleDriveLoginURLHandler) - ps.Router.Use(TokenAuthMiddleware()) ps.Router.GET("/gdrive/login", ps.GetGoogleDriveLoginHandler) ps.Router.Run(":" + strconv.Itoa(ps.Port))