Validate Slack OAuth2 token response

Check the ok and error fields from Slack's token
response and reject flows with a missing access token.

Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
This commit is contained in:
Aurélien Sibiril
2026-04-10 10:13:21 +02:00
parent a95e2f49c2
commit c7ec1bcab3
2 changed files with 36 additions and 0 deletions

View File

@@ -44,6 +44,8 @@ type (
}
SlackTokenResponse struct {
Ok bool `json:"ok"`
Error string `json:"error,omitempty"`
IncomingWebhook *IncomingWebhook `json:"incoming_webhook,omitempty"`
}
)
@@ -115,6 +117,16 @@ func ParseSlackTokenResponse(body []byte, oauth2Conn OAuth2Connection, organizat
return nil, nil, fmt.Errorf("cannot decode Slack token response: %w", err)
}
if slackResponse.Error != "" {
return nil, nil, fmt.Errorf("cannot complete Slack OAuth2 flow: %s", slackResponse.Error)
}
if !slackResponse.Ok {
return nil, nil, fmt.Errorf("cannot complete Slack OAuth2 flow: ok=false")
}
if oauth2Conn.AccessToken == "" {
return nil, nil, fmt.Errorf("cannot complete Slack OAuth2 flow: missing access token")
}
settings := SlackSettings{}
if slackResponse.IncomingWebhook != nil {
settings.WebhookURL = slackResponse.IncomingWebhook.URL