2021-08-12 21:03:24 +02:00
|
|
|
package manage
|
|
|
|
|
|
|
|
|
|
import (
|
2025-06-06 15:14:37 +02:00
|
|
|
"code.superseriousbusiness.org/oauth2/v4"
|
2021-08-12 21:03:24 +02:00
|
|
|
"net/url"
|
|
|
|
|
"strings"
|
|
|
|
|
|
2025-04-25 15:15:36 +02:00
|
|
|
"code.superseriousbusiness.org/oauth2/v4/errors"
|
2021-08-12 21:03:24 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type (
|
|
|
|
|
// ValidateURIHandler validates that redirectURI is contained in baseURI
|
2025-06-06 15:14:37 +02:00
|
|
|
ValidateURIHandler func(baseURI, redirectURI string) error
|
|
|
|
|
ExtractExtensionHandler func(*oauth2.TokenGenerateRequest, oauth2.ExtendableTokenInfo)
|
2021-08-12 21:03:24 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// DefaultValidateURI validates that redirectURI is contained in baseURI
|
|
|
|
|
func DefaultValidateURI(baseURI string, redirectURI string) error {
|
|
|
|
|
base, err := url.Parse(baseURI)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
redirect, err := url.Parse(redirectURI)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if !strings.HasSuffix(redirect.Host, base.Host) {
|
|
|
|
|
return errors.ErrInvalidRedirectURI
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|