diff --git a/server/handler.go b/server/handler.go index e27939b..ad2cc18 100755 --- a/server/handler.go +++ b/server/handler.go @@ -44,6 +44,9 @@ 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 handing + ResponseTokenHandler func(w http.ResponseWriter, data map[string]interface{}, header http.Header, statusCode ...int) error ) // ClientFormHandler get client data from form diff --git a/server/server.go b/server/server.go index 643ab30..c52a51a 100755 --- a/server/server.go +++ b/server/server.go @@ -54,6 +54,7 @@ type Server struct { ExtensionFieldsHandler ExtensionFieldsHandler AccessTokenExpHandler AccessTokenExpHandler AuthorizeScopeHandler AuthorizeScopeHandler + ResponseTokenHandler ResponseTokenHandler } func (s *Server) redirectError(w http.ResponseWriter, req *AuthorizeRequest, err error) error { @@ -81,6 +82,9 @@ func (s *Server) tokenError(w http.ResponseWriter, err error) error { } func (s *Server) token(w http.ResponseWriter, data map[string]interface{}, header http.Header, statusCode ...int) error { + if fn := s.ResponseTokenHandler; fn != nil { + return fn(w, data, header, statusCode...) + } w.Header().Set("Content-Type", "application/json;charset=UTF-8") w.Header().Set("Cache-Control", "no-store") w.Header().Set("Pragma", "no-cache") diff --git a/server/server_config.go b/server/server_config.go index e0d7d1d..934c543 100644 --- a/server/server_config.go +++ b/server/server_config.go @@ -84,3 +84,8 @@ func (s *Server) SetAccessTokenExpHandler(handler AccessTokenExpHandler) { func (s *Server) SetAuthorizeScopeHandler(handler AuthorizeScopeHandler) { s.AuthorizeScopeHandler = handler } + +// SetResponseTokenHandler response token handing +func (s *Server) SetResponseTokenHandler(handler ResponseTokenHandler) { + s.ResponseTokenHandler = handler +} \ No newline at end of file