diff options
author | 2021-08-12 21:03:24 +0200 | |
---|---|---|
committer | 2021-08-12 21:03:24 +0200 | |
commit | 98263a7de64269898a2f81207e38943b5c8e8653 (patch) | |
tree | 743c90f109a6c5d27832d1dcef2388d939f0f77a /vendor/github.com/superseriousbusiness/oauth2/v4/server/handler.go | |
parent | Text duplication fix (#137) (diff) | |
download | gotosocial-98263a7de64269898a2f81207e38943b5c8e8653.tar.xz |
Grand test fixup (#138)
* start fixing up tests
* fix up tests + automate with drone
* fiddle with linting
* messing about with drone.yml
* some more fiddling
* hmmm
* add cache
* add vendor directory
* verbose
* ci updates
* update some little things
* update sig
Diffstat (limited to 'vendor/github.com/superseriousbusiness/oauth2/v4/server/handler.go')
-rw-r--r-- | vendor/github.com/superseriousbusiness/oauth2/v4/server/handler.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/vendor/github.com/superseriousbusiness/oauth2/v4/server/handler.go b/vendor/github.com/superseriousbusiness/oauth2/v4/server/handler.go new file mode 100644 index 000000000..5a34f1a94 --- /dev/null +++ b/vendor/github.com/superseriousbusiness/oauth2/v4/server/handler.go @@ -0,0 +1,66 @@ +package server + +import ( + "net/http" + "time" + + "github.com/superseriousbusiness/oauth2/v4" + "github.com/superseriousbusiness/oauth2/v4/errors" +) + +type ( + // ClientInfoHandler get client info from request + ClientInfoHandler func(r *http.Request) (clientID, clientSecret string, err error) + + // ClientAuthorizedHandler check the client allows to use this authorization grant type + ClientAuthorizedHandler func(clientID string, grant oauth2.GrantType) (allowed bool, err error) + + // ClientScopeHandler check the client allows to use scope + ClientScopeHandler func(clientID, scope string) (allowed bool, err error) + + // UserAuthorizationHandler get user id from request authorization + UserAuthorizationHandler func(w http.ResponseWriter, r *http.Request) (userID string, err error) + + // PasswordAuthorizationHandler get user id from username and password + PasswordAuthorizationHandler func(username, password string) (userID string, err error) + + // RefreshingScopeHandler check the scope of the refreshing token + RefreshingScopeHandler func(newScope, oldScope string) (allowed bool, err error) + + //RefreshingValidationHandler check if refresh_token is still valid. eg no revocation or other + RefreshingValidationHandler func(ti oauth2.TokenInfo) (allowed bool, err error) + + // ResponseErrorHandler response error handing + ResponseErrorHandler func(re *errors.Response) + + // InternalErrorHandler internal error handing + InternalErrorHandler func(err error) (re *errors.Response) + + // AuthorizeScopeHandler set the authorized scope + AuthorizeScopeHandler func(w http.ResponseWriter, r *http.Request) (scope string, err error) + + // AccessTokenExpHandler set expiration date for the access token + AccessTokenExpHandler func(w http.ResponseWriter, r *http.Request) (exp time.Duration, err error) + + // ExtensionFieldsHandler in response to the access token with the extension of the field + ExtensionFieldsHandler func(ti oauth2.TokenInfo) (fieldsValue map[string]interface{}) +) + +// ClientFormHandler get client data from form +func ClientFormHandler(r *http.Request) (string, string, error) { + clientID := r.Form.Get("client_id") + if clientID == "" { + return "", "", errors.ErrInvalidClient + } + clientSecret := r.Form.Get("client_secret") + return clientID, clientSecret, nil +} + +// ClientBasicHandler get client data from basic authorization +func ClientBasicHandler(r *http.Request) (string, string, error) { + username, password, ok := r.BasicAuth() + if !ok { + return "", "", errors.ErrInvalidClient + } + return username, password, nil +} |