...

Source file src/github.com/ory/fosite/authorize_request.go

Documentation: github.com/ory/fosite

     1  /*
     2   * Copyright © 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io>
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   *
    16   * @author		Aeneas Rekkas <aeneas+oss@aeneas.io>
    17   * @copyright 	2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io>
    18   * @license 	Apache-2.0
    19   *
    20   */
    21  
    22  package fosite
    23  
    24  import (
    25  	"net/url"
    26  )
    27  
    28  type ResponseModeType string
    29  
    30  const (
    31  	ResponseModeDefault  = ResponseModeType("")
    32  	ResponseModeFormPost = ResponseModeType("form_post")
    33  	ResponseModeQuery    = ResponseModeType("query")
    34  	ResponseModeFragment = ResponseModeType("fragment")
    35  )
    36  
    37  // AuthorizeRequest is an implementation of AuthorizeRequester
    38  type AuthorizeRequest struct {
    39  	ResponseTypes        Arguments        `json:"responseTypes" gorethink:"responseTypes"`
    40  	RedirectURI          *url.URL         `json:"redirectUri" gorethink:"redirectUri"`
    41  	State                string           `json:"state" gorethink:"state"`
    42  	HandledResponseTypes Arguments        `json:"handledResponseTypes" gorethink:"handledResponseTypes"`
    43  	ResponseMode         ResponseModeType `json:"ResponseModes" gorethink:"ResponseModes"`
    44  	DefaultResponseMode  ResponseModeType `json:"DefaultResponseMode" gorethink:"DefaultResponseMode"`
    45  
    46  	Request
    47  }
    48  
    49  func NewAuthorizeRequest() *AuthorizeRequest {
    50  	return &AuthorizeRequest{
    51  		ResponseTypes:        Arguments{},
    52  		HandledResponseTypes: Arguments{},
    53  		Request:              *NewRequest(),
    54  		ResponseMode:         ResponseModeDefault,
    55  		// The redirect URL must be unset / nil for redirect detection to work properly:
    56  		// RedirectURI:          &url.URL{},
    57  	}
    58  }
    59  
    60  func (d *AuthorizeRequest) IsRedirectURIValid() bool {
    61  	if d.GetRedirectURI() == nil {
    62  		return false
    63  	}
    64  
    65  	raw := d.GetRedirectURI().String()
    66  	if d.GetClient() == nil {
    67  		return false
    68  	}
    69  
    70  	redirectURI, err := MatchRedirectURIWithClientRedirectURIs(raw, d.GetClient())
    71  	if err != nil {
    72  		return false
    73  	}
    74  	return IsValidRedirectURI(redirectURI)
    75  }
    76  
    77  func (d *AuthorizeRequest) GetResponseTypes() Arguments {
    78  	return d.ResponseTypes
    79  }
    80  
    81  func (d *AuthorizeRequest) GetState() string {
    82  	return d.State
    83  }
    84  
    85  func (d *AuthorizeRequest) GetRedirectURI() *url.URL {
    86  	return d.RedirectURI
    87  }
    88  
    89  func (d *AuthorizeRequest) SetResponseTypeHandled(name string) {
    90  	d.HandledResponseTypes = append(d.HandledResponseTypes, name)
    91  }
    92  
    93  func (d *AuthorizeRequest) DidHandleAllResponseTypes() bool {
    94  	for _, rt := range d.ResponseTypes {
    95  		if !d.HandledResponseTypes.Has(rt) {
    96  			return false
    97  		}
    98  	}
    99  
   100  	return len(d.ResponseTypes) > 0
   101  }
   102  
   103  func (d *AuthorizeRequest) GetResponseMode() ResponseModeType {
   104  	return d.ResponseMode
   105  }
   106  
   107  func (d *AuthorizeRequest) SetDefaultResponseMode(defaultResponseMode ResponseModeType) {
   108  	if d.ResponseMode == ResponseModeDefault {
   109  		d.ResponseMode = defaultResponseMode
   110  	}
   111  	d.DefaultResponseMode = defaultResponseMode
   112  }
   113  
   114  func (d *AuthorizeRequest) GetDefaultResponseMode() ResponseModeType {
   115  	return d.DefaultResponseMode
   116  }
   117  

View as plain text