summaryrefslogtreecommitdiff
path: root/vendor/github.com/superseriousbusiness/oauth2/v4/server/handler.go
diff options
context:
space:
mode:
authorLibravatar Tobi Smethurst <31960611+tsmethurst@users.noreply.github.com>2021-08-12 21:03:24 +0200
committerLibravatar GitHub <noreply@github.com>2021-08-12 21:03:24 +0200
commit98263a7de64269898a2f81207e38943b5c8e8653 (patch)
tree743c90f109a6c5d27832d1dcef2388d939f0f77a /vendor/github.com/superseriousbusiness/oauth2/v4/server/handler.go
parentText duplication fix (#137) (diff)
downloadgotosocial-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.go66
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
+}