...
1
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
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
56
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