Mercurial > prosody-modules
comparison mod_http_oauth2/mod_http_oauth2.lua @ 4276:ec33b3b1136c
mod_http_oauth2: Fix passing OAuth-specific error details
Error 'context' isn't preserved when passed this way, that would be the
second argument. Fits better in extras anyways.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 28 Nov 2020 21:22:16 +0100 |
| parents | 91b951fb3018 |
| children | 7cd3b7ec59e9 |
comparison
equal
deleted
inserted
replaced
| 4275:bb111148d031 | 4276:ec33b3b1136c |
|---|---|
| 35 return errors.new({ | 35 return errors.new({ |
| 36 type = "modify"; | 36 type = "modify"; |
| 37 condition = "bad-request"; | 37 condition = "bad-request"; |
| 38 code = err_name == "invalid_client" and 401 or 400; | 38 code = err_name == "invalid_client" and 401 or 400; |
| 39 text = err_desc and (err_name..": "..err_desc) or err_name; | 39 text = err_desc and (err_name..": "..err_desc) or err_name; |
| 40 context = { oauth2_response = { error = err_name, error_description = err_desc } }; | 40 extra = { oauth2_response = { error = err_name, error_description = err_desc } }; |
| 41 }); | 41 }); |
| 42 end | 42 end |
| 43 | 43 |
| 44 local function new_access_token(token_jid, scope, ttl) | 44 local function new_access_token(token_jid, scope, ttl) |
| 45 local token = tokens.create_jid_token(token_jid, token_jid, scope, ttl); | 45 local token = tokens.create_jid_token(token_jid, token_jid, scope, ttl); |
| 240 }); | 240 }); |
| 241 | 241 |
| 242 local http_server = require "net.http.server"; | 242 local http_server = require "net.http.server"; |
| 243 | 243 |
| 244 module:hook_object_event(http_server, "http-error", function (event) | 244 module:hook_object_event(http_server, "http-error", function (event) |
| 245 local oauth2_response = event.error and event.error.context and event.error.context.oauth2_response; | 245 local oauth2_response = event.error and event.error.extra and event.error.extra.oauth2_response; |
| 246 if not oauth2_response then | 246 if not oauth2_response then |
| 247 return; | 247 return; |
| 248 end | 248 end |
| 249 event.response.headers.content_type = "application/json"; | 249 event.response.headers.content_type = "application/json"; |
| 250 event.response.status_code = event.error.code or 400; | 250 event.response.status_code = event.error.code or 400; |
