summaryrefslogtreecommitdiff
path: root/vendor/code.superseriousbusiness.org/oauth2/v4/server/handler.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/code.superseriousbusiness.org/oauth2/v4/server/handler.go')
-rw-r--r--vendor/code.superseriousbusiness.org/oauth2/v4/server/handler.go57
1 files changed, 56 insertions, 1 deletions
diff --git a/vendor/code.superseriousbusiness.org/oauth2/v4/server/handler.go b/vendor/code.superseriousbusiness.org/oauth2/v4/server/handler.go
index 745716dc5..808b476d8 100644
--- a/vendor/code.superseriousbusiness.org/oauth2/v4/server/handler.go
+++ b/vendor/code.superseriousbusiness.org/oauth2/v4/server/handler.go
@@ -1,7 +1,9 @@
package server
import (
+ "context"
"net/http"
+ "strings"
"time"
"code.superseriousbusiness.org/oauth2/v4"
@@ -22,7 +24,7 @@ type (
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)
+ PasswordAuthorizationHandler func(ctx context.Context, clientID, username, password string) (userID string, err error)
// RefreshingScopeHandler check the scope of the refreshing token
RefreshingScopeHandler func(tgr *oauth2.TokenGenerateRequest, oldScope string) (allowed bool, err error)
@@ -36,6 +38,9 @@ type (
// InternalErrorHandler internal error handing
InternalErrorHandler func(err error) (re *errors.Response)
+ // PreRedirectErrorHandler is used to override "redirect-on-error" behavior
+ PreRedirectErrorHandler func(w http.ResponseWriter, req *AuthorizeRequest, err error) error
+
// AuthorizeScopeHandler set the authorized scope
AuthorizeScopeHandler func(w http.ResponseWriter, r *http.Request) (scope string, err error)
@@ -44,6 +49,15 @@ type (
// ExtensionFieldsHandler in response to the access token with the extension of the field
ExtensionFieldsHandler func(ti oauth2.TokenInfo) (fieldsValue map[string]interface{})
+
+ // ResponseTokenHandler response token handling
+ ResponseTokenHandler func(w http.ResponseWriter, data map[string]interface{}, header http.Header, statusCode ...int) error
+
+ // Handler to fetch the refresh token from the request
+ RefreshTokenResolveHandler func(r *http.Request) (string, error)
+
+ // Handler to fetch the access token from the request
+ AccessTokenResolveHandler func(r *http.Request) (string, bool)
)
// ClientFormHandler get client data from form
@@ -64,3 +78,44 @@ func ClientBasicHandler(r *http.Request) (string, string, error) {
}
return username, password, nil
}
+
+func RefreshTokenFormResolveHandler(r *http.Request) (string, error) {
+ rt := r.FormValue("refresh_token")
+ if rt == "" {
+ return "", errors.ErrInvalidRequest
+ }
+
+ return rt, nil
+}
+
+func RefreshTokenCookieResolveHandler(r *http.Request) (string, error) {
+ c, err := r.Cookie("refresh_token")
+ if err != nil {
+ return "", errors.ErrInvalidRequest
+ }
+
+ return c.Value, nil
+}
+
+func AccessTokenDefaultResolveHandler(r *http.Request) (string, bool) {
+ token := ""
+ auth := r.Header.Get("Authorization")
+ prefix := "Bearer "
+
+ if auth != "" && strings.HasPrefix(auth, prefix) {
+ token = auth[len(prefix):]
+ } else {
+ token = r.FormValue("access_token")
+ }
+
+ return token, token != ""
+}
+
+func AccessTokenCookieResolveHandler(r *http.Request) (string, bool) {
+ c, err := r.Cookie("access_token")
+ if err != nil {
+ return "", false
+ }
+
+ return c.Value, true
+}