added some events to the API, like failure.
authorLoïc Collignon <loic.collignon@iot.bzh>
Mon, 31 Jul 2017 09:26:33 +0000 (11:26 +0200)
committerLoïc Collignon <loic.collignon@iot.bzh>
Mon, 31 Jul 2017 09:26:33 +0000 (11:26 +0200)
Change-Id: Ib102a729ab5666906edf19f24c04662a5c26fdba
Signed-off-by: Loïc Collignon <loic.collignon@iot.bzh>
ll-auth-binding/htdocs/IdentityBinding.js
ll-auth-binding/htdocs/auth.html
ll-auth-binding/htdocs/index.html
ll-auth-binding/src/ll-auth-binding.c

index 5f9ea24..4d0d98f 100644 (file)
     }
 
     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) {
index 6e0da89..ac48ff9 100644 (file)
             <li><button onclick="callbinder('ll-auth','getuser', {})">get user</button></li>
         </ol>
         <br>
+        <div>
+        </div>
+            <h2>User:</h2>
+            <ol>
+                <li>id: <span id="userid"></span></li>
+                <li>device: <span id="device"></span></li>
+            </ol>
+            <div id="message" style="color:red;"></div>
+        <br/>
         <div id="main" style="visibility:hidden">
+            <h2>Debug: </h2>
             <ol>
                 <li>Question <div id="question"></div></li>
                 <li>Response <div id="output"></div></li>
-                <li>Events: <div id="outevt"></div>
+                <li>Events: <div id="outevt"></div></li>
             </ol>
         </div>
     </body>
-</html>
\ No newline at end of file
+</html>
index 5eb0401..1c90ae5 100644 (file)
@@ -6,6 +6,7 @@
     <h1>Identity Binding tests</h1>
     <ol>
      <li><a href="auth.html">Auth</a></li>
+     <li><a href="auth2.html">Auth2</a></li>
     </ol>
   </body>
 </html>
index e85d63a..78e9733 100644 (file)
@@ -13,7 +13,7 @@ static struct pam_conv conv = { misc_conv, NULL };
 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.
@@ -28,6 +28,7 @@ static void verb_login(struct afb_req req)
        {
                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;
        }
 
@@ -36,6 +37,7 @@ static void verb_login(struct afb_req req)
        {
                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;
        }
 
@@ -45,6 +47,7 @@ static void verb_login(struct afb_req req)
        {
                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;
        }
 
@@ -56,6 +59,7 @@ static void verb_login(struct afb_req req)
                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;
        }
 
@@ -64,6 +68,7 @@ static void verb_login(struct afb_req req)
                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;
        }
 
@@ -72,6 +77,7 @@ static void verb_login(struct afb_req req)
                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;
        }
 
@@ -81,6 +87,7 @@ static void verb_login(struct afb_req req)
        {
                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;
        }
 
@@ -91,6 +98,7 @@ static void verb_login(struct afb_req req)
        {
                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;
        }
 
@@ -114,6 +122,7 @@ static void verb_logout(struct afb_req req)
        {
                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;
        }
 
@@ -135,12 +144,14 @@ static void verb_logout(struct afb_req req)
                {
                        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)
@@ -164,6 +175,7 @@ int ll_auth_init()
        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;