}
function gotevent(obj) {
- console.log("gotevent:" + JSON.stringify(obj));
- document.getElementById("outevt").innerHTML = (evtidx++) +": "+JSON.stringify(obj);
+ console.log("gotevent:" + JSON.stringify(obj));
+ document.getElementById("outevt").innerHTML = (evtidx++) +": "+JSON.stringify(obj);
+
+ document.getElementById("message").innerHTML = "";
+
+ if (obj.event == "ll-auth/login") {
+ document.getElementById("userid").innerHTML = obj.data.user;
+ document.getElementById("device").innerHTML = obj.data.device;
+ }
+
+ if (obj.event == "ll-auth/logout") {
+ document.getElementById("userid").innerHTML = "";
+ document.getElementById("device").innerHTML = "";
+ }
+
+ if (obj.event == "ll-auth/failed") {
+ document.getElementById("message").innerHTML = obj.data.message;
+ }
}
function send(message) {
static char* current_device = NULL;
static char* current_user = NULL;
-afb_event evt_login, evt_logout;
+afb_event evt_login, evt_logout, evt_failed;
/// @brief API's verb 'login'. Try to login a user using a device
/// @param[in] req The request object. Should contains a json with a "device" key.
{
AFB_ERROR("[login] the current user must be logged out first!");
afb_req_fail(req, "current user must be logged out first!", NULL);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"A user is already logged in!\"}"));
return;
}
{
AFB_ERROR("[login] device must be provided!");
afb_req_fail(req, "device must be provided!", NULL);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"device must be provided!\"}"));
return;
}
{
AFB_ERROR("PAM start failed!");
afb_req_fail(req, "PAM start failed!", NULL);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"PAM start failed!\"}"));
return;
}
AFB_ERROR("PAM putenv failed!");
afb_req_fail(req, "PAM putenv failed!", NULL);
pam_end(pamh, r);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"PAM putenv failed!\"}"));
return;
}
AFB_ERROR("PAM authenticate failed!");
afb_req_fail(req, "PAM authenticate failed!", NULL);
pam_end(pamh, r);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"PAM authenticate failed!\"}"));
return;
}
AFB_ERROR("PAM acct_mgmt failed!");
afb_req_fail(req, "PAM acct_mgmt failed!", NULL);
pam_end(pamh, r);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"PAM acct_mgmt failed!\"}"));
return;
}
{
AFB_ERROR("[login] No user provided by the PAM module!");
afb_req_fail(req, "No user provided by the PAM module!", NULL);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"No user provided by the PAM module!\"}"));
return;
}
{
AFB_ERROR("PAM end failed!");
afb_req_fail(req, "PAM end failed!", NULL);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"PAM end failed!\"}"));
return;
}
{
AFB_INFO("[logout] device must be provided!");
afb_req_fail(req, "device must be provided!", NULL);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"Device must be provided!\"}"));
return;
}
{
AFB_INFO("No user was linked to this device!");
afb_req_fail(req, "No user was linked to this device!", NULL);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"No user was linked to this device!\"}"));
return;
}
}
AFB_INFO("The unplugged device wasn't the user key!");
afb_req_fail(req, "The unplugged device wasn't the user key!", NULL);
+ afb_event_broadcast(evt_failed, json_tokener_parse("{\"message\":\"The unplugged device wasn't the user key!\"}"));
}
static void verb_getuser(struct afb_req req)
current_device = NULL;
evt_login = afb_daemon_make_event("login");
evt_logout = afb_daemon_make_event("logout");
+ evt_failed = afb_daemon_make_event("failed");
if (afb_event_is_valid(evt_login) && afb_event_is_valid(evt_logout))
return 0;