(vals url.Values, base *url.URL, queryParam string)
| 220 | } |
| 221 | |
| 222 | func (p *QueryParamParser) RedirectURL(vals url.Values, base *url.URL, queryParam string) *url.URL { |
| 223 | v, err := parseQueryParam(p, vals, url.Parse, base, queryParam) |
| 224 | if err != nil { |
| 225 | p.Errors = append(p.Errors, codersdk.ValidationError{ |
| 226 | Field: queryParam, |
| 227 | Detail: fmt.Sprintf("Query param %q must be a valid url: %s", queryParam, err.Error()), |
| 228 | }) |
| 229 | } |
| 230 | |
| 231 | // OAuth 2.1 requires exact redirect URI matching. |
| 232 | if v.String() != base.String() { |
| 233 | p.Errors = append(p.Errors, codersdk.ValidationError{ |
| 234 | Field: queryParam, |
| 235 | Detail: fmt.Sprintf("Query param %q must exactly match %s", queryParam, base), |
| 236 | }) |
| 237 | } |
| 238 | |
| 239 | return v |
| 240 | } |
| 241 | |
| 242 | func (p *QueryParamParser) Time(vals url.Values, def time.Time, queryParam, layout string) time.Time { |
| 243 | return p.timeWithMutate(vals, def, queryParam, layout, nil) |
no test coverage detected