loginCtrl.js 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608
  1. app.controller('LoginCtrl', ['$rootScope', '$scope', '$state', '$translate', '$localStorage', '$cookieStore', '$auth', '$window', '$document', '$timeout', '$filter', '$http', 'cfpLoadingBar', 'Restangular', 'api_login', 'api_is_category', 'SweetAlert', 'api_msg',
  2. function ($rootScope, $scope, $state, $translate, $localStorage, $cookieStore, $auth, $window, $document, $timeout, $filter, $http, cfpLoadingBar, Restangular, api_login, api_is_category, SweetAlert, api_msg) {
  3. $rootScope.app.layout.isNavbarFixed = false;
  4. $rootScope.app.layout.isSidebarFixed = false;
  5. //判断项目归属 start
  6. //因项目众多,前端为了加以区分,所以用域名加以判断,后期有更好的方式可以自行修改
  7. // 中南财大
  8. $rootScope.isZncd = document.domain === 'itsm.zuel.edu.cn';
  9. // 华科
  10. $rootScope.isHk = document.domain === '192.168.3.110';
  11. //判断项目归属 end
  12. // 是否单点登录
  13. $scope.isSSo = location.search.length > 0;
  14. //初始化,获取版本类别,处理人/处理科室-seimin
  15. $scope.isCategoryHandle = function () {
  16. api_is_category.isCategory({ "idx": 0, "sum": 1000 })
  17. .then(function (res) {
  18. if (res.status == 200) {
  19. //存储报修主体到缓存
  20. var list = res.list;
  21. var repairMain = list.find((v) => v.keyconfig == "repairMain"); //报修主体
  22. var incidentWithConsumable = list.find(
  23. (v) => v.keyconfig == "incidentWithConsumable"
  24. ); //是否绑定耗材
  25. var wxIncidentWithCmdb = list.find(
  26. (v) => v.keyconfig == "wxIncidentWithCmdb"
  27. ); //是否绑定资产
  28. sessionStorage.setItem(
  29. "repair_main",
  30. JSON.stringify(repairMain)
  31. );
  32. sessionStorage.setItem(
  33. "incidentWithConsumable",
  34. incidentWithConsumable.valueconfig
  35. );
  36. sessionStorage.setItem(
  37. "wxIncidentWithCmdb",
  38. wxIncidentWithCmdb.valueconfig
  39. );
  40. }
  41. })
  42. .catch(function (err) {
  43. console.log(err)
  44. })
  45. };
  46. $scope.loginBtn = {
  47. closeEl: '.close',
  48. modal: {
  49. templateUrl: 'assets/views/loginform.html',
  50. postion: 'center'
  51. }
  52. };
  53. // $scope.jry_ceshi=function(){
  54. // // alert('ok')
  55. // console.log('ok')
  56. // }
  57. $scope.choicevalue = 1
  58. $scope.choicelogin = function (e) {
  59. $scope.choicevalue = e;
  60. }
  61. $scope.login = function () {
  62. angular.element('.el-login').trigger('click');
  63. }
  64. // $scope.login();
  65. $scope.close = function () {
  66. console.log(angular.element('.el-login'));
  67. angular.element('.el-login').trigger('click');
  68. }
  69. $scope.loginForm = {
  70. username: "",
  71. // account:"",
  72. password: ""
  73. }
  74. $rootScope.app.isLoginFixed = true;
  75. $scope.validateUsername = function () {
  76. return $scope.loginForm.username == null || $scope.loginForm.username == "";
  77. }
  78. $scope.validatePassword = function () {
  79. return $scope.loginForm.password == null || $scope.loginForm.password == "";
  80. }
  81. $scope.formValid = function () {
  82. return $scope.loginForm.username == null || $scope.loginForm.username == "" || $scope.loginForm.password == null || $scope.loginForm.password == "";
  83. }
  84. $rootScope.$on('auth:invalid', function (ev) {
  85. $state.go('login.signin');
  86. });
  87. $scope.licensePassShow = false;
  88. $scope.licenseSoonShow = false;
  89. $scope.licenseTrialShow = false;
  90. $scope.licenseSurplusTime = 0;
  91. $scope.licensePassSub = function () {
  92. if ($scope.licenseIsAdmin) {
  93. $scope.licensePassShow = false;
  94. $state.go('login.license');
  95. } else {
  96. $scope.licensePassShow = false;
  97. }
  98. }
  99. $scope.licenseSoonShowSub = function () {
  100. $scope.licenseSoonShow = false;
  101. $rootScope.getpending();
  102. $state.go('app.dashboard');
  103. }
  104. $scope.licenseTrialSub = function () {
  105. $scope.licenseTrialShow = false;
  106. $rootScope.getpending();
  107. $state.go('app.dashboard');
  108. }
  109. $scope.licenseTrialActivation = function () {
  110. $state.go('login.license');
  111. }
  112. $scope.licenseIsAdmin = "";
  113. // 未读消息数量
  114. // $scope.noReadData=0
  115. // $rootScope.getMsgNum=function(id){
  116. // api_msg.msgDataList({idx: 0, sum: 1, messageStation: {readStatus: 0, userId: id}}).then(function(data) {
  117. // if (data.status == 200) {
  118. // $rootScope.noReadData=data.totalNum
  119. // } else {
  120. // $rootScope.noReadData=0
  121. // }
  122. // return $rootScope.noReadData
  123. // })
  124. // }
  125. //登录
  126. $scope.handleLoginClick = function (e) {
  127. // api_login.getLicense({}).then(function(res){
  128. // $auth.submitLogin($scope.loginForm)
  129. // var ssoStr = location.search.replace('?', '').split('&')[0].split('=')[1];
  130. var ssoStr = '';
  131. var ssoJson;
  132. if ($scope.isSSo) {
  133. ssoStr = location.search.replace('?', '').split('&')[0].split('=')[1];
  134. ssoStr = Base64.decode(decodeURIComponent(ssoStr));
  135. ssoJson = JSON.parse(ssoStr);
  136. }
  137. var postData = $scope.isSSo ? { username: ssoJson.a, password: ssoJson.u, t: false } : $scope.loginForm;
  138. api_login.login(postData)
  139. .then(function (resp) {
  140. console.log(resp);
  141. if ($scope.isSSo) {
  142. localStorage.setItem('isSSo', '1');//单点登录
  143. } else {
  144. localStorage.setItem('isSSo', '0');//正常登录
  145. }
  146. if (resp.state == "10000") {//license失效
  147. // console.log($scope.loginForm);
  148. if (resp.role) {
  149. for (var i = 0; i < resp.role.length; i++) {
  150. if (resp.role[i] == "admin general" || resp.role[i] == "admin") {
  151. $scope.licenseIsAdmin = true
  152. }
  153. }
  154. }
  155. if ($scope.licenseIsAdmin) {
  156. $scope.licensePassShow = true;
  157. // $state.go('login.license');
  158. } else {
  159. $scope.licensePassShow = true
  160. }
  161. } else {
  162. api_login.getLicense({}).then(function (res) {
  163. console.log(res);
  164. var subIsAdmin = "";
  165. if (resp.data && resp.data.user && resp.data.user.role) {
  166. for (var i = 0; i < resp.data.user.role.length; i++) {
  167. if (resp.data.user.role[i].rolecode == "admin") {
  168. var subIsAdmin = true
  169. }
  170. }
  171. }
  172. $scope.isCategoryHandle();//判断报修主体
  173. $scope.featureSum = res.featureSum;
  174. $scope.licenseSurplusTime = Number(res.featureSum) - Number(res.featureAlready);
  175. if (res.type == 1 && subIsAdmin) {
  176. $scope.licenseTrialShow = true;
  177. resp.data.user["menu"] = resp.data.menu;
  178. localStorage.setItem("jry_user", JSON.stringify(resp.data.user));
  179. localStorage.setItem("login_requester", JSON.stringify(resp.data.requester));
  180. $rootScope.user = JSON.parse(localStorage.getItem("jry_user"));
  181. $rootScope.login_requester = JSON.parse(localStorage.getItem("login_requester"));
  182. $rootScope.getMsgNum($rootScope.user.id)
  183. $rootScope.isFuwutai = false;//服务台人员和服务台经理才显示右上角呼叫功能
  184. if ($rootScope.user) {
  185. if($rootScope.user.role&&angular.isArray($rootScope.user.role)&&$rootScope.user.role.length){
  186. $rootScope.isFuwutai = $rootScope.user.role.some(function(v){
  187. return v.rolecode == 'call center';
  188. })
  189. }else{
  190. $rootScope.isFuwutai = false;
  191. }
  192. }
  193. if($rootScope.isFuwutai){
  194. localStorage.setItem("isFuwutai", 'true');
  195. }else{
  196. localStorage.removeItem('isFuwutai');
  197. }
  198. // $rootScope.userMenus = JSON.parse(localStorage.getItem("jry_user")).menu;
  199. var allJurisdiction = JSON.parse(localStorage.getItem("jry_user")).menu;
  200. var onlyMenu = [];
  201. // console.log(allJurisdiction);
  202. for (var i = 0; i < allJurisdiction.length; i++) {
  203. if (allJurisdiction[i].event == "1") {
  204. onlyMenu.push(allJurisdiction[i])
  205. }
  206. }
  207. // console.log(onlyMenu);
  208. $rootScope.userMenus = onlyMenu;
  209. var getMenus = function () {
  210. function convertListToTree(data, treeMap) {
  211. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  212. var root = null; //Initially set our loop to null
  213. var parentNode = null;
  214. //loop over data
  215. for (var i = 0; i < data.length; i++) {
  216. // data[i].id = Number(data[i].id);
  217. var datum = data[i];
  218. //each node will have children, so let's give it a "children" poperty
  219. datum.children = [];
  220. //add an entry for this node to the map so that any future children can
  221. //lookup the parent
  222. idToNodeMap[datum.id] = datum;
  223. //Does this node have a parent?
  224. if (typeof datum.parentid === "undefined" || datum.parentid == null) {
  225. //Doesn't look like it, so this node is the root of the tree
  226. root = datum;
  227. treeMap[datum.id] = root;
  228. } else {
  229. //This node has a parent, so let's look it up using the id
  230. parentNode = idToNodeMap[datum.parentid];
  231. //We don't need this property, so let's delete it.
  232. //delete datum.parentid;
  233. //Let's add the current node as a child of the parent node.
  234. parentNode.children.push(datum);
  235. }
  236. }
  237. return root;
  238. }
  239. function convertParentToChildList(data) {
  240. var treeMap = {};
  241. var list = [];
  242. convertListToTree(data, treeMap);
  243. angular.forEach(treeMap, function (item) {
  244. list.push(item);
  245. });
  246. list = window._.sortBy(list, function (o) {
  247. return o.orders;
  248. });
  249. return list;
  250. }
  251. //if(userMenus.length==0){
  252. var userMenus = [];
  253. var idMapMenu = {};
  254. if ($rootScope.user) {
  255. if ($rootScope.user.menu) {
  256. console.log($rootScope.user.menu);
  257. var allJurisdiction2 = $rootScope.user.menu;
  258. var onlyMenu2 = [];
  259. for (var i = 0; i < allJurisdiction2.length; i++) {
  260. if (allJurisdiction2[i].event == "1") {
  261. onlyMenu2.push(allJurisdiction2[i])
  262. }
  263. }
  264. // userMenus = convertParentToChildList($rootScope.user.menu);
  265. userMenus = convertParentToChildList(onlyMenu2);
  266. }
  267. }
  268. //}
  269. $rootScope.userMenus = userMenus;
  270. if ($rootScope.userMenus.length > 0) {
  271. // getpending();
  272. // setInterval(getpending, 30000);
  273. }
  274. return userMenus;
  275. }
  276. getMenus();
  277. } else {
  278. if ($scope.licenseSurplusTime < 7 && subIsAdmin) {
  279. $scope.licenseSoonShow = true;
  280. // if (resp.error != 501 && resp.error != 400) {
  281. // $state.go('app.knowledge.forum');
  282. // $rootScope.app.isLoginFixed = false;
  283. // // console.log(resp);
  284. // // api_wechatfile.getDictionary({ "type": "list", "key": "hjzx_cornet" }).then(function(data) {
  285. // // $scope.runNumber = data;
  286. // // $scope.phone = $scope.runNumber[0].name;
  287. // // $rootScope.phoneChange($scope.phone);
  288. // // })
  289. // } else {
  290. // resp.error = "";
  291. // $scope.loginForm.password = "";
  292. // SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  293. // // $rootScope.user=resp.user;
  294. // // $rootScope.menu=resp.menu;
  295. // }
  296. resp.data.user["menu"] = resp.data.menu;
  297. localStorage.setItem("jry_user", JSON.stringify(resp.data.user));
  298. localStorage.setItem("login_requester", JSON.stringify(resp.data.requester));
  299. $rootScope.user = JSON.parse(localStorage.getItem("jry_user"));
  300. $rootScope.login_requester = JSON.parse(localStorage.getItem("login_requester"));
  301. $rootScope.getMsgNum($rootScope.user.id)
  302. $rootScope.isFuwutai = false;//服务台人员和服务台经理才显示右上角呼叫功能
  303. if ($rootScope.user) {
  304. if($rootScope.user.role&&angular.isArray($rootScope.user.role)&&$rootScope.user.role.length){
  305. $rootScope.isFuwutai = $rootScope.user.role.some(function(v){
  306. return v.rolecode == 'call center';
  307. })
  308. }else{
  309. $rootScope.isFuwutai = false;
  310. }
  311. }
  312. if($rootScope.isFuwutai){
  313. localStorage.setItem("isFuwutai", 'true');
  314. }else{
  315. localStorage.removeItem('isFuwutai');
  316. }
  317. // $rootScope.userMenus = JSON.parse(localStorage.getItem("jry_user")).menu;
  318. var allJurisdiction = JSON.parse(localStorage.getItem("jry_user")).menu;
  319. var onlyMenu = [];
  320. // console.log(allJurisdiction);
  321. for (var i = 0; i < allJurisdiction.length; i++) {
  322. if (allJurisdiction[i].event == "1") {
  323. onlyMenu.push(allJurisdiction[i])
  324. }
  325. }
  326. // console.log(onlyMenu);
  327. $rootScope.userMenus = onlyMenu;
  328. var getMenus = function () {
  329. function convertListToTree(data, treeMap) {
  330. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  331. var root = null; //Initially set our loop to null
  332. var parentNode = null;
  333. //loop over data
  334. for (var i = 0; i < data.length; i++) {
  335. // data[i].id = Number(data[i].id);
  336. var datum = data[i];
  337. //each node will have children, so let's give it a "children" poperty
  338. datum.children = [];
  339. //add an entry for this node to the map so that any future children can
  340. //lookup the parent
  341. idToNodeMap[datum.id] = datum;
  342. //Does this node have a parent?
  343. if (typeof datum.parentid === "undefined" || datum.parentid == null) {
  344. //Doesn't look like it, so this node is the root of the tree
  345. root = datum;
  346. treeMap[datum.id] = root;
  347. } else {
  348. //This node has a parent, so let's look it up using the id
  349. parentNode = idToNodeMap[datum.parentid];
  350. //We don't need this property, so let's delete it.
  351. //delete datum.parentid;
  352. //Let's add the current node as a child of the parent node.
  353. parentNode.children.push(datum);
  354. }
  355. }
  356. return root;
  357. }
  358. function convertParentToChildList(data) {
  359. var treeMap = {};
  360. var list = [];
  361. convertListToTree(data, treeMap);
  362. angular.forEach(treeMap, function (item) {
  363. list.push(item);
  364. });
  365. list = window._.sortBy(list, function (o) {
  366. return o.orders;
  367. });
  368. return list;
  369. }
  370. //if(userMenus.length==0){
  371. var userMenus = [];
  372. var idMapMenu = {};
  373. if ($rootScope.user) {
  374. if ($rootScope.user.menu) {
  375. console.log($rootScope.user.menu);
  376. var allJurisdiction2 = $rootScope.user.menu;
  377. var onlyMenu2 = [];
  378. for (var i = 0; i < allJurisdiction2.length; i++) {
  379. if (allJurisdiction2[i].event == "1") {
  380. onlyMenu2.push(allJurisdiction2[i])
  381. }
  382. }
  383. // userMenus = convertParentToChildList($rootScope.user.menu);
  384. userMenus = convertParentToChildList(onlyMenu2);
  385. }
  386. }
  387. //}
  388. $rootScope.userMenus = userMenus;
  389. if ($rootScope.userMenus.length > 0) {
  390. // getpending();
  391. // setInterval(getpending, 30000);
  392. }
  393. return userMenus;
  394. }
  395. getMenus();
  396. } else {
  397. if (resp.state == "500") {
  398. SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  399. } else {
  400. // if (resp.error != 501 && resp.error != 400) {
  401. // $state.go('app.knowledge.forum');
  402. // $rootScope.app.isLoginFixed = false;
  403. // // console.log(resp);
  404. // // api_wechatfile.getDictionary({ "type": "list", "key": "hjzx_cornet" }).then(function(data) {
  405. // // $scope.runNumber = data;
  406. // // $scope.phone = $scope.runNumber[0].name;
  407. // // $rootScope.phoneChange($scope.phone);
  408. // // })
  409. // } else {
  410. // resp.error = "";
  411. // $scope.loginForm.password = "";
  412. // SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  413. // // $rootScope.user=resp.user;
  414. // // $rootScope.menu=resp.menu;
  415. // }
  416. resp.data.user["menu"] = resp.data.menu;
  417. localStorage.setItem("jry_user", JSON.stringify(resp.data.user));
  418. localStorage.setItem("login_requester", JSON.stringify(resp.data.requester));
  419. $rootScope.user = JSON.parse(localStorage.getItem("jry_user"));
  420. $rootScope.login_requester = JSON.parse(localStorage.getItem("login_requester"));
  421. $rootScope.getMsgNum($rootScope.user.id)
  422. $rootScope.isFuwutai = false;//服务台人员和服务台经理才显示右上角呼叫功能
  423. if ($rootScope.user) {
  424. if($rootScope.user.role&&angular.isArray($rootScope.user.role)&&$rootScope.user.role.length){
  425. $rootScope.isFuwutai = $rootScope.user.role.some(function(v){
  426. return v.rolecode == 'call center';
  427. })
  428. }else{
  429. $rootScope.isFuwutai = false;
  430. }
  431. }
  432. if($rootScope.isFuwutai){
  433. localStorage.setItem("isFuwutai", 'true');
  434. }else{
  435. localStorage.removeItem('isFuwutai');
  436. }
  437. // $rootScope.userMenus = JSON.parse(localStorage.getItem("jry_user")).menu;
  438. var allJurisdiction = JSON.parse(localStorage.getItem("jry_user")).menu;
  439. var onlyMenu = [];
  440. // console.log(allJurisdiction);
  441. for (var i = 0; i < allJurisdiction.length; i++) {
  442. if (allJurisdiction[i].event == "1") {
  443. onlyMenu.push(allJurisdiction[i])
  444. }
  445. }
  446. // console.log(onlyMenu);
  447. $rootScope.userMenus = onlyMenu;
  448. var getMenus = function () {
  449. function convertListToTree(data, treeMap) {
  450. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  451. var root = null; //Initially set our loop to null
  452. var parentNode = null;
  453. //loop over data
  454. for (var i = 0; i < data.length; i++) {
  455. // data[i].id = Number(data[i].id);
  456. var datum = data[i];
  457. //each node will have children, so let's give it a "children" poperty
  458. datum.children = [];
  459. //add an entry for this node to the map so that any future children can
  460. //lookup the parent
  461. idToNodeMap[datum.id] = datum;
  462. //Does this node have a parent?
  463. if (typeof datum.parentid === "undefined" || datum.parentid == null) {
  464. //Doesn't look like it, so this node is the root of the tree
  465. root = datum;
  466. treeMap[datum.id] = root;
  467. } else {
  468. //This node has a parent, so let's look it up using the id
  469. parentNode = idToNodeMap[datum.parentid];
  470. //We don't need this property, so let's delete it.
  471. //delete datum.parentid;
  472. //Let's add the current node as a child of the parent node.
  473. parentNode.children.push(datum);
  474. }
  475. }
  476. return root;
  477. }
  478. function convertParentToChildList(data) {
  479. var treeMap = {};
  480. var list = [];
  481. convertListToTree(data, treeMap);
  482. angular.forEach(treeMap, function (item) {
  483. list.push(item);
  484. });
  485. list = window._.sortBy(list, function (o) {
  486. return o.orders;
  487. });
  488. return list;
  489. }
  490. //if(userMenus.length==0){
  491. var userMenus = [];
  492. var idMapMenu = {};
  493. if ($rootScope.user) {
  494. if ($rootScope.user.menu) {
  495. console.log($rootScope.user.menu);
  496. var allJurisdiction2 = $rootScope.user.menu;
  497. var onlyMenu2 = [];
  498. for (var i = 0; i < allJurisdiction2.length; i++) {
  499. if (allJurisdiction2[i].event == "1") {
  500. onlyMenu2.push(allJurisdiction2[i])
  501. }
  502. }
  503. // userMenus = convertParentToChildList($rootScope.user.menu);
  504. userMenus = convertParentToChildList(onlyMenu2);
  505. }
  506. }
  507. //}
  508. $rootScope.userMenus = userMenus;
  509. if ($rootScope.userMenus.length > 0) {
  510. // getpending();
  511. // setInterval(getpending, 30000);
  512. }
  513. return userMenus;
  514. }
  515. getMenus();
  516. // if (!resp.error || resp.error != 500) {
  517. if (resp.data && resp.data.user && resp.data.user.id) {
  518. // console.log(resp.error);
  519. $rootScope.getpending();
  520. $state.go('app.dashboard');
  521. $rootScope.app.isLoginFixed = false;
  522. // console.log(resp);
  523. // api_wechatfile.getDictionary({ "type": "list", "key": "hjzx_cornet" }).then(function(data) {
  524. // $scope.runNumber = data;
  525. // $scope.phone = $scope.runNumber[0].name;
  526. // $rootScope.phoneChange($scope.phone);
  527. // })
  528. } else {
  529. resp.error = "";
  530. $scope.loginForm.password = "";
  531. SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  532. // $rootScope.user=resp.user;
  533. // $rootScope.menu=resp.menu;
  534. };
  535. if($rootScope.isFuwutai){
  536. $rootScope.getExtnDirect();
  537. }
  538. }
  539. }
  540. }
  541. })
  542. }
  543. })
  544. .catch(function (resp) {
  545. $scope.loginForm.password = "";
  546. // SweetAlert.swal("系统错误,请重试!", "登录错误", "error");
  547. SweetAlert.swal("用户名或者密码验证失败,请重试!", "error");
  548. });
  549. // })
  550. };
  551. if ($scope.isSSo) {
  552. $scope.handleLoginClick();
  553. }
  554. $scope.handleloginEnter = function (e) {
  555. if (e.keyCode == 13) {
  556. $scope.handleLoginClick();
  557. }
  558. };
  559. $scope.viewType = "password";
  560. $scope.isPassword = true;
  561. $scope.toggleView = function () {
  562. $scope.isPassword = !$scope.isPassword;
  563. $scope.viewType = $scope.isPassword ? "password" : "text";
  564. }
  565. $scope.handleSignOutBtnClick = function () {
  566. $auth.signOut()
  567. .then(function (resp) {
  568. // handle success response
  569. })
  570. .catch(function (resp) {
  571. // handle error response
  572. });
  573. };
  574. }
  575. ]);