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;