summaryrefslogtreecommitdiff
path: root/www/js/PortalLoginCtrl.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/js/PortalLoginCtrl.js')
-rw-r--r--www/js/PortalLoginCtrl.js1025
1 files changed, 479 insertions, 546 deletions
diff --git a/www/js/PortalLoginCtrl.js b/www/js/PortalLoginCtrl.js
index 46d15e1f..5135dffa 100644
--- a/www/js/PortalLoginCtrl.js
+++ b/www/js/PortalLoginCtrl.js
@@ -3,390 +3,349 @@
/*This is for the loop closure I am using in line 143 */
/* jslint browser: true*/
/* global vis,cordova,StatusBar,angular,console,moment */
-angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionicPlatform', '$scope', 'zm', 'NVRDataModel', '$ionicSideMenuDelegate', '$rootScope', '$http', '$q', '$state', '$ionicLoading', '$ionicPopover', '$ionicScrollDelegate', '$ionicModal', '$timeout', 'zmAutoLogin', '$ionicHistory', 'EventServer', '$translate', function($ionicPlatform, $scope, zm, NVRDataModel, $ionicSideMenuDelegate, $rootScope, $http, $q, $state, $ionicLoading, $ionicPopover, $ionicScrollDelegate, $ionicModal, $timeout, zmAutoLogin, $ionicHistory, EventServer, $translate)
-{
+angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionicPlatform', '$scope', 'zm', 'NVRDataModel', '$ionicSideMenuDelegate', '$rootScope', '$http', '$q', '$state', '$ionicLoading', '$ionicPopover', '$ionicScrollDelegate', '$ionicModal', '$timeout', 'zmAutoLogin', '$ionicHistory', 'EventServer', '$translate', function ($ionicPlatform, $scope, zm, NVRDataModel, $ionicSideMenuDelegate, $rootScope, $http, $q, $state, $ionicLoading, $ionicPopover, $ionicScrollDelegate, $ionicModal, $timeout, zmAutoLogin, $ionicHistory, EventServer, $translate) {
- var processPush = false;
- var broadcastHandles = [];
+ var processPush = false;
+ var broadcastHandles = [];
- $scope.$on ('$ionicView.beforeLeave', function() {
- //processPush = false;
- // NVRDataModel.debug ("BeforeEnter in Portal: setting ProcessPush to false");
- });
+ $scope.$on('$ionicView.beforeLeave', function () {
+ //processPush = false;
+ // NVRDataModel.debug ("BeforeEnter in Portal: setting ProcessPush to false");
+ });
- $scope.$on ('$ionicView.beforeLeave', function() {
- NVRDataModel.debug ("Portal: Deregistering broadcast handles");
- for (var i=0; i < broadcastHandles.length; i++) {
- //broadcastHandles[i]();
- }
- broadcastHandles = [];
- });
+ $scope.$on('$ionicView.beforeLeave', function () {
+ NVRDataModel.debug("Portal: Deregistering broadcast handles");
+ for (var i = 0; i < broadcastHandles.length; i++) {
+ //broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+ });
- $scope.$on('$ionicView.enter',
- function()
- {
- NVRDataModel.setJustResumed(false);
-
- NVRDataModel.debug("Inside Portal login Enter handler");
- loginData = NVRDataModel.getLogin();
+ $scope.$on('$ionicView.enter',
+ function () {
+ NVRDataModel.setJustResumed(false);
- $ionicHistory.nextViewOptions(
- {
- disableBack: true
- });
+ NVRDataModel.debug("Inside Portal login Enter handler");
+ loginData = NVRDataModel.getLogin();
- $scope.pindata = {};
- if ($ionicSideMenuDelegate.isOpen())
- {
- $ionicSideMenuDelegate.toggleLeft();
- NVRDataModel.debug("Sliding menu close");
- }
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
- $scope.pinPrompt = false; // if true, then PIN is displayed else skip
+ $scope.pindata = {};
+ if ($ionicSideMenuDelegate.isOpen()) {
+ $ionicSideMenuDelegate.toggleLeft();
+ NVRDataModel.debug("Sliding menu close");
+ }
- if (NVRDataModel.hasLoginInfo())
- {
- NVRDataModel.log("User credentials are provided");
+ $scope.pinPrompt = false; // if true, then PIN is displayed else skip
+
+ if (NVRDataModel.hasLoginInfo()) {
+ NVRDataModel.log("User credentials are provided");
+
+ // You can login either via touch ID or typing in your code
+
+ var ld = NVRDataModel.getLogin();
+
+ if (ld.reloadInMontage == true) {
+ // we are in montage reload, so don't re-auth
+ NVRDataModel.log("skipping validation, as this is montage reload");
+ ld.reloadInMontage = false;
+ NVRDataModel.setLogin(ld);
+ unlock(true);
+
+ } else if ($ionicPlatform.is('android') && loginData.usePin) {
+
+ FingerprintAuth.isAvailable(function (result) {
+ NVRDataModel.debug("FingerprintAuth available: " + JSON.stringify(result));
+ if (result.isAvailable == true && result.hasEnrolledFingerprints == true) {
+ var encryptConfig = {
+ clientId: "zmNinja",
+ username: "doesntmatter",
+ password: "doesntmatter",
+ maxAttempts: 5,
+ locale: "en_US",
+ dialogTitle: $translate.instant('kPleaseAuthenticate'),
+ dialogMessage: $translate.instant('kPleaseAuthenticate'),
+ dialogHint: "",
+ }; // See config object for required parameters
+ FingerprintAuth.encrypt(encryptConfig, function (succ) {
+ NVRDataModel.log("Touch success");
+ unlock(true);
+ }, function (err) {
+ NVRDataModel.log("Touch Failed " + JSON.stringify(msg));
+ });
+ } // if available
+ },
+ function (err) {
+ NVRDataModel.log("Fingerprint auth not available or not compatible with Android specs: " + JSON.stringify(err));
+ }
- // You can login either via touch ID or typing in your code
+ ); //isAvailable
+
+ } else if ($ionicPlatform.is('ios') && loginData.usePin) {
+
+ window.plugins.touchid.isAvailable(
+ function () {
+ window.plugins.touchid.verifyFingerprint(
+ $translate.instant('kPleaseAuthenticate'), // this will be shown in the native scanner popup
+ function (msg) {
+ NVRDataModel.log("Touch success");
+ unlock(true);
+ }, // success handler: fingerprint accepted
+ function (msg) {
+ NVRDataModel.log("Touch Failed " + JSON.stringify(msg));
+ } // error handler with errorcode and localised reason
+ );
+ },
+ function (err) {});
+
+ /* $cordovaTouchID.checkSupport()
+ .then(function()
+ {
+ // success, TouchID supported
+ $cordovaTouchID.authenticate("")
+ .then(function()
+ {
+ NVRDataModel.log("Touch Success");
+ // Don't assign pin as it may be alphanum
+ unlock(true);
+
+ },
+ function()
+ {
+ NVRDataModel.log("Touch Failed");
+ });
+ }, function(error)
+ {
+ NVRDataModel.log("TouchID not supported");
+ });*/
+ } else // touch was not used
+ {
+ NVRDataModel.log("not checking for touchID");
+ }
- var ld = NVRDataModel.getLogin();
+ if (loginData.usePin) {
+ // this shows the pin prompt on screen
+ $scope.pinPrompt = true;
+ // dont call unlock, let the user type in code
- if (ld.reloadInMontage == true) {
- // we are in montage reload, so don't re-auth
- NVRDataModel.log ("skipping validation, as this is montage reload");
- ld.reloadInMontage = false;
- NVRDataModel.setLogin(ld);
- unlock(true);
+ } else // no PIN Code so go directly to auth
+ {
- }
+ unlock(true);
+ }
- else if ($ionicPlatform.is('android') && loginData.usePin) {
-
- FingerprintAuth.isAvailable(function (result) {
- NVRDataModel.debug("FingerprintAuth available: " + JSON.stringify(result));
- if (result.isAvailable == true && result.hasEnrolledFingerprints == true) {
- var encryptConfig = {
- clientId: "zmNinja",
- username: "doesntmatter",
- password: "doesntmatter",
- maxAttempts: 5,
- locale: "en_US",
- dialogTitle: $translate.instant('kPleaseAuthenticate'),
- dialogMessage: $translate.instant('kPleaseAuthenticate'),
- dialogHint: "",
- }; // See config object for required parameters
- FingerprintAuth.encrypt(encryptConfig, function (succ) {
- NVRDataModel.log ("Touch success"); unlock(true);
- }, function (err) {
- NVRDataModel.log("Touch Failed " + JSON.stringify(msg));
- });
- } // if available
- },
- function (err) {
- NVRDataModel.log ("Fingerprint auth not available or not compatible with Android specs: "+ JSON.stringify(err));
- }
-
- );//isAvailable
+ } else // login creds are not present
+ {
+ NVRDataModel.debug("PortalLogin: Not logged in, so going to login");
+ if (NVRDataModel.isFirstUse()) {
+ NVRDataModel.debug("First use, showing warm and fuzzy...");
+ $ionicHistory.nextViewOptions({
+ disableAnimate: true,
+ disableBack: true
+ });
+ $state.go('app.first-use');
+ return;
+ } else {
+ if (!$rootScope.userCancelledAuth) {
+ $ionicHistory.nextViewOptions({
+ disableAnimate: true,
+ disableBack: true
+ });
+ $state.go("app.login", {
+ "wizard": false
+ });
+ return;
+ } else {
+ // do this only once - rest for next time
+ $rootScope.userCancelledAuth = false;
+ }
+ }
+ }
- }
+ });
- else if ($ionicPlatform.is('ios') && loginData.usePin)
- {
+ //-------------------------------------------------------------------------------
+ // remove status is pin is empty
+ //-------------------------------------------------------------------------------
- window.plugins.touchid.isAvailable(
- function () {
- window.plugins.touchid.verifyFingerprint(
- $translate.instant('kPleaseAuthenticate'), // this will be shown in the native scanner popup
- function(msg) {NVRDataModel.log ("Touch success"); unlock(true);}, // success handler: fingerprint accepted
- function(msg) { NVRDataModel.log("Touch Failed " + JSON.stringify(msg));} // error handler with errorcode and localised reason
- );
- },
- function (err) {});
-
- /* $cordovaTouchID.checkSupport()
- .then(function()
- {
- // success, TouchID supported
- $cordovaTouchID.authenticate("")
- .then(function()
- {
- NVRDataModel.log("Touch Success");
- // Don't assign pin as it may be alphanum
- unlock(true);
-
- },
- function()
- {
- NVRDataModel.log("Touch Failed");
- });
- }, function(error)
- {
- NVRDataModel.log("TouchID not supported");
- });*/
- }
- else // touch was not used
- {
- NVRDataModel.log("not checking for touchID");
+ $scope.pinChange = function () {
+ if ($scope.pindata.pin == null) {
+ $scope.pindata.status = "";
+ }
+ };
+
+ //-------------------------------------------------------------------------------
+ // unlock app if PIN is correct
+ //-------------------------------------------------------------------------------
+ $scope.unlock = function () {
+ // call with false meaning check for pin
+ unlock(false);
+ };
+
+ //------------------------------------------------------------------------
+ // Aaron Lager hack - can't figure out why he gets a 401 after
+ // successful login and then it works after resaving
+ //------------------------------------------------------------------------
+ function tryLoggingSecondTimeHack() {
+ var d = $q.defer();
+
+ zmAutoLogin.doLogin("<button class='button button-clear' style='line-height: normal; min-height: 0; min-width: 0;color:#fff;' ng-click='$root.cancelAuth()'><i class='ion-close-circled'></i>&nbsp;" + $translate.instant('kAuthenticating') + "...</button>")
+ .then(function (data) // success
+ {
+ NVRDataModel.debug("2nd auth login worked");
+ NVRDataModel.getAPIversion()
+ .then(function (data) {
+ NVRDataModel.getKeyConfigParams(1);
+ NVRDataModel.log("2nd auth:Got API version: " + data);
+ $rootScope.apiVersion = data;
+ var ld = NVRDataModel.getLogin();
+ if (NVRDataModel.versionCompare(data, zm.minAppVersion) == -1 && data != "0.0.0") {
+
+ $state.go('app.lowversion', {
+ "ver": data
+ });
+ return;
}
- if (loginData.usePin)
- {
- // this shows the pin prompt on screen
- $scope.pinPrompt = true;
- // dont call unlock, let the user type in code
+ if (NVRDataModel.versionCompare(data, zm.recommendedAppVersion) == -1 && data != "0.0.0") {
- }
- else // no PIN Code so go directly to auth
- {
+ NVRDataModel.hrsSinceChecked("zmVersion")
+ .then(function (val) {
+ NVRDataModel.debug("ZM Version nag: Checking " + val + " with " + zm.zmVersionCheckNag);
+ if (val >= zm.zmVersionCheckNag && 0) {
+ NVRDataModel.updateHrsSinceChecked("zmVersion");
+ $state.go('app.importantmessage', {
+ "ver": data
+ });
+ return;
+ }
+
+ });
- unlock(true);
}
- }
- else // login creds are not present
- {
- NVRDataModel.debug("PortalLogin: Not logged in, so going to login");
- if (NVRDataModel.isFirstUse())
+ /*if (data == "0.0.0")
{
- NVRDataModel.debug("First use, showing warm and fuzzy...");
- $ionicHistory.nextViewOptions(
+
+ NVRDataModel.log("2nd Auth:API getVersion succeeded but returned 0.0.0 " + JSON.stringify(data));
+ NVRDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
+ $state.go("login",
{
- disableAnimate: true,
- disableBack: true
+ "wizard": false
});
- $state.go('app.first-use');
return;
- }
- else
- {
- if (!$rootScope.userCancelledAuth)
- {
- $ionicHistory.nextViewOptions(
- {
- disableAnimate: true,
- disableBack: true
- });
- $state.go("app.login",
- {
- "wizard": false
- });
- return;
- }
- else
- {
- // do this only once - rest for next time
- $rootScope.userCancelledAuth = false;
- }
- }
- }
+ }*/
+ // coming here means continue
+ //EventServer.init();
+
+ var statetoGo = $rootScope.lastState ? $rootScope.lastState : 'app.montage';
+ //NVRDataModel.debug ("logging state transition");
+ NVRDataModel.debug("2nd Auth: Transitioning state to: " +
+ statetoGo + " with param " + JSON.stringify($rootScope.lastStateParam));
+ $state.go(statetoGo, $rootScope.lastStateParam);
+ return;
+
+ },
+ function (error) {
+ NVRDataModel.debug("2nd auth API failed, going to login");
+ d.reject("failed 2nd auth");
+ return (d.promise);
+ });
+
+ },
+ function (error) {
+ NVRDataModel.debug("2nd auth hack failed, going to login");
+ d.reject("failed 2nd auth");
+ return (d.promise);
});
- //-------------------------------------------------------------------------------
- // remove status is pin is empty
- //-------------------------------------------------------------------------------
+ return (d.promise);
+ }
- $scope.pinChange = function()
- {
- if ($scope.pindata.pin == null)
- {
- $scope.pindata.status = "";
- }
- };
- //-------------------------------------------------------------------------------
- // unlock app if PIN is correct
- //-------------------------------------------------------------------------------
- $scope.unlock = function()
- {
- // call with false meaning check for pin
- unlock(false);
- };
-
- //------------------------------------------------------------------------
- // Aaron Lager hack - can't figure out why he gets a 401 after
- // successful login and then it works after resaving
- //------------------------------------------------------------------------
- function tryLoggingSecondTimeHack()
- {
- var d = $q.defer();
+ //this needs to be rootScope so it lives even when we are out of view
+ var pp = $rootScope.$on("process-push", function () {
+ NVRDataModel.debug("*** PROCESS PUSH HANDLER CALLED INSIDE PORTAL LOGIN, setting ProcessPush to true");
+ processPush = true;
+ evaluateTappedNotification();
- zmAutoLogin.doLogin("<button class='button button-clear' style='line-height: normal; min-height: 0; min-width: 0;color:#fff;' ng-click='$root.cancelAuth()'><i class='ion-close-circled'></i>&nbsp;" + $translate.instant('kAuthenticating') + "...</button>")
- .then(function(data) // success
- {
- NVRDataModel.debug("2nd auth login worked");
- NVRDataModel.getAPIversion()
- .then(function(data)
- {
- NVRDataModel.getKeyConfigParams(1);
- NVRDataModel.log("2nd auth:Got API version: " + data);
- $rootScope.apiVersion = data;
- var ld = NVRDataModel.getLogin();
- if (NVRDataModel.versionCompare(data, zm.minAppVersion) == -1 && data != "0.0.0")
- {
-
- $state.go('app.lowversion',
- {
- "ver": data
- });
- return;
- }
-
- if (NVRDataModel.versionCompare(data, zm.recommendedAppVersion) == -1 && data != "0.0.0")
- {
-
- NVRDataModel.hrsSinceChecked("zmVersion")
- .then (function (val) {
- NVRDataModel.debug ("ZM Version nag: Checking "+val+" with "+zm.zmVersionCheckNag);
- if (val >=zm.zmVersionCheckNag && 0) {
- NVRDataModel.updateHrsSinceChecked("zmVersion");
- $state.go('app.importantmessage',
- {
- "ver": data
- });
- return;
- }
-
- });
-
- }
-
- /*if (data == "0.0.0")
- {
-
- NVRDataModel.log("2nd Auth:API getVersion succeeded but returned 0.0.0 " + JSON.stringify(data));
- NVRDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
- $state.go("login",
- {
- "wizard": false
- });
- return;
- }*/
- // coming here means continue
- //EventServer.init();
-
- var statetoGo = $rootScope.lastState ? $rootScope.lastState : 'app.montage';
- //NVRDataModel.debug ("logging state transition");
- NVRDataModel.debug("2nd Auth: Transitioning state to: " +
- statetoGo + " with param " + JSON.stringify($rootScope.lastStateParam));
- $state.go(statetoGo, $rootScope.lastStateParam);
- return;
-
- },
- function(error)
- {
- NVRDataModel.debug("2nd auth API failed, going to login");
- d.reject("failed 2nd auth");
- return (d.promise);
- });
+ });
+ broadcastHandles.push(pp);
- },
- function(error)
- {
- NVRDataModel.debug("2nd auth hack failed, going to login");
- d.reject("failed 2nd auth");
- return (d.promise);
- });
+ function evaluateTappedNotification() {
+ var ld = NVRDataModel.getLogin();
- return (d.promise);
- }
+ // give enough time for state conflicts to work out
+ // that way PortalLogin doesn't override this
+ // and I thought I was eliminating hacks....
+ $timeout(function () {
+ processPush = false;
+ }, 1000);
- //this needs to be rootScope so it lives even when we are out of view
- var pp = $rootScope.$on("process-push", function () {
- NVRDataModel.debug("*** PROCESS PUSH HANDLER CALLED INSIDE PORTAL LOGIN, setting ProcessPush to true");
- processPush = true;
- evaluateTappedNotification();
+ if ($rootScope.tappedNotification == 2) { // url launch
+ NVRDataModel.debug("Came via app url launch with mid=" + $rootScope.tappedMid);
+ NVRDataModel.debug("Came via app url launch with eid=" + $rootScope.tappedEid);
+ $rootScope.tappedNotification = 0;
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
-
- });
- broadcastHandles.push(pp);
-
- function evaluateTappedNotification()
+ if (parseInt($rootScope.tappedMid) > 0) {
+ NVRDataModel.debug("Going to live view ");
+ $state.go("app.monitors");
+ return;
+
+ } else if (parseInt($rootScope.tappedEid) > 0) {
+ NVRDataModel.debug("Going to events with EID=" + $rootScope.tappedEid);
+ $state.go("app.events", {
+ //"id": $rootScope.tappedEid,
+ "id": 0,
+ "playEvent": true
+ }, {
+ reload: true
+ });
+ return;
+ }
+ // go with monitor first, then event - just because I feel like ;)
+
+
+ } else if ($rootScope.tappedNotification == 1) // push
+ {
+
+
+ NVRDataModel.log("Came via push tap. onTapScreen=" + ld.onTapScreen);
+ $rootScope.pushOverride = true;
+ //console.log ("***** NOTIFICATION TAPPED ");
+ $rootScope.tappedNotification = 0;
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+
+ if (ld.onTapScreen == $translate.instant('kTapMontage')) {
+ NVRDataModel.debug("Going to montage");
+ $state.go("app.montage");
+
+ return;
+ } else if (ld.onTapScreen == $translate.instant('kTapEvents')) {
+ NVRDataModel.debug("Going to events");
+ $state.go("app.events", {
+ "id": 0,
+ "playEvent": false
+ });
+ return;
+ } else // we go to live
{
- var ld = NVRDataModel.getLogin();
-
- // give enough time for state conflicts to work out
- // that way PortalLogin doesn't override this
- // and I thought I was eliminating hacks....
- $timeout (function() {processPush = false;},1000);
-
-
- if ($rootScope.tappedNotification == 2) { // url launch
- NVRDataModel.debug("Came via app url launch with mid="+$rootScope.tappedMid);
- NVRDataModel.debug("Came via app url launch with eid="+$rootScope.tappedEid);
- $rootScope.tappedNotification = 0;
- $ionicHistory.nextViewOptions(
- {
- disableBack: true
- });
-
- if (parseInt($rootScope.tappedMid) > 0)
- {
- NVRDataModel.debug("Going to live view ");
- $state.go("app.monitors");
- return;
-
- }
-
- else if (parseInt($rootScope.tappedEid) > 0) {
- NVRDataModel.debug("Going to events with EID=" + $rootScope.tappedEid);
- $state.go("app.events",
- {
- //"id": $rootScope.tappedEid,
- "id": 0,
- "playEvent": true
- },
- {
- reload: true
- });
- return;
- }
- // go with monitor first, then event - just because I feel like ;)
-
-
- }
- else if ($rootScope.tappedNotification == 1) // push
- {
-
-
- NVRDataModel.log("Came via push tap. onTapScreen=" + ld.onTapScreen);
- $rootScope.pushOverride = true;
- //console.log ("***** NOTIFICATION TAPPED ");
- $rootScope.tappedNotification = 0;
- $ionicHistory.nextViewOptions(
- {
- disableBack: true
- });
-
- if (ld.onTapScreen == $translate.instant('kTapMontage'))
- {
- NVRDataModel.debug("Going to montage");
- $state.go("app.montage");
-
- return;
- }
- else if (ld.onTapScreen == $translate.instant('kTapEvents'))
- {
- NVRDataModel.debug("Going to events");
- $state.go("app.events",
- {
- "id": 0,
- "playEvent": false
- });
- return;
- }
- else // we go to live
- {
- NVRDataModel.debug("Going to live view ");
- $state.go("app.monitors");
- return;
- }
- }
- else {
- /* NVRDataModel.debug ("Inside evaluateTapped, but no tap occured.");
+ NVRDataModel.debug("Going to live view ");
+ $state.go("app.monitors");
+ return;
+ }
+ } else {
+ /* NVRDataModel.debug ("Inside evaluateTapped, but no tap occured.");
NVRDataModel.debug ("This can happen if timing mismatch and holy foo happens");
$state.go("app.montage",
{},
@@ -395,214 +354,188 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
});
return;*/
-
- }
-
- }
-
-
- function unlock(idVerified)
- {
- /*
- idVerified == true means no pin check needed
- == false means check PIN
- */
+ }
+
+ }
+
+
+
+ function unlock(idVerified) {
+ /*
+ idVerified == true means no pin check needed
+ == false means check PIN
+ */
+
+ NVRDataModel.debug("unlock called with check PIN=" + idVerified);
+ if (idVerified || ($scope.pindata.pin == loginData.pinCode)) {
+ NVRDataModel.debug("PIN code entered is correct, or there is no PIN set");
+ $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
+ zmAutoLogin.stop(); //safety
+ zmAutoLogin.start();
+
+ // PIN is fine, or not set so lets login
+ zmAutoLogin.doLogin("<button class='button button-clear' style='line-height: normal; min-height: 0; min-width: 0;color:#fff;' ng-click='$root.cancelAuth()'><i class='ion-close-circled'></i>&nbsp;" + $translate.instant('kAuthenticating') + "...</button>")
+ .then(function (data) // success
+ {
+ NVRDataModel.debug("PortalLogin: auth success");
+
+
+ // $state.go("login" ,{"wizard": false});
+ //login was ok, so get API details
+ NVRDataModel.getAPIversion()
+ .then(function (data) {
+ NVRDataModel.log("Got API version: " + data);
+ $rootScope.apiVersion = data;
+ var ld = NVRDataModel.getLogin();
+ if (NVRDataModel.versionCompare(data, zm.minAppVersion) == -1 && data != "0.0.0") {
+
+ $state.go('app.lowversion', {
+ "ver": data
+ });
+ return;
+ }
+
+ if (NVRDataModel.versionCompare(data, zm.recommendedAppVersion) == -1 && data != "0.0.0") {
+
+ NVRDataModel.hrsSinceChecked("zmVersion")
+ .then(function (val) {
+
+ NVRDataModel.debug("ZM Version nag: Checking " + val + " with " + zm.zmVersionCheckNag);
+ if (val >= zm.zmVersionCheckNag && 0) {
+ //https://api.github.com/repos/zoneminder/zoneminder/releases/latest
+ //tag_name
+ NVRDataModel.updateHrsSinceChecked("zmVersion");
+ $state.go('app.importantmessage', {
+ "ver": data
+ });
+ return;
- NVRDataModel.debug("unlock called with check PIN=" + idVerified);
- if (idVerified || ($scope.pindata.pin == loginData.pinCode))
- {
- NVRDataModel.debug("PIN code entered is correct, or there is no PIN set");
- $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
- zmAutoLogin.stop(); //safety
- zmAutoLogin.start();
-
- // PIN is fine, or not set so lets login
- zmAutoLogin.doLogin("<button class='button button-clear' style='line-height: normal; min-height: 0; min-width: 0;color:#fff;' ng-click='$root.cancelAuth()'><i class='ion-close-circled'></i>&nbsp;" + $translate.instant('kAuthenticating') + "...</button>")
- .then(function(data) // success
- {
- NVRDataModel.debug("PortalLogin: auth success");
-
-
- // $state.go("login" ,{"wizard": false});
- //login was ok, so get API details
- NVRDataModel.getAPIversion()
- .then(function(data)
- {
- NVRDataModel.log("Got API version: " + data);
- $rootScope.apiVersion = data;
- var ld = NVRDataModel.getLogin();
- if (NVRDataModel.versionCompare(data, zm.minAppVersion) == -1 && data != "0.0.0")
- {
-
- $state.go('app.lowversion',
- {
- "ver": data
- });
- return;
- }
-
- if (NVRDataModel.versionCompare(data, zm.recommendedAppVersion) == -1 && data != "0.0.0")
- {
-
- NVRDataModel.hrsSinceChecked("zmVersion")
- .then (function (val) {
-
- NVRDataModel.debug ("ZM Version nag: Checking "+val+" with "+zm.zmVersionCheckNag);
- if (val >=zm.zmVersionCheckNag && 0 ) {
- //https://api.github.com/repos/zoneminder/zoneminder/releases/latest
- //tag_name
- NVRDataModel.updateHrsSinceChecked("zmVersion");
- $state.go('app.importantmessage',
- {
- "ver": data
- });
- return;
-
- }
-
- });
-
- }
-
- /*if (data == "0.0.0")
- {
-
- NVRDataModel.log("API getVersion succeeded but returned 0.0.0 " + JSON.stringify(data));
- NVRDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
- $state.go("login",
- {
- "wizard": false
- });
- return;
-
- }*/
- // coming here means continue
- // console.log (">>>>>>>>>>>>>>>>>>>>>>>>>NEVER");
-
- NVRDataModel.getKeyConfigParams(1);
- NVRDataModel.getTimeZone();
- EventServer.init();
-
- // if push broadcast happens BEFORE this, then no
- // state change will occur here which is good
-
- // if push happens AFTER this, then while going to
- // lastState, it will interrupt and go to onTap
- // (I HOPE...)
- if (!processPush)
- {
- //console.log ("NOTIFICATION TAPPED INSIDE CHECK IS "+$rootScope.tappedNotification);
- var statetoGo = $rootScope.lastState ? $rootScope.lastState : 'app.montage';
- // NVRDataModel.debug("logging state transition");
- NVRDataModel.debug("Transitioning state to: " +
- statetoGo + " with param " + JSON.stringify($rootScope.lastStateParam));
-
- $state.go(statetoGo, $rootScope.lastStateParam);
- return;
-
- }
- // else
- // evaluateTappedNotification();
-
-
- },
- function(error)
- { // API Error
- NVRDataModel.log("API Error handler: going to login getAPI returned error: " + JSON.stringify(error));
- //NVRDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
-
- NVRDataModel.debug("Doing the Aaron Hack after 1 sec....");
- $timeout(function()
- {
- tryLoggingSecondTimeHack()
- .then(function success(s)
- {
- NVRDataModel.log("2nd time login hack worked!, nothing to do");
- NVRDataModel.getTimeZone();
- },
- function error(e)
- {
-
- if ($rootScope.apiValid == true)
- {
- $state.go("app.login",
- {
- "wizard": false
- });
- return;
- }
- else
- {
- $state.go("app.invalidapi");
- return;
- }
-
- });
-
- return;
-
- }, 1000);
-
- });
-
-
-
- },
- // coming here means auth error
- // so go back to login
- function(error)
- {
- NVRDataModel.debug("PortalLogin: error authenticating " +
- JSON.stringify(error));
- if (!$rootScope.userCancelledAuth)
- {
- NVRDataModel.displayBanner('error', ['ZoneMinder authentication failed', 'Please check API settings']);
- $ionicHistory.nextViewOptions(
- {
- disableAnimate: true,
- disableBack: true
- });
- $state.go("app.login",
- {
- "wizard": false
- });
- return;
}
- else
- {
- // if user cancelled auth I guess we go to login
- $rootScope.userCancelledAuth = false;
- $state.go("app.login",
- {
- "wizard": false
+
+ });
+
+ }
+
+ /*if (data == "0.0.0")
+ {
+
+ NVRDataModel.log("API getVersion succeeded but returned 0.0.0 " + JSON.stringify(data));
+ NVRDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
+ $state.go("login",
+ {
+ "wizard": false
+ });
+ return;
+
+ }*/
+ // coming here means continue
+ // console.log (">>>>>>>>>>>>>>>>>>>>>>>>>NEVER");
+
+ NVRDataModel.getKeyConfigParams(1);
+ NVRDataModel.getTimeZone();
+ EventServer.init();
+
+ // if push broadcast happens BEFORE this, then no
+ // state change will occur here which is good
+
+ // if push happens AFTER this, then while going to
+ // lastState, it will interrupt and go to onTap
+ // (I HOPE...)
+ if (!processPush) {
+ //console.log ("NOTIFICATION TAPPED INSIDE CHECK IS "+$rootScope.tappedNotification);
+ var statetoGo = $rootScope.lastState ? $rootScope.lastState : 'app.montage';
+ // NVRDataModel.debug("logging state transition");
+ NVRDataModel.debug("Transitioning state to: " +
+ statetoGo + " with param " + JSON.stringify($rootScope.lastStateParam));
+
+ $state.go(statetoGo, $rootScope.lastStateParam);
+ return;
+
+ }
+ // else
+ // evaluateTappedNotification();
+
+
+ },
+ function (error) { // API Error
+ NVRDataModel.log("API Error handler: going to login getAPI returned error: " + JSON.stringify(error));
+ //NVRDataModel.displayBanner('error', ['ZoneMinder authentication failed']);
+
+ NVRDataModel.debug("Doing the Aaron Hack after 1 sec....");
+ $timeout(function () {
+ tryLoggingSecondTimeHack()
+ .then(function success(s) {
+ NVRDataModel.log("2nd time login hack worked!, nothing to do");
+ NVRDataModel.getTimeZone();
+ },
+ function error(e) {
+
+ if ($rootScope.apiValid == true) {
+ $state.go("app.login", {
+ "wizard": false
});
return;
- }
- });
- }
- else
- {
- $scope.pindata.status = "Invalid PIN";
+ } else {
+ $state.go("app.invalidapi");
+ return;
+ }
- // wobble the input box on error
- var element = angular.element(document.getElementById("pin-box"));
+ });
- element.addClass("animated shake")
- .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',
- function()
- {
- element.removeClass("animated shake");
- });
- }
- }
+ return;
- //-------------------------------------------------------------------------------
- // Controller Main
- //-------------------------------------------------------------------------------
- // console.log("************* ENTERING PORTAL MAIN ");
- NVRDataModel.log("Entering Portal Main");
- var loginData;
- $ionicSideMenuDelegate.canDragContent(true);
+ }, 1000);
+
+ });
+
+
+
+ },
+ // coming here means auth error
+ // so go back to login
+ function (error) {
+ NVRDataModel.debug("PortalLogin: error authenticating " +
+ JSON.stringify(error));
+ if (!$rootScope.userCancelledAuth) {
+ NVRDataModel.displayBanner('error', ['ZoneMinder authentication failed', 'Please check API settings']);
+ $ionicHistory.nextViewOptions({
+ disableAnimate: true,
+ disableBack: true
+ });
+ $state.go("app.login", {
+ "wizard": false
+ });
+ return;
+ } else {
+ // if user cancelled auth I guess we go to login
+ $rootScope.userCancelledAuth = false;
+ $state.go("app.login", {
+ "wizard": false
+ });
+ return;
+ }
+ });
+ } else {
+ $scope.pindata.status = "Invalid PIN";
+
+ // wobble the input box on error
+ var element = angular.element(document.getElementById("pin-box"));
+
+ element.addClass("animated shake")
+ .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',
+ function () {
+ element.removeClass("animated shake");
+ });
+ }
+ }
+
+ //-------------------------------------------------------------------------------
+ // Controller Main
+ //-------------------------------------------------------------------------------
+ // console.log("************* ENTERING PORTAL MAIN ");
+ NVRDataModel.log("Entering Portal Main");
+ var loginData;
+ $ionicSideMenuDelegate.canDragContent(true);
}]);