Comparison

core/sessionmanager.lua @ 6561:bae84401a02c

sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
author Kim Alvefur <zash@zash.se>
date Fri, 30 Jan 2015 15:38:54 +0100
parent 6551:784fa05cf594
child 6602:61b6a4fc65f1
comparison
equal deleted inserted replaced
6559:0ef7ca5276a1 6561:bae84401a02c
114 -- returns nil, err_type, err, err_message on failure 114 -- returns nil, err_type, err, err_message on failure
115 function bind_resource(session, resource) 115 function bind_resource(session, resource)
116 if not session.username then return nil, "auth", "not-authorized", "Cannot bind resource before authentication"; end 116 if not session.username then return nil, "auth", "not-authorized", "Cannot bind resource before authentication"; end
117 if session.resource then return nil, "cancel", "already-bound", "Cannot bind multiple resources on a single connection"; end 117 if session.resource then return nil, "cancel", "already-bound", "Cannot bind multiple resources on a single connection"; end
118 -- We don't support binding multiple resources 118 -- We don't support binding multiple resources
119
120 local event_payload = { session = session, resource = resource };
121 if hosts[session.host].events.fire_event("pre-resource-bind", event_payload) == false then
122 local err = event_payload.error;
123 if err then return nil, err.type, err.condition, err.text; end
124 return nil, "cancel", "not-allowed";
125 else
126 -- In case a plugin wants to poke at it
127 resource = event_payload.resource;
128 end
119 129
120 resource = resourceprep(resource); 130 resource = resourceprep(resource);
121 resource = resource ~= "" and resource or uuid_generate(); 131 resource = resource ~= "" and resource or uuid_generate();
122 --FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing 132 --FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing
123 133