@@ -121,26 +121,6 @@ func (s *Server) GetRedirectURI(req *AuthorizeRequest, data map[string]interface
121121 return
122122}
123123
124- // ValidationAuthorizeRequest the authorization request validation
125- func (s * Server ) ValidationAuthorizeRequest (r * http.Request ) (req * AuthorizeRequest , err error ) {
126- if r .Method != "GET" {
127- err = errors .ErrInvalidRequest
128- return
129- }
130- redirectURI , err := url .QueryUnescape (r .FormValue ("redirect_uri" ))
131- if err != nil {
132- return
133- }
134- req = & AuthorizeRequest {
135- RedirectURI : redirectURI ,
136- ResponseType : oauth2 .ResponseType (r .FormValue ("response_type" )),
137- ClientID : r .FormValue ("client_id" ),
138- State : r .FormValue ("state" ),
139- Scope : r .FormValue ("scope" ),
140- }
141- return
142- }
143-
144124// CheckResponseType check allows response type
145125func (s * Server ) CheckResponseType (rt oauth2.ResponseType ) bool {
146126 for _ , art := range s .Config .AllowedResponseTypes {
@@ -151,20 +131,41 @@ func (s *Server) CheckResponseType(rt oauth2.ResponseType) bool {
151131 return false
152132}
153133
154- // GetAuthorizeToken get authorization token(code)
155- func (s * Server ) GetAuthorizeToken ( req * AuthorizeRequest ) (ti oauth2. TokenInfo , err error ) {
156- if req . ResponseType == "" {
157- err = errors . ErrUnsupportedResponseType
134+ // ValidationAuthorizeRequest the authorization request validation
135+ func (s * Server ) ValidationAuthorizeRequest ( r * http. Request ) (req * AuthorizeRequest , err error ) {
136+ redirectURI , err := url . QueryUnescape ( r . FormValue ( "redirect_uri" ))
137+ if err != nil {
158138 return
159- } else if req .RedirectURI == "" ||
160- req .ClientID == "" {
139+ }
140+ clientID := r .FormValue ("client_id" )
141+ if r .Method != "GET" ||
142+ clientID == "" ||
143+ redirectURI == "" {
161144 err = errors .ErrInvalidRequest
162145 return
163146 }
164- if allowed := s .CheckResponseType (req .ResponseType ); ! allowed {
147+
148+ resType := oauth2 .ResponseType (r .FormValue ("response_type" ))
149+ if resType .String () == "" {
150+ err = errors .ErrUnsupportedResponseType
151+ return
152+ } else if allowed := s .CheckResponseType (resType ); ! allowed {
165153 err = errors .ErrUnauthorizedClient
166154 return
167155 }
156+
157+ req = & AuthorizeRequest {
158+ RedirectURI : redirectURI ,
159+ ResponseType : resType ,
160+ ClientID : clientID ,
161+ State : r .FormValue ("state" ),
162+ Scope : r .FormValue ("scope" ),
163+ }
164+ return
165+ }
166+
167+ // GetAuthorizeToken get authorization token(code)
168+ func (s * Server ) GetAuthorizeToken (req * AuthorizeRequest ) (ti oauth2.TokenInfo , err error ) {
168169 // check the client allows the grant type
169170 if fn := s .ClientAuthorizedHandler ; fn != nil {
170171 gt := oauth2 .AuthorizationCode
@@ -180,6 +181,7 @@ func (s *Server) GetAuthorizeToken(req *AuthorizeRequest) (ti oauth2.TokenInfo,
180181 return
181182 }
182183 }
184+
183185 // check the client allows the authorized scope
184186 if fn := s .ClientScopeHandler ; fn != nil {
185187 allowed , verr := fn (req .ClientID , req .Scope )
@@ -191,6 +193,7 @@ func (s *Server) GetAuthorizeToken(req *AuthorizeRequest) (ti oauth2.TokenInfo,
191193 return
192194 }
193195 }
196+
194197 tgr := & oauth2.TokenGenerateRequest {
195198 ClientID : req .ClientID ,
196199 UserID : req .UserID ,
@@ -221,6 +224,7 @@ func (s *Server) HandleAuthorizeRequest(w http.ResponseWriter, r *http.Request)
221224 err = s .redirectError (w , req , verr )
222225 return
223226 }
227+
224228 // user authorization
225229 userID , verr := s .UserAuthorizationHandler (w , r )
226230 if verr != nil {
@@ -230,6 +234,7 @@ func (s *Server) HandleAuthorizeRequest(w http.ResponseWriter, r *http.Request)
230234 return
231235 }
232236 req .UserID = userID
237+
233238 // specify the scope of authorization
234239 if fn := s .AuthorizeScopeHandler ; fn != nil {
235240 scope , verr := fn (w , r )
@@ -240,6 +245,7 @@ func (s *Server) HandleAuthorizeRequest(w http.ResponseWriter, r *http.Request)
240245 req .Scope = scope
241246 }
242247 }
248+
243249 // specify the expiration time of access token
244250 if fn := s .AccessTokenExpHandler ; fn != nil {
245251 exp , verr := fn (w , r )
@@ -249,6 +255,7 @@ func (s *Server) HandleAuthorizeRequest(w http.ResponseWriter, r *http.Request)
249255 }
250256 req .AccessTokenExp = exp
251257 }
258+
252259 ti , verr := s .GetAuthorizeToken (req )
253260 if verr != nil {
254261 err = s .redirectError (w , req , verr )
@@ -260,12 +267,13 @@ func (s *Server) HandleAuthorizeRequest(w http.ResponseWriter, r *http.Request)
260267
261268// ValidationTokenRequest the token request validation
262269func (s * Server ) ValidationTokenRequest (r * http.Request ) (gt oauth2.GrantType , tgr * oauth2.TokenGenerateRequest , err error ) {
263- if v := r .Method ; ! (v == "POST" || (s .Config .AllowGetAccessRequest && v == "GET" )) {
270+ if v := r .Method ; ! (v == "POST" ||
271+ (s .Config .AllowGetAccessRequest && v == "GET" )) {
264272 err = errors .ErrInvalidRequest
265273 return
266274 }
267275 gt = oauth2 .GrantType (r .FormValue ("grant_type" ))
268- if gt == "" {
276+ if gt . String () == "" {
269277 err = errors .ErrUnsupportedGrantType
270278 return
271279 }
0 commit comments