mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2024-12-22 10:43:12 +00:00
31 lines
635 B
Go
31 lines
635 B
Go
|
package manage
|
||
|
|
||
|
import (
|
||
|
"net/url"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/superseriousbusiness/oauth2/v4/errors"
|
||
|
)
|
||
|
|
||
|
type (
|
||
|
// ValidateURIHandler validates that redirectURI is contained in baseURI
|
||
|
ValidateURIHandler func(baseURI, redirectURI string) error
|
||
|
)
|
||
|
|
||
|
// 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
|
||
|
}
|