login.js 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. require(['config'], function() {
  2. require([
  3. 'jquery',
  4. 'crypto' //Crypto 암호화 js - 필요한 페이지만 불러서 쓴다
  5. ], function($) {
  6. if (sessionStorage.getItem('itp_login_info') !== null) { //Jwt 가 살아있으면 메인으로 보낸다.
  7. location.replace('./main.html');
  8. }
  9. if (sessionStorage.getItem('itp_manage_user_info') !== null) { //로그인 사용자 정보가 있다면 제거
  10. sessionStorage.removeItem('itp_manage_user_info');
  11. }
  12. itp_fn_login_init();
  13. $('#ITP_LOGIN').on('keyup', 'input, textarea', function() {
  14. var $th = $(this);
  15. $th.val($th.val().replace(/(<([^>]+)>)/ig, function() {return '';}));
  16. });
  17. $('#login_btn').click(function() {
  18. if(itp_fn_login_validate()) {
  19. itp_fn_login_proc();
  20. }
  21. return false;
  22. });
  23. var callbackFn = function(result) {
  24. POP_LIST = result.popList;
  25. fn_proc_popup_view('L');
  26. };
  27. const key = {sViewTargetCd: 'L'};
  28. var param = $.param(key);
  29. fn_ajax_call('/api/pop/open-pop', param, callbackFn, 'GET');
  30. });
  31. });
  32. function itp_fn_login_init() {
  33. $('#ITP_FORM_LOGIN_SAVE_ID').prop('checked', true);
  34. var save_id = localStorage.getItem('ITP_USER_ID');
  35. if (save_id !== null) {
  36. $('#ITP_FORM_LOGIN_USER_ID').val(save_id);
  37. }
  38. };
  39. function itp_fn_login_validate() {
  40. $('#ITP_FORM_LOGIN_USER_ID').closest('.form-group').removeClass('has-error');
  41. $('#ITP_FORM_LOGIN_USER_PW').closest('.form-group').removeClass('has-error');
  42. $('#ITP_FORM_LOGIN_ERROR').text(ITP_MSG_LOCALE.message.login.help);
  43. if ($('#ITP_FORM_LOGIN_USER_ID').val() == '') {
  44. $('#ITP_FORM_LOGIN_USER_ID').closest('.form-group').addClass('has-error');
  45. $('#ITP_FORM_LOGIN_ERROR').text(ITP_MSG_LOCALE.message.login.needId);
  46. return false;
  47. }
  48. if ($('#ITP_FORM_LOGIN_USER_PW').val() == '') {
  49. $('#ITP_FORM_LOGIN_USER_PW').closest('.form-group').addClass('has-error');
  50. $('#ITP_FORM_LOGIN_ERROR').text(ITP_MSG_LOCALE.message.login.needPw);
  51. return false;
  52. }
  53. $('#ITP_FORM_LOGIN_ERROR').text('');
  54. const userId = $('#ITP_FORM_LOGIN_USER_ID').val();
  55. if ($('#ITP_FORM_LOGIN_SAVE_ID').prop('checked')) {
  56. localStorage.setItem('ITP_USER_ID', userId);
  57. } else {
  58. localStorage.removeItem('ITP_USER_ID');
  59. }
  60. return true;
  61. };
  62. function itp_fn_login_proc() {
  63. var callbackFn = function(result) {
  64. var hashed = fnHashed(result.hashed);
  65. $('#userId').val(CryptoJS.AES.encrypt($('#ITP_FORM_LOGIN_USER_ID').val(), hashed));
  66. $('#password').val(CryptoJS.AES.encrypt($('#ITP_FORM_LOGIN_USER_PW').val(), hashed));
  67. var loginFn = function(result) {
  68. // alert('SIGN-IN RESULT : ' + JSON.stringify(result));
  69. sessionStorage.setItem('itp_login_info', JSON.stringify({
  70. timestamp: new Date(),
  71. connKey: result.connKey // Jwt키를 가져와서 세션 스토리지에 저장
  72. }));
  73. $(location).attr('href', ITP_CONTEXTPATH + '/main.html');
  74. };
  75. var params = $('#command').serializeObject();
  76. fn_ajax_call('/api/member/sign-in', JSON.stringify(params), loginFn, 'POST'); //암호화 해서 보내는 경우 먼저 해시키를 가져와서 암호화해서 보낸다
  77. };
  78. fn_ajax_call('/api/session/hashed', null, callbackFn, 'GET'); //Crypto 암호화를 위한 해쉬키.. 로그인 후에는 Jwt 포함인 /api/session/hashedKey 이걸로 호출해서 사용한다.
  79. // 공통코드 저장 테스트
  80. // let map = new Map();
  81. // map.set('useYn', JSON.stringify([{'codeDtlCd':'Y','codeDtlNm':'사용'},{'codeDtlCd':'N','codeDtlNm':'미사용'}]));
  82. // sessionStorage.itp_common_code = JSON.stringify(Array.from(map.entries()));
  83. // $(location).attr('href', ITP_CONTEXTPATH + '/main.html');
  84. }