$(function () { 'use strict'; var debug = false; var id = ko.observable(''), password = ko.observable(''), checkSaveId = ko.observable(false), disabledLoginButton = ko.observable(false), disabledIdTextBox = ko.observable(false), disabledPasswordTextBox = ko.observable(false), disabledCheckSaveId = ko.observable(false) ; var overlayOptions = { width: '100%', height: '100%', visible: ko.observable(false), animation: null, shading: true, showingAction: function () { BWA.UserPanel.hide(); }, contentReadyAction: function (e) { BWA.CenterLoginOverlay.handleCheckSaveId(); } }; function handleLoginFail(error) { utils.toast.show('로그인에 실패하였습니다.', 'error'); } function handleAfterTryLogin() { disabledLoginButton(false); disabledIdTextBox(false); disabledPasswordTextBox(false); disabledCheckSaveId(false); BWA.LoadIndicator.promiseAlways(); } BWA.CenterLoginOverlay = { handleCheckSaveId: function() { $('.intro_login_container').parent().parent().css('z-index', 3000); checkSaveId($.cookie('checkCenterSaveId') == "true" ? true : false); if (checkSaveId()) { var cookieId = $.cookie('centerId'); id(cookieId); } else { var cookieId = ""; id(cookieId); } if (debug) { id('center'); password('center'); } }, overlayOptions: overlayOptions, getIdTextBoxOptions: function () { return { value: id, disabled: disabledIdTextBox, placeholder: ' username', //placeholder: $G('id'), onKeyPress: function (e) { if (e.jQueryEvent.charCode == 13) BWA.CenterLoginOverlay.handleLoginButton(); } }; }, getPasswordTextBoxOptions: function () { return { value: password, disabled: disabledPasswordTextBox, mode: 'password', placeholder: ' password',//placeholder: $G('password'), onKeyPress: function (e) { if (e.jQueryEvent.charCode == 13) { $('#loginbtn').focus(); BWA.CenterLoginOverlay.handleLoginButton(); } } }; }, getCheckBoxOptions: function () { return { value: checkSaveId, disabled: disabledCheckSaveId }; }, getButtonOptions: function () { return { disabled: disabledLoginButton, clickAction: BWA.CenterLoginOverlay.handleLoginButton }; }, GetClientIP: function () { var dfd = $.Deferred(); var urlHeader = BemsWebApplication.config.endpoints.api[BemsWebApplication.config.mode]; $.get(urlHeader+"/ClientAccess/ClientIpAddress", function (response) { if (response.ip === '::1') { response.ip = '127.0.0.1'; } return dfd.resolve(true, response.ip); }); return dfd.promise(); }, handleLogoutButton: function () { // 로그아웃 히스토리 기록 var loginHistoryModel = new BemsWebApplication.CmUserLoginHistoryViewModel(); loginHistoryModel.SiteId = BWA.UserInfo.SiteId; loginHistoryModel.UserId = BWA.UserInfo.UserId; loginHistoryModel.Type('Log-Off'); loginHistoryModel.TraceTime(new Date()); $.when(BWA.CenterLoginOverlay.GetClientIP()).done(function (result, ip) { loginHistoryModel.IpAddress(ip); BWA.db.CmUserLoginHistory.insert(loginHistoryModel.toJS()); BWA.UserInfo.logout(); clearInterval(BemsWebApplication.app.timer); // hcLee 2015 08 07 BWA.app.navigate('CenterLogin'); BWA.CenterLoginOverlay.handleCheckSaveId(); }); }, handleLoginButton: function () { BWA.UserInfo.IsLogin(false); if (_.isEmpty(id())) { utils.toast.show('아이디를 입력하여 주십시오.', 'error'); $('#userId').focus(); return; } if (_.isEmpty(password())) { utils.toast.show('비밀번호를 입력하여 주십시오.', 'error'); $('#userPassword').focus(); return; } $.cookie('checkCenterSaveId', checkSaveId()); if (checkSaveId()) { $.cookie('centerId', id()); } disabledLoginButton(true); disabledIdTextBox(true); disabledPasswordTextBox(true); disabledCheckSaveId(true); var userDataSource = BWA.DataUtil.createDataSource({ dataSourceOptions: { select: [ 'SiteId', 'UserId', 'CompanyId', 'DepartmentId', 'PositionId', 'Name', 'Email', 'UserGroupId', 'BusinessFieldId', 'EmploymentStatus', 'CmCompany/Name', 'CmDepartment/Name', 'CmPosition/Name', 'CmBusinessField/Name' ], expand: ['CmCompany', 'CmDepartment', 'CmPosition', 'CmBusinessField'], extendOptions: { alterNames: { 'CmCompany/Name': 'CompanyName', 'CmDepartment/Name': 'DepartmentName', 'CmPosition/Name': 'PositionName', 'CmBusinessField/Name': 'BusinessFieldName' } } } }, 'CmUser'); var userGroupPermissionDataSource = BWA.db.createDataSource('CmUserGroupPermission'); var eq = BWA.DataUtil.constructEqualFilter; var and = BWA.DataUtil.andFilter; userDataSource.filter([ [eq('SiteId', 0)], 'and', eq('UserId', id()), 'and', eq('Passwd', password()), ]); BWA.LoadIndicator.show(); userDataSource.load().done(function (user) { if (_.isEmpty(user)) { utils.toast.show('로그인에 실패하였습니다. 아이디 혹은 비밀번호가 다릅니다.', 'error'); password(""); return; } user = user[0]; if (user.EmploymentStatus() == 2 || user.EmploymentStatus() == 3) { utils.toast.show('휴직/퇴사 사용자는 시스템에 로그인 할 수 없습니다.', 'error'); return; } userGroupPermissionDataSource.filter([ eq('SiteId', user.SiteId()), and, eq('UserGroupId', user.UserGroupId()), ]); userGroupPermissionDataSource.load().done(function (dbMenuPermissions) { BWA.DataUtil.copyViewModel(user, BWA.UserInfo); BWA.UserInfo.MenuPermissions(_.map(dbMenuPermissions, function (x) { return { MenuId: x.MenuId(), MenuPermission: x.MenuPermission() }; })); // hcLee 2016 06 09 if (BWA.UserInfo.SiteId() == 0) { BWA.UserInfo.IsCenter(true); //BWA.UserInfo.SiteId(1); } overlayOptions.visible(false); utils.toast.show('로그인에 성공하였습니다.'); id(""); password(""); BWA.Code.PurchaseProgress.load(); BWA.UserInfo.IsLogin(true); // 로그인 히스토리 기록 var loginHistoryModel = new BemsWebApplication.CmUserLoginHistoryViewModel(); loginHistoryModel.SiteId = BWA.UserInfo.SiteId; loginHistoryModel.UserId = BWA.UserInfo.UserId; loginHistoryModel.Type('Log-On'); loginHistoryModel.TraceTime(new Date()); //2015 11 13 hcLee //loginHistoryModel.IpAddress(BWA.CenterLoginOverlay.GetClientIP()); $.when(BWA.CenterLoginOverlay.GetClientIP()).done(function (result, ip) { loginHistoryModel.IpAddress(ip); BWA.db.CmUserLoginHistory.insert(loginHistoryModel.toJS()); var siteDataSource = BemsWebApplication.db.createDataSource('CmSite', true); var eq = BWA.DataUtil.constructEqualFilter; siteDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), ]); var bAutoControl; siteDataSource.load().done(function (site) { if (_.isEmpty(site)) return; bAutoControl = site[0].IsControlSchedule(); BemsWebApplication.app.timer = setInterval(function () { var now = new Date(); if (bAutoControl == true && now.getHours () == site[0].ScheduleCheckHour() && (now.getMinutes() == 0) && (now.getSeconds() == 0)) { BWA.ControlPanel.show(); } }, 1000); }); BWA.BemsFmsMode.setBemsMode('bems'); BWA.app.navigate('CenterMainDashboard'); }); }).fail(handleLoginFail).always(handleAfterTryLogin); }).fail(handleLoginFail).always(handleAfterTryLogin); }, isVisible: function () { return overlayOptions.visible(); }, show: function () { overlayOptions.visible(true); } }; });