loginCtrl.js 36 KB

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