loginCtrl.js 36 KB

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