a827ae9bb53dbb7cbb9da5d3299f1735d6c8f12e.svn-base 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. 
  2. $(function () {
  3. 'use strict';
  4. var debug = false;
  5. var id = ko.observable(''),
  6. password = ko.observable(''),
  7. checkSaveId = ko.observable(false),
  8. disabledLoginButton = ko.observable(false),
  9. disabledIdTextBox = ko.observable(false),
  10. disabledPasswordTextBox = ko.observable(false),
  11. disabledCheckSaveId = ko.observable(false)
  12. ;
  13. var overlayOptions = {
  14. width: '100%',
  15. height: '100%',
  16. visible: ko.observable(false),
  17. animation: null,
  18. shading: true,
  19. showingAction: function () {
  20. BWA.UserPanel.hide();
  21. },
  22. contentReadyAction: function (e) {
  23. BWA.CenterLoginOverlay.handleCheckSaveId();
  24. }
  25. };
  26. function handleLoginFail(error) {
  27. utils.toast.show('로그인에 실패하였습니다.', 'error');
  28. }
  29. function handleAfterTryLogin() {
  30. disabledLoginButton(false);
  31. disabledIdTextBox(false);
  32. disabledPasswordTextBox(false);
  33. disabledCheckSaveId(false);
  34. BWA.LoadIndicator.promiseAlways();
  35. }
  36. BWA.CenterLoginOverlay = {
  37. handleCheckSaveId: function() {
  38. $('.intro_login_container').parent().parent().css('z-index', 3000);
  39. checkSaveId($.cookie('checkCenterSaveId') == "true" ? true : false);
  40. if (checkSaveId()) {
  41. var cookieId = $.cookie('centerId');
  42. id(cookieId);
  43. }
  44. else {
  45. var cookieId = "";
  46. id(cookieId);
  47. }
  48. if (debug) {
  49. id('center');
  50. password('center');
  51. }
  52. },
  53. overlayOptions: overlayOptions,
  54. getIdTextBoxOptions: function () {
  55. return {
  56. value: id,
  57. disabled: disabledIdTextBox,
  58. placeholder: ' username', //placeholder: $G('id'),
  59. onKeyPress: function (e) {
  60. if (e.jQueryEvent.charCode == 13)
  61. BWA.CenterLoginOverlay.handleLoginButton();
  62. }
  63. };
  64. },
  65. getPasswordTextBoxOptions: function () {
  66. return {
  67. value: password,
  68. disabled: disabledPasswordTextBox,
  69. mode: 'password',
  70. placeholder: ' password',//placeholder: $G('password'),
  71. onKeyPress: function (e) {
  72. if (e.jQueryEvent.charCode == 13) {
  73. $('#loginbtn').focus();
  74. BWA.CenterLoginOverlay.handleLoginButton();
  75. }
  76. }
  77. };
  78. },
  79. getCheckBoxOptions: function () {
  80. return {
  81. value: checkSaveId,
  82. disabled: disabledCheckSaveId
  83. };
  84. },
  85. getButtonOptions: function () {
  86. return {
  87. disabled: disabledLoginButton,
  88. clickAction: BWA.CenterLoginOverlay.handleLoginButton
  89. };
  90. },
  91. GetClientIP: function () {
  92. var dfd = $.Deferred();
  93. var urlHeader = BemsWebApplication.config.endpoints.api[BemsWebApplication.config.mode];
  94. $.get(urlHeader+"/ClientAccess/ClientIpAddress", function (response) {
  95. if (response.ip === '::1') {
  96. response.ip = '127.0.0.1';
  97. }
  98. return dfd.resolve(true, response.ip);
  99. });
  100. return dfd.promise();
  101. },
  102. handleLogoutButton: function () {
  103. // 로그아웃 히스토리 기록
  104. var loginHistoryModel = new BemsWebApplication.CmUserLoginHistoryViewModel();
  105. loginHistoryModel.SiteId = BWA.UserInfo.SiteId;
  106. loginHistoryModel.UserId = BWA.UserInfo.UserId;
  107. loginHistoryModel.Type('Log-Off');
  108. loginHistoryModel.TraceTime(new Date());
  109. $.when(BWA.CenterLoginOverlay.GetClientIP()).done(function (result, ip) {
  110. loginHistoryModel.IpAddress(ip);
  111. BWA.db.CmUserLoginHistory.insert(loginHistoryModel.toJS());
  112. BWA.UserInfo.logout();
  113. clearInterval(BemsWebApplication.app.timer); // hcLee 2015 08 07
  114. BWA.app.navigate('CenterLogin');
  115. BWA.CenterLoginOverlay.handleCheckSaveId();
  116. });
  117. },
  118. handleLoginButton: function () {
  119. BWA.UserInfo.IsLogin(false);
  120. if (_.isEmpty(id())) {
  121. utils.toast.show('아이디를 입력하여 주십시오.', 'error');
  122. $('#userId').focus();
  123. return;
  124. }
  125. if (_.isEmpty(password())) {
  126. utils.toast.show('비밀번호를 입력하여 주십시오.', 'error');
  127. $('#userPassword').focus();
  128. return;
  129. }
  130. $.cookie('checkCenterSaveId', checkSaveId());
  131. if (checkSaveId()) {
  132. $.cookie('centerId', id());
  133. }
  134. disabledLoginButton(true);
  135. disabledIdTextBox(true);
  136. disabledPasswordTextBox(true);
  137. disabledCheckSaveId(true);
  138. var userDataSource = BWA.DataUtil.createDataSource({
  139. dataSourceOptions: {
  140. select: [
  141. 'SiteId', 'UserId', 'CompanyId', 'DepartmentId', 'PositionId', 'Name', 'Email', 'UserGroupId', 'BusinessFieldId', 'EmploymentStatus',
  142. 'CmCompany/Name', 'CmDepartment/Name', 'CmPosition/Name', 'CmBusinessField/Name'
  143. ],
  144. expand: ['CmCompany', 'CmDepartment', 'CmPosition', 'CmBusinessField'],
  145. extendOptions: {
  146. alterNames: {
  147. 'CmCompany/Name': 'CompanyName',
  148. 'CmDepartment/Name': 'DepartmentName',
  149. 'CmPosition/Name': 'PositionName',
  150. 'CmBusinessField/Name': 'BusinessFieldName'
  151. }
  152. }
  153. }
  154. }, 'CmUser');
  155. var userGroupPermissionDataSource = BWA.db.createDataSource('CmUserGroupPermission');
  156. var eq = BWA.DataUtil.constructEqualFilter;
  157. var and = BWA.DataUtil.andFilter;
  158. userDataSource.filter([
  159. [eq('SiteId', 0)],
  160. 'and',
  161. eq('UserId', id()),
  162. 'and',
  163. eq('Passwd', password()),
  164. ]);
  165. BWA.LoadIndicator.show();
  166. userDataSource.load().done(function (user) {
  167. if (_.isEmpty(user)) {
  168. utils.toast.show('로그인에 실패하였습니다. 아이디 혹은 비밀번호가 다릅니다.', 'error');
  169. password("");
  170. return;
  171. }
  172. user = user[0];
  173. if (user.EmploymentStatus() == 2 || user.EmploymentStatus() == 3) {
  174. utils.toast.show('휴직/퇴사 사용자는 시스템에 로그인 할 수 없습니다.', 'error');
  175. return;
  176. }
  177. userGroupPermissionDataSource.filter([
  178. eq('SiteId', user.SiteId()),
  179. and,
  180. eq('UserGroupId', user.UserGroupId()),
  181. ]);
  182. userGroupPermissionDataSource.load().done(function (dbMenuPermissions) {
  183. BWA.DataUtil.copyViewModel(user, BWA.UserInfo);
  184. BWA.UserInfo.MenuPermissions(_.map(dbMenuPermissions, function (x) {
  185. return {
  186. MenuId: x.MenuId(),
  187. MenuPermission: x.MenuPermission()
  188. };
  189. }));
  190. // hcLee 2016 06 09
  191. if (BWA.UserInfo.SiteId() == 0) {
  192. BWA.UserInfo.IsCenter(true);
  193. //BWA.UserInfo.SiteId(1);
  194. }
  195. overlayOptions.visible(false);
  196. utils.toast.show('로그인에 성공하였습니다.');
  197. id("");
  198. password("");
  199. BWA.Code.PurchaseProgress.load();
  200. BWA.UserInfo.IsLogin(true);
  201. // 로그인 히스토리 기록
  202. var loginHistoryModel = new BemsWebApplication.CmUserLoginHistoryViewModel();
  203. loginHistoryModel.SiteId = BWA.UserInfo.SiteId;
  204. loginHistoryModel.UserId = BWA.UserInfo.UserId;
  205. loginHistoryModel.Type('Log-On');
  206. loginHistoryModel.TraceTime(new Date());
  207. //2015 11 13 hcLee
  208. //loginHistoryModel.IpAddress(BWA.CenterLoginOverlay.GetClientIP());
  209. $.when(BWA.CenterLoginOverlay.GetClientIP()).done(function (result, ip) {
  210. loginHistoryModel.IpAddress(ip);
  211. BWA.db.CmUserLoginHistory.insert(loginHistoryModel.toJS());
  212. var siteDataSource = BemsWebApplication.db.createDataSource('CmSite', true);
  213. var eq = BWA.DataUtil.constructEqualFilter;
  214. siteDataSource.filter([
  215. eq('SiteId', BWA.UserInfo.SiteId()),
  216. ]);
  217. var bAutoControl;
  218. siteDataSource.load().done(function (site) {
  219. if (_.isEmpty(site)) return;
  220. bAutoControl = site[0].IsControlSchedule();
  221. BemsWebApplication.app.timer = setInterval(function () {
  222. var now = new Date();
  223. if (bAutoControl == true && now.getHours () == site[0].ScheduleCheckHour() && (now.getMinutes() == 0) && (now.getSeconds() == 0)) {
  224. BWA.ControlPanel.show();
  225. }
  226. }, 1000);
  227. });
  228. BWA.BemsFmsMode.setBemsMode('bems');
  229. BWA.app.navigate('CenterMainDashboard');
  230. });
  231. }).fail(handleLoginFail).always(handleAfterTryLogin);
  232. }).fail(handleLoginFail).always(handleAfterTryLogin);
  233. },
  234. isVisible: function () {
  235. return overlayOptions.visible();
  236. },
  237. show: function () {
  238. overlayOptions.visible(true);
  239. }
  240. };
  241. });