@@ -64,6 +64,12 @@ func (c *ChallengeClaims) Valid() error {
6464
6565// VerifyChallenge verifies a consent challenge and either returns the challenge's claims if it is valid, or an
6666// error if it is not.
67+ //
68+ // claims, err := c.VerifyChallenge(challenge)
69+ // if err != nil {
70+ // // The challenge is invalid, or the signing key could not be retrieved
71+ // }
72+ // // ...
6773func (c * Consent ) VerifyChallenge (challenge string ) (* ChallengeClaims , error ) {
6874 var claims ChallengeClaims
6975 t , err := jwt .ParseWithClaims (challenge , & claims , func (t * jwt.Token ) (interface {}, error ) {
@@ -95,7 +101,24 @@ func (c *Consent) VerifyChallenge(challenge string) (*ChallengeClaims, error) {
95101 return & claims , err
96102}
97103
104+ // DenyConsent can be used to indicate that the user denied consent. Returns a redirect url or an error
105+ // if the challenge is invalid.
106+ //
107+ // redirectUrl, _ := c.DenyConsent(challenge)
108+ // http.Redirect(w, r, redirectUrl, http.StatusFound)
109+ func (c * Consent ) DenyConsent (challenge string ) (string , error ) {
110+ claims , err := c .VerifyChallenge (challenge )
111+ if err != nil {
112+ return "" , err
113+ }
114+
115+ return fmt .Sprintf ("%s&consent=denied" , claims .RedirectURL ), nil
116+ }
117+
98118// GenerateResponse generates a consent response and returns the consent response token, or an error if it is invalid.
119+ //
120+ // redirectUrl, _ := c.GenerateResponse(challenge)
121+ // http.Redirect(w, r, redirectUrl, http.StatusFound)
99122func (c * Consent ) GenerateResponse (r * ResponseRequest ) (string , error ) {
100123 challenge , err := c .VerifyChallenge (r .Challenge )
101124 if err != nil {
@@ -130,5 +153,5 @@ func (c *Consent) GenerateResponse(r *ResponseRequest) (string, error) {
130153 return "" , errors .WithStack (err )
131154 }
132155
133- return fmt .Sprintf ("%s.%s" , encoded , signature ), nil
156+ return fmt .Sprintf ("%s&consent=%s .%s" , challenge . RedirectURL , encoded , signature ), nil
134157}
0 commit comments