{"version":3,"sources":["launcher.app.js","launcher.app.states.js","controllers/connectionTestController.js","controllers/handoffController.js","controllers/loginController.js","controllers/passwordRecoveryController.js","controllers/setPasswordController.js","services/connectionService.js","services/launcherService.js"],"names":["angular","module","config","AnalyticsProvider","GoogleAnalyticsConfig","Account","setAccount","trackPages","trackUrlParams","run","Analytics","$transitions","$location","onSuccess","transition","trackPage","path","constant","name","$mdIconProvider","iconSet","materialPalette","theme","primaryPalette","accentPalette","warnPalette","backgroundPalette","$stateProvider","lockerProvider","defaults","driver","namespace","separator","eventsEnabled","extend","$mdThemingProvider","app_brand","fmgApp","$urlRouterProvider","rule","$injector","normalized","toLowerCase","replace","$urlMatcherFactoryProvider","strictMode","state","url","views","primary","templateUrl","controller","window","$scope","$document","connectionService","$state","GetIEVersion","sAgent","navigator","userAgent","Idx","indexOf","parseInt","substring","match","prepare","id","Snap","animateCircle","circle","fade","callback","animate","stroke-dashoffset","mina","easeout","fadeItem","i","stroke-opacity","fadeInItem","resetItem","attr","getTotalLength","bad","displayOptions","connectionBad","breakLoop","blockAnimation","id1","removeClass","id2","good","connectionGood","doLoop","c","showTick","showCross","OnInit","gateway","then","response","status","errorResponse","twoStepAnimation","_inId1","_inId2","retry","go","reload","authenticationService","$stateParams","screenBlockService","stringToken","decodeURIComponent","tkn","token","JSON","parse","trackEvent","identity","AccountName","pushToken","tenantSetupService","user","isLoggedIn","getSettings","data","TenantId","AuthenticationRelay","isDomainLoginActivated","onLogin","forcePasswordReset","resetToken","clearScreen","failedLogin","code","onFailedLogin","wasConnectionError","signin","loginForm","username","$valid","blockScreen","login","ntlmLogin","logout","accountManagementService","requestSent","tenantId","initForgottenPassword","form","initForgotPassword","$modelValue","locker","showCompletedMessage","errorMessage","invalidCode","getToken","loginWithCode","resetPassword","resetCode","statusCode","checkPassword","pwd","tryPassword","setPassword","password1","password2","complexResult","checkComplexity","displayName","put","Message","changePassword","cancelFromSetPassword","cancelFromChangePassword","length","hasUpperCase","test","hasLowerCase","hasNumbers","hasNonalphas","points","factory","$http","app_env","svc","get","baseUrl","acctMgtService","authCode","newPassword","payload","Code","NewPassword","post","getAuthHeader","oldPassword","OldPassword","emailAddress","Email","Tenant"],"mappings":"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","file":"im-launcherScripts.js","sourcesContent":["angular\r\n .module(\"FmgProduceSuite-Launcher\", [\r\n \"ngMaterial\",\r\n \"ngMessages\",\r\n \"ui.router\",\r\n \"angular-google-analytics\",\r\n \"ngAnimate\",\r\n \"angular-locker\",\r\n \"common-services\"\r\n ])\r\n .config(function(AnalyticsProvider, GoogleAnalyticsConfig) {\r\n if (GoogleAnalyticsConfig.Account != \"NOT-USED\") {\r\n AnalyticsProvider.setAccount(GoogleAnalyticsConfig.Account)\r\n .trackPages(true)\r\n .trackUrlParams(true);\r\n }\r\n })\r\n .run([\r\n \"Analytics\",\r\n \"$transitions\",\r\n \"$location\",\r\n function(Analytics, $transitions, $location) {\r\n $transitions.onSuccess({}, function(transition) {\r\n Analytics.trackPage($location.path());\r\n });\r\n }\r\n ])\r\n .constant(\"appProduct\", {\r\n name: \"launcher\"\r\n })\r\n .run(function(Analytics) {})\r\n .config([\r\n \"$mdIconProvider\",\r\n function($mdIconProvider) {\r\n //https://github.com/nkoterba/material-design-iconsets\r\n $mdIconProvider\r\n .iconSet(\"action\", \"../assets/icon-sets/action-icons.svg\", 24)\r\n .iconSet(\"alert\", \"../assets/icon-sets/alert-icons.svg\", 24)\r\n .iconSet(\"av\", \"../assets/icon-sets/av-icons.svg\", 24)\r\n .iconSet(\"communication\", \"../assets/icon-sets/communication-icons.svg\", 24)\r\n .iconSet(\"content\", \"../assets/icon-sets/content-icons.svg\", 24)\r\n .iconSet(\"device\", \"../assets/icon-sets/device-icons.svg\", 24)\r\n .iconSet(\"editor\", \"../assets/icon-sets/editor-icons.svg\", 24)\r\n .iconSet(\"file\", \"../assets/icon-sets/file-icons.svg\", 24)\r\n .iconSet(\"hardware\", \"../assets/icon-sets/hardware-icons.svg\", 24)\r\n .iconSet(\"icons\", \"../assets/icon-sets/icons-icons.svg\", 24)\r\n .iconSet(\"image\", \"../assets/icon-sets/image-icons.svg\", 24)\r\n .iconSet(\"maps\", \"../assets/icon-sets/maps-icons.svg\", 24)\r\n .iconSet(\"navigation\", \"../assets/icon-sets/navigation-icons.svg\", 24)\r\n .iconSet(\"notification\", \"../assets/icon-sets/notification-icons.svg\", 24)\r\n .iconSet(\"social\", \"../assets/icon-sets/social-icons.svg\", 24)\r\n .iconSet(\"toggle\", \"../assets/icon-sets/toggle-icons.svg\", 24);\r\n }\r\n ])\r\n .constant(\r\n \"app_brand\",\r\n (function() {\r\n //Used to Set Branding Variables\r\n //primaryPalette: 'indigo',\r\n return {\r\n materialPalette: {\r\n theme: \"default\",\r\n primaryPalette: \"indigo\",\r\n accentPalette: \"green\",\r\n warnPalette: \"red\",\r\n backgroundPalette: \"grey\"\r\n }\r\n };\r\n })()\r\n )\r\n .config(function($stateProvider) {})\r\n .config([\r\n \"lockerProvider\",\r\n function config(lockerProvider) {\r\n lockerProvider.defaults({\r\n driver: \"session\",\r\n namespace: \"fmg\",\r\n separator: \".\",\r\n eventsEnabled: false,\r\n extend: {}\r\n });\r\n }\r\n ])\r\n .config(function($mdThemingProvider, app_brand) {\r\n $mdThemingProvider\r\n .theme(app_brand.materialPalette.theme)\r\n .primaryPalette(app_brand.materialPalette.primaryPalette)\r\n .accentPalette(app_brand.materialPalette.accentPalette)\r\n .warnPalette(app_brand.materialPalette.warnPalette)\r\n .backgroundPalette(app_brand.materialPalette.backgroundPalette);\r\n });\r\n","(function (angular) {\r\n \"use strict\";\r\n var fmgApp = angular.module('FmgProduceSuite-Launcher');\r\n\r\n fmgApp.config(function ($urlRouterProvider) {\r\n // Here's an example of how you might allow case insensitive urls\r\n // Note that this is an example, and you may also use\r\n // $urlMatcherFactory.caseInsensitive(true); for a similar result.\r\n $urlRouterProvider.rule(function ($injector, $location) {\r\n //what this function returns will be set as the $location.url\r\n var path = $location.path(), normalized = path.toLowerCase();\r\n if (path != normalized) {\r\n //instead of returning a new url string, I'll just change the $location.path directly so I don't have to worry about constructing a new url string and so a new state change is not triggered\r\n $location.replace().path(normalized);\r\n }\r\n // because we've returned nothing, no state change occurs\r\n });\r\n });\r\n\r\n fmgApp.config(['$stateProvider', '$urlMatcherFactoryProvider', function ($stateProvider, $urlMatcherFactoryProvider) {\r\n\r\n $urlMatcherFactoryProvider.strictMode(false);\r\n //$urlMatcherFactory.caseInsensitive(true);\r\n\r\n $stateProvider.state('default', {\r\n url: \"\",\r\n views: {\r\n 'primary': {\r\n templateUrl: 'launcher-app/parts/_login.html',\r\n controller: 'LoginController'\r\n }\r\n }\r\n }).state('set', {\r\n url: \"/set?code\",\r\n views: {\r\n 'primary': {\r\n templateUrl: 'launcher-app/parts/_setPassword.html',\r\n controller: 'SetPasswordController'\r\n }\r\n }\r\n }).state('list', {\r\n url: \"/list\",\r\n views: {\r\n 'primary': {\r\n templateUrl: 'launcher-app/parts/_products.html',\r\n controller: 'ProductsController'\r\n }\r\n }\r\n }).state('connectionTest', {\r\n url: \"/testmyconnection\",\r\n views: {\r\n 'primary': {\r\n templateUrl: 'launcher-app/parts/_connectionTest.html',\r\n controller: 'ConnectionTestController'\r\n }\r\n }\r\n }).state('forgotPassword', {\r\n url: \"/forgotpassword\",\r\n views: {\r\n 'primary': {\r\n templateUrl: 'launcher-app/parts/_forgotPassword.html',\r\n controller: 'PasswordRecoveryController'\r\n }\r\n }\r\n }).state('forgotPasswordCode', {\r\n url: \"/forgotpassword/code?code\",\r\n views: {\r\n 'primary': {\r\n templateUrl: 'launcher-app/parts/_setPassword.html',\r\n controller: 'SetPasswordController'\r\n }\r\n }\r\n }).state('handoff', {\r\n url: \"/handoff?tkn\",\r\n views: {\r\n 'primary': {\r\n templateUrl: 'launcher-app/parts/_handoff.html',\r\n controller: 'HandoffController'\r\n }\r\n }\r\n });\r\n }]);\r\n\r\n\r\n\r\n})(window.angular);\r\n\r\n\r\n","(function (angular) {\r\n \"use strict\";\r\n var fmgApp = angular.module('FmgProduceSuite-Launcher');\r\n\r\n fmgApp.controller('ConnectionTestController', function ($scope, $document, connectionService, $state) {\r\n\r\n function GetIEVersion() {\r\n var sAgent = window.navigator.userAgent;\r\n var Idx = sAgent.indexOf(\"MSIE\");\r\n\r\n // If IE, return version number.\r\n if (Idx > 0)\r\n return parseInt(sAgent.substring(Idx + 5, sAgent.indexOf(\".\", Idx)));\r\n\r\n // If IE 11 then look for Updated user agent string.\r\n else if (!!navigator.userAgent.match(/Trident\\/7\\./))\r\n return 11;\r\n\r\n else\r\n return 0; //It is not IE\r\n }\r\n\r\n\r\n var prepare = function (id) {\r\n return Snap(\"#\" + id);\r\n };\r\n\r\n var animateCircle = function (circle, fade, callback) {\r\n\r\n circle.animate(\r\n {\r\n 'stroke-dashoffset': 0\r\n }, 1000, mina.easeout, function () {\r\n if (fade) {\r\n fadeItem(circle, callback);\r\n } else {\r\n callback();\r\n }\r\n\r\n });\r\n };\r\n\r\n var fadeItem = function (i, callback) {\r\n i.animate({\r\n 'stroke-opacity': 0\r\n }, 400, callback);\r\n };\r\n var fadeInItem = function (i, callback) {\r\n i.animate({\r\n 'stroke-opacity': 1\r\n }, 200, callback);\r\n };\r\n\r\n var resetItem = function (i) {\r\n\r\n i.attr('stroke-dasharray', i.getTotalLength());\r\n i.attr('stroke-dashoffset', i.getTotalLength());\r\n i.attr('stroke-opacity', 1);\r\n };\r\n\r\n\r\n $scope.bad = function () {\r\n $scope.displayOptions.connectionBad = true;\r\n $scope.displayOptions.breakLoop = true;\r\n\r\n if ($scope.blockAnimation === true) {\r\n\r\n var id1 = prepare('cross_seg1');\r\n id1.attr('stroke-dasharray', 0);\r\n id1.attr('stroke-dashoffset', 0);\r\n id1.attr('stroke-opacity', 1);\r\n id1.removeClass('hidden');\r\n\r\n var id2 = prepare('cross_seg2');\r\n id2.attr('stroke-dasharray', 0);\r\n id2.attr('stroke-dashoffset', 0);\r\n id2.attr('stroke-opacity', 1);\r\n id2.removeClass('hidden');\r\n\r\n }\r\n };\r\n $scope.good = function () {\r\n $scope.displayOptions.connectionGood = true;\r\n $scope.displayOptions.breakLoop = true;\r\n\r\n if ($scope.blockAnimation === true) {\r\n\r\n var id1 = prepare('minor');\r\n id1.removeClass('hidden');\r\n id1.attr('stroke-dasharray', 0);\r\n id1.attr('stroke-dashoffset', 0);\r\n id1.attr('stroke-opacity', 1);\r\n\r\n\r\n var id2 = prepare('major');\r\n id2.removeClass('hidden');\r\n id2.attr('stroke-dasharray', 0);\r\n id2.attr('stroke-dashoffset', 0);\r\n id2.attr('stroke-opacity', 1);\r\n\r\n\r\n }\r\n };\r\n\r\n $scope.displayOptions = {};\r\n\r\n $scope.displayOptions.breakLoop = false;\r\n $scope.displayOptions.connectionGood = false;\r\n var doLoop = function () {\r\n\r\n animateCircle(c, true, function () {\r\n if ($scope.displayOptions.breakLoop === false) {\r\n resetItem(c);\r\n doLoop();\r\n } else {\r\n fadeInItem(c, function () {\r\n if ($scope.displayOptions.connectionGood === true) {\r\n showTick();\r\n } else if ($scope.displayOptions.connectionBad === true) {\r\n showCross();\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n $scope.blockAnimation = false;\r\n var c = prepare('Shape1');\r\n $scope.OnInit = function () {\r\n\r\n $scope.blockAnimation = (GetIEVersion() === 10 || GetIEVersion() === 11);\r\n\r\n //animateTarget(c,1000,function(){\r\n //});\r\n\r\n connectionService.gateway().then(function (response) {\r\n if (response.status === 200) {\r\n return $scope.good();\r\n }\r\n\r\n return $scope.bad();\r\n\r\n }, function (errorResponse) {\r\n return $scope.bad();\r\n });\r\n\r\n if ($scope.blockAnimation === false) {\r\n resetItem(c);\r\n doLoop();\r\n }\r\n\r\n };\r\n\r\n var showTick = function () {\r\n twoStepAnimation('minor', 'major');\r\n };\r\n\r\n var showCross = function () {\r\n twoStepAnimation('cross_seg1', 'cross_seg2');\r\n };\r\n\r\n var twoStepAnimation = function (_inId1, _inId2) {\r\n\r\n var id2 = prepare(_inId2);\r\n resetItem(id2);\r\n\r\n\r\n var id1 = prepare(_inId1);\r\n resetItem(id1);\r\n id1.removeClass('hidden');\r\n\r\n id1.animate(\r\n {\r\n 'stroke-dashoffset': 0\r\n }, 300, mina.easeout, function () {\r\n\r\n id2.removeClass('hidden');\r\n id2.animate(\r\n {\r\n 'stroke-dashoffset': 0\r\n }, 300, mina.easeout, function () {\r\n\r\n });\r\n });\r\n };\r\n\r\n $scope.retry = function () {\r\n $state.go('connectionTest', null, {\r\n reload: true\r\n });\r\n };\r\n\r\n });\r\n})(window.angular);","(function (angular) {\r\n \"use strict\";\r\n var fmgApp = angular.module('FmgProduceSuite-Launcher');\r\n\r\n fmgApp.controller('HandoffController', function ($scope,$state, authenticationService, $stateParams, screenBlockService,Analytics) {\r\n\r\n\r\n var stringToken = decodeURIComponent($stateParams.tkn);\r\n var token = JSON.parse(stringToken);\r\n\r\n\r\n Analytics.trackEvent('handoff', token.identity.AccountName);\r\n\r\n authenticationService.pushToken(stringToken);\r\n\r\n $state.go('list');\r\n });\r\n}) ( window.angular );","(function (angular) {\r\n \"use strict\";\r\n var fmgApp = angular.module('FmgProduceSuite-Launcher');\r\n\r\n fmgApp.controller('LoginController', function ($scope, authenticationService, $stateParams, $state, screenBlockService,Analytics,tenantSetupService) {\r\n\r\n $scope.user = {};\r\n\r\n $scope.OnInit = function(){\r\n if(authenticationService.isLoggedIn()){\r\n $state.go('list');\r\n }\r\n\r\n tenantSetupService.getSettings().then(function(response){\r\n if(response.data.TenantId === 1 && response.data.AuthenticationRelay){\r\n $scope.isDomainLoginActivated = true;\r\n }\r\n })\r\n };\r\n\r\n var onLogin = function(forcePasswordReset,resetToken){\r\n screenBlockService.clearScreen();\r\n\r\n if (authenticationService.isLoggedIn()) {\r\n\r\n $scope.user.failedLogin = false;\r\n\r\n if (forcePasswordReset === true) {\r\n\r\n $state.go('set', {\r\n code: resetToken\r\n });\r\n }\r\n else {\r\n\r\n $state.go('list');\r\n\r\n //var targetState = 'default';\r\n //var params = null;\r\n //if ($stateParams.redirectTo) {\r\n //\r\n // params = $stateParams.redirectToParams;\r\n // targetState = $stateParams.redirectTo;\r\n //}\r\n //\r\n //if (!params || params === null) {\r\n // $state.go(targetState);\r\n //} else {\r\n // $state.go(targetState, JSON.parse(params));\r\n //}\r\n }\r\n }\r\n };\r\n\r\n var onFailedLogin = function(wasConnectionError){\r\n\r\n screenBlockService.clearScreen();\r\n\r\n $scope.user.failedLogin = true;\r\n\r\n };\r\n\r\n\r\n $scope.signin = function(loginForm) {\r\n\r\n //Cat, action, opt_label, opt_value, opt_non_interaction\r\n Analytics.trackEvent('loginAttempt', $scope.user.username);\r\n\r\n if(loginForm.$valid) {\r\n screenBlockService.blockScreen();\r\n\r\n authenticationService.login($scope.user, onLogin,onFailedLogin);\r\n }\r\n };\r\n\r\n $scope.ntlmLogin = function(){\r\n authenticationService.ntlmLogin(onLogin,onFailedLogin)\r\n };\r\n\r\n $scope.logout = function(){\r\n authenticationService.logout();\r\n };\r\n\r\n });\r\n}) ( window.angular );","(function (angular) {\r\n \"use strict\";\r\n var fmgApp = angular.module('FmgProduceSuite-Launcher');\r\n\r\n fmgApp.controller('PasswordRecoveryController', function ($scope, $state, screenBlockService, authenticationService,accountManagementService,tenantSetupService) {\r\n\r\n $scope.requestSent = false;\r\n\r\n //Invoke\r\n (function(){\r\n tenantSetupService.getSettings().then(function(response){\r\n $scope.tenantId = response.data.TenantId;\r\n },function(errorResponse){\r\n console.log('Error Getting Tenant Settings');\r\n });\r\n })();\r\n\r\n $scope.initForgottenPassword = function(form){\r\n\r\n if(form.$valid) {\r\n screenBlockService.blockScreen();\r\n\r\n //How to get Tenant?\r\n accountManagementService.initForgotPassword(form.username.$modelValue, $scope.tenantId).then(function (response) {\r\n\r\n $scope.requestSent = true;\r\n console.log('initForgotPassword-Result', response.data);\r\n screenBlockService.clearScreen();\r\n\r\n }, function (errorResponse) {\r\n\r\n console.log('initForgotPassword-Error', errorResponse);\r\n screenBlockService.clearScreen();\r\n\r\n });\r\n }\r\n }\r\n\r\n });\r\n})(window.angular);","(function (angular) {\r\n \"use strict\";\r\n var fmgApp = angular.module('FmgProduceSuite-Launcher');\r\n\r\n fmgApp.controller('SetPasswordController', function ($scope, $state, $stateParams,Analytics, accountManagementService, screenBlockService, authenticationService,locker) {\r\n $scope.showCompletedMessage = false;\r\n $scope.errorMessage = null;\r\n\r\n $scope.user = {};\r\n $scope.invalidCode = false;\r\n\r\n $scope.OnInit = function(){\r\n $scope.user.code = $stateParams.code;\r\n // $scope.user.displayName = authenticationService.getToken().identity.displayName;\r\n\r\n if(!authenticationService.getToken()){\r\n console.log('Doing Login with Code');\r\n\r\n authenticationService.loginWithCode($stateParams.code,function(resetPassword,resetCode) {\r\n $scope.user.code = resetCode;\r\n },function(statusCode){\r\n $scope.invalidCode = true;\r\n });\r\n }\r\n };\r\n\r\n $scope.checkPassword = function(pwd){\r\n authenticationService.tryPassword(pwd).then(function(response){\r\n // response.data.Ok;\r\n // response.data.Reason;\r\n },function(errorResponse){\r\n\r\n });\r\n };\r\n\r\n $scope.setPassword = function (form) {\r\n\r\n\r\n $scope.errorMessage = null;\r\n\r\n if (form.$valid) {\r\n if ($scope.user.password1 !== $scope.user.password2) {\r\n $scope.errorMessage = \"The new password fields do not match. Please check and try again.\";\r\n return;\r\n }\r\n\r\n var complexResult = $scope.checkComplexity($scope.user.password1);\r\n if(complexResult){\r\n $scope.errorMessage = complexResult;\r\n return;\r\n }\r\n\r\n Analytics.trackEvent('setPassword', $scope.user.displayName);\r\n\r\n screenBlockService.blockScreen();\r\n\r\n accountManagementService.setPassword($scope.user.code, $scope.user.password1)\r\n .then(function (response) {\r\n\r\n screenBlockService.clearScreen();\r\n\r\n locker.put('token', response.data);\r\n $state.go('list');\r\n\r\n }, function (errorResponse) {\r\n $scope.errorMessage = 'Failed To Set Password';\r\n if(errorResponse.data && errorResponse.data.Message) {\r\n $scope.errorMessage = errorResponse.data.Message;\r\n }\r\n\r\n screenBlockService.clearScreen();\r\n });\r\n }\r\n };\r\n\r\n $scope.changePassword = function (form) {\r\n $scope.errorMessage = null;\r\n\r\n if (form.$valid) {\r\n if ($scope.user.password1 !== $scope.user.password2) {\r\n $scope.errorMessage = \"New Password does not match the Repeated New Password. Please check and try again.\";\r\n return;\r\n }\r\n\r\n screenBlockService.blockScreen();\r\n\r\n accountManagementService.setPassword($scope.code, $scope.user.password1)\r\n .then(function (response) {\r\n screenBlockService.clearScreen();\r\n alert('Your Password has been reset.');\r\n $state.go('default');\r\n }, function (errorResponse) {\r\n screenBlockService.clearScreen();\r\n alert('Error Connecting to Service');\r\n });\r\n }\r\n };\r\n\r\n $scope.cancelFromSetPassword = function(){\r\n authenticationService.logout();\r\n };\r\n\r\n $scope.cancelFromChangePassword = function(){\r\n $state.go('default');\r\n };\r\n\r\n $scope.checkComplexity = function(pwd){\r\n\r\n if(pwd){\r\n var length = pwd.length >= 9;\r\n\r\n var hasUpperCase = /[A-Z]/.test(pwd);\r\n var hasLowerCase = /[a-z]/.test(pwd);\r\n var hasNumbers = /\\d/.test(pwd);\r\n var hasNonalphas = /\\W/.test(pwd);\r\n\r\n if(!length){\r\n return 'Passwords must have a minimum length of 9 characters';\r\n }\r\n\r\n var points = 0;\r\n if(hasUpperCase){\r\n points = points + 1;\r\n }\r\n if(hasLowerCase){\r\n points = points + 1;\r\n }\r\n if(hasNumbers){\r\n points = points + 1;\r\n }\r\n if(hasNonalphas){\r\n points = points + 1;\r\n }\r\n if(points < 3){\r\n return 'Password Must contain a mixture of at least three of the following - Uppercase, lowercase, numerals and non-alphanumeric ’special characters’'\r\n }\r\n\r\n return null;\r\n\r\n }else{\r\n return 'No Password Set';\r\n }\r\n\r\n }\r\n\r\n });\r\n})(window.angular);","(function (angular) {\r\n \"use strict\";\r\n var fmgApp = angular.module('FmgProduceSuite-Launcher');\r\n\r\n fmgApp.factory('connectionService', function ($http,app_env) {\r\n\r\n var svc = {};\r\n\r\n svc.gateway = function(){\r\n return $http.get(app_env.baseUrl+'alive');\r\n };\r\n\r\n return svc;\r\n });\r\n\r\n\r\n}) (window.angular);","(function (angular) {\r\n \"use strict\";\r\n var fmgApp = angular.module('FmgProduceSuite-Launcher');\r\n\r\n fmgApp.factory('launcherService', function ($http) {\r\n\r\n var svc = {};\r\n\r\n return svc;\r\n });\r\n\r\n fmgApp.factory('accountManagementService', function($http,app_env, authenticationService) {\r\n\r\n var acctMgtService;\r\n acctMgtService = {};\r\n\r\n acctMgtService.setPassword = function(authCode,newPassword){\r\n var payload = {};\r\n payload.Code = authCode;\r\n payload.NewPassword = newPassword;\r\n\r\n //Secure Post\r\n return $http.post(app_env.baseUrl+'AUTH/api/authentication/setpassword',payload,authenticationService.getAuthHeader());\r\n };\r\n acctMgtService.changePassword = function(oldPassword,newPassword){\r\n var payload = {};\r\n payload.OldPassword = oldPassword;\r\n payload.NewPassword = newPassword;\r\n\r\n //Secure Post\r\n return $http.post(app_env.baseUrl+'AUTH/api/authentication/changepassword',payload,authenticationService.getAuthHeader());\r\n };\r\n acctMgtService.initForgotPassword = function(emailAddress,tenantId){\r\n var payload = {\r\n Email : emailAddress,\r\n Tenant: tenantId\r\n };\r\n return $http.post(app_env.baseUrl+'AUTH/v2/logon/forgottenpassword',payload);\r\n };\r\n\r\n\r\n\r\n return acctMgtService;\r\n });\r\n\r\n}) (window.angular);"],"sourceRoot":"/source/"}