loginCtrl.js 36 KB

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