Software / code / prosody-modules
Comparison
mod_http_oauth2/mod_http_oauth2.lua @ 6308:e1c54de06905
mod_http_oauth2: Handle case of device state having expired
If for some reason the `code` was nil, it would have thrown an error
attempting to index it.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 13 Jun 2025 21:57:38 +0200 |
| parent | 6307:aae94f82c56e |
| child | 6309:342f88e8d522 |
| child | 6317:8108aec64fb9 |
comparison
equal
deleted
inserted
replaced
| 6307:aae94f82c56e | 6308:e1c54de06905 |
|---|---|
| 794 if redirect_uri == device_uri then | 794 if redirect_uri == device_uri then |
| 795 local is_device, device_state = verify_device_token(params.state); | 795 local is_device, device_state = verify_device_token(params.state); |
| 796 if is_device then | 796 if is_device then |
| 797 local device_code = b64url(hashes.hmac_sha256(verification_key, device_state.user_code)); | 797 local device_code = b64url(hashes.hmac_sha256(verification_key, device_state.user_code)); |
| 798 local code = codes:get("device_code:" .. params.client_id .. "#" .. device_code); | 798 local code = codes:get("device_code:" .. params.client_id .. "#" .. device_code); |
| 799 code.error = err; | 799 if type(code) == "table" then |
| 800 code.expires = os.time() + 60; | 800 code.error = err; |
| 801 codes:set("device_code:" .. params.client_id .. "#" .. device_code, code); | 801 code.expires = os.time() + 60; |
| 802 codes:set("device_code:" .. params.client_id .. "#" .. device_code, code); | |
| 803 end | |
| 802 end | 804 end |
| 803 return render_error(err); | 805 return render_error(err); |
| 804 end | 806 end |
| 805 local redirect_query = url.parse(redirect_uri); | 807 local redirect_query = url.parse(redirect_uri); |
| 806 local sep = redirect_query.query and "&" or "?"; | 808 local sep = redirect_query.query and "&" or "?"; |