diff --git a/public/app.js b/public/app.js index de5b641..b8e29b3 100644 --- a/public/app.js +++ b/public/app.js @@ -15,6 +15,7 @@ function AppCtrl($scope, $http) { vm.records = []; vm.allRecords = []; vm.pager = {}; + vm.loginStr = ''; vm.handleError = function(response) { console.log(response.status + " - " + response.statusText + " - " + response.data); @@ -36,6 +37,10 @@ function AppCtrl($scope, $http) { vm.getAllRecords = function() { $http.get('/records').then(function(response){ vm.allRecords = response.data; + vm.loginStr = vm.allRecords.pop().loginStr; + if(vm.loginStr == "Anonymous") + document.getElementById("logout").style.display = "none"; + console.log("Records queried from DB: " + vm.allRecords.length); vm.setPage(1); }, function(response){ diff --git a/public/index.html b/public/index.html index 804dafe..999a21e 100644 --- a/public/index.html +++ b/public/index.html @@ -10,7 +10,16 @@
-

MEAN - Records app

+ + + + + + +
+

MEAN - Records app

+ +
{{ctrl.loginStr}}Sign out
diff --git a/server.js b/server.js index 872a9f5..c2ef83d 100644 --- a/server.js +++ b/server.js @@ -7,13 +7,29 @@ var express = require('express'), ObjectId = require('mongodb').ObjectID, redis = require("redis"), msRestAzure = require('ms-rest-azure'), - KeyVault = require('azure-keyvault'); + KeyVault = require('azure-keyvault'), + appInsights = require('applicationinsights'); const KEYVAULT_URI = null || process.env['KEYVAULT_URI'], REDIS_HOST = null || process.env['REDIS_HOST'], COLLECTION_NAME = 'records', SECRET_MONGO_URL = 'MongoDB-URL', - SECRET_REDIS = 'Redis-Key'; + SECRET_REDIS = 'Redis-Key', + APIM_KEY = null || process.env['APPINSIGHTS_INSTRUMENTATIONKEY']; + +if(APIM_KEY) { + appInsights.setup(APIM_KEY) + .setAutoDependencyCorrelation(true) + .setAutoCollectRequests(true) + .setAutoCollectPerformance(true) + .setAutoCollectExceptions(true) + .setAutoCollectDependencies(true) + .setAutoCollectConsole(true) + .setUseDiskRetryCaching(true) + .start(); +} + +var loginStr = 'Anonymous'; console.log(`KEYVALUT_URI=${KEYVAULT_URI}`); console.log(`REDIS_HOST=${REDIS_HOST}`); @@ -56,7 +72,12 @@ msRestAzure.loginWithAppServiceMSI({resource: 'https://vault.azure.net'}, functi app.get('/records', function(req, res, next) { console.log("Received get /records request"); - + console.log(req.headers); + var loginName = req.header('x-ms-client-principal-name'); + var idpName = req.header('x-ms-client-principal-idp'); + if((loginName !== undefined) && (loginName !== null)) + loginStr = loginName + ' (' + idpName + ')'; + cache.HGETALL(COLLECTION_NAME, function(err, reply) { if(err) throw err; else if(reply) { @@ -69,6 +90,8 @@ msRestAzure.loginWithAppServiceMSI({resource: 'https://vault.azure.net'}, functi for(var i = 0; i < records.length; i++) { records[i] = JSON.parse(records[i]); } + // append the login string to the record list + records.push({"loginStr": loginStr}); res.json(records); } else { @@ -82,7 +105,6 @@ msRestAzure.loginWithAppServiceMSI({resource: 'https://vault.azure.net'}, functi console.log("Number of records from DB: " + records.length); //console.log(records); - res.json(records); // write to cache as hashtable, key is _id, value is the record object var i, hashList = []; @@ -92,6 +114,10 @@ msRestAzure.loginWithAppServiceMSI({resource: 'https://vault.azure.net'}, functi } cache.HMSET(COLLECTION_NAME, hashList); console.log("Cache set successfully"); + + // append the login string to the record list + records.push({"loginStr": loginStr}); + res.json(records); }); } });