Merge pull request #1910 from thebtf/fix/gemini-oauth-error-messages
fix: surface upstream error details in Gemini CLI OAuth onboarding UI
This commit is contained in:
@@ -1306,12 +1306,12 @@ func (h *Handler) RequestGeminiCLIToken(c *gin.Context) {
|
|||||||
projects, errAll := onboardAllGeminiProjects(ctx, gemClient, &ts)
|
projects, errAll := onboardAllGeminiProjects(ctx, gemClient, &ts)
|
||||||
if errAll != nil {
|
if errAll != nil {
|
||||||
log.Errorf("Failed to complete Gemini CLI onboarding: %v", errAll)
|
log.Errorf("Failed to complete Gemini CLI onboarding: %v", errAll)
|
||||||
SetOAuthSessionError(state, "Failed to complete Gemini CLI onboarding")
|
SetOAuthSessionError(state, fmt.Sprintf("Failed to complete Gemini CLI onboarding: %v", errAll))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if errVerify := ensureGeminiProjectsEnabled(ctx, gemClient, projects); errVerify != nil {
|
if errVerify := ensureGeminiProjectsEnabled(ctx, gemClient, projects); errVerify != nil {
|
||||||
log.Errorf("Failed to verify Cloud AI API status: %v", errVerify)
|
log.Errorf("Failed to verify Cloud AI API status: %v", errVerify)
|
||||||
SetOAuthSessionError(state, "Failed to verify Cloud AI API status")
|
SetOAuthSessionError(state, fmt.Sprintf("Failed to verify Cloud AI API status: %v", errVerify))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ts.ProjectID = strings.Join(projects, ",")
|
ts.ProjectID = strings.Join(projects, ",")
|
||||||
@@ -1320,7 +1320,7 @@ func (h *Handler) RequestGeminiCLIToken(c *gin.Context) {
|
|||||||
ts.Auto = false
|
ts.Auto = false
|
||||||
if errSetup := performGeminiCLISetup(ctx, gemClient, &ts, ""); errSetup != nil {
|
if errSetup := performGeminiCLISetup(ctx, gemClient, &ts, ""); errSetup != nil {
|
||||||
log.Errorf("Google One auto-discovery failed: %v", errSetup)
|
log.Errorf("Google One auto-discovery failed: %v", errSetup)
|
||||||
SetOAuthSessionError(state, "Google One auto-discovery failed")
|
SetOAuthSessionError(state, fmt.Sprintf("Google One auto-discovery failed: %v", errSetup))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if strings.TrimSpace(ts.ProjectID) == "" {
|
if strings.TrimSpace(ts.ProjectID) == "" {
|
||||||
@@ -1331,19 +1331,19 @@ func (h *Handler) RequestGeminiCLIToken(c *gin.Context) {
|
|||||||
isChecked, errCheck := checkCloudAPIIsEnabled(ctx, gemClient, ts.ProjectID)
|
isChecked, errCheck := checkCloudAPIIsEnabled(ctx, gemClient, ts.ProjectID)
|
||||||
if errCheck != nil {
|
if errCheck != nil {
|
||||||
log.Errorf("Failed to verify Cloud AI API status: %v", errCheck)
|
log.Errorf("Failed to verify Cloud AI API status: %v", errCheck)
|
||||||
SetOAuthSessionError(state, "Failed to verify Cloud AI API status")
|
SetOAuthSessionError(state, fmt.Sprintf("Failed to verify Cloud AI API status: %v", errCheck))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ts.Checked = isChecked
|
ts.Checked = isChecked
|
||||||
if !isChecked {
|
if !isChecked {
|
||||||
log.Error("Cloud AI API is not enabled for the auto-discovered project")
|
log.Error("Cloud AI API is not enabled for the auto-discovered project")
|
||||||
SetOAuthSessionError(state, "Cloud AI API not enabled")
|
SetOAuthSessionError(state, fmt.Sprintf("Cloud AI API not enabled for project %s", ts.ProjectID))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if errEnsure := ensureGeminiProjectAndOnboard(ctx, gemClient, &ts, requestedProjectID); errEnsure != nil {
|
if errEnsure := ensureGeminiProjectAndOnboard(ctx, gemClient, &ts, requestedProjectID); errEnsure != nil {
|
||||||
log.Errorf("Failed to complete Gemini CLI onboarding: %v", errEnsure)
|
log.Errorf("Failed to complete Gemini CLI onboarding: %v", errEnsure)
|
||||||
SetOAuthSessionError(state, "Failed to complete Gemini CLI onboarding")
|
SetOAuthSessionError(state, fmt.Sprintf("Failed to complete Gemini CLI onboarding: %v", errEnsure))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1356,13 +1356,13 @@ func (h *Handler) RequestGeminiCLIToken(c *gin.Context) {
|
|||||||
isChecked, errCheck := checkCloudAPIIsEnabled(ctx, gemClient, ts.ProjectID)
|
isChecked, errCheck := checkCloudAPIIsEnabled(ctx, gemClient, ts.ProjectID)
|
||||||
if errCheck != nil {
|
if errCheck != nil {
|
||||||
log.Errorf("Failed to verify Cloud AI API status: %v", errCheck)
|
log.Errorf("Failed to verify Cloud AI API status: %v", errCheck)
|
||||||
SetOAuthSessionError(state, "Failed to verify Cloud AI API status")
|
SetOAuthSessionError(state, fmt.Sprintf("Failed to verify Cloud AI API status: %v", errCheck))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ts.Checked = isChecked
|
ts.Checked = isChecked
|
||||||
if !isChecked {
|
if !isChecked {
|
||||||
log.Error("Cloud AI API is not enabled for the selected project")
|
log.Error("Cloud AI API is not enabled for the selected project")
|
||||||
SetOAuthSessionError(state, "Cloud AI API not enabled")
|
SetOAuthSessionError(state, fmt.Sprintf("Cloud AI API not enabled for project %s", ts.ProjectID))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user