using Estsh.Core.Controllers; using Estsh.Core.IServices; using Estsh.Core.Model; using Estsh.Core.Model.Result; using Estsh.Core.Models; using Estsh.Core.Services; using Estsh.Core.Util; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Collections; using System.Text.Json; /*************************************************************************************************** * * 更新人:sitong.dong * 描述:登录控制类 * 修改时间:2022.06.22 * 修改日志:系统迭代升级 * **************************************************************************************************/ namespace Estsh.Core.Web.Controllers { /// /// 处理用户登录 /// public class AccountController : BaseController { private Hashtable result = new Hashtable(); private IAccountService service; public AccountController(IAccountService _service) { this.service = _service; } #region 系统登录 /// /// 用户登录 /// /// /// [HttpPost, ActionName("Login")] [AllowAnonymous] public ActionResult Login(SysEmp userInfo) { int factoryId = userInfo.FactoryId; List factories = service.getSelectFactory(factoryId); CommonResult loginResult = new CommonResult(); Hashtable result = this.service.login(userInfo); LoginStatus loginStatus = (LoginStatus)result["status"]; userInfo = (SysEmp)result["userInfo"]; if (factories.Count==0) { loginResult.success = false; loginResult.message = "工厂不存在!"; return Json(loginResult); } if (loginStatus == LoginStatus.LOGINSUCESS) { userInfo.FactoryId = factories[0].FactoryId; userInfo.FactoryCode = factories[0].FactoryCode; HttpContext.Session.SetString("loginedUser", JsonSerializer.Serialize(userInfo)); loginResult.message = "登录成功!"; loginResult.success = true; loginResult.accountType = userInfo.EmpType.ToString(); HttpContext.Session.Remove("isLockScreen"); } else { loginResult.success = false; if (loginStatus == LoginStatus.USERNAMENOEXISTED) { loginResult.message = "用户名不存在!"; } if (loginStatus == LoginStatus.PASSWORDERROR) { loginResult.message = "密码错误!"; } } return Json(loginResult); } /// /// 退出登陆 /// /// [AllowAnonymous] public RedirectResult Logout() { HttpContext.Session.Remove("loginedUser"); HttpContext.Session.Remove("isLockScreen"); return Redirect("/System/Login"); } /// /// 锁定用户 /// /// public ActionResult lockScreen() { HttpContext.Session.SetString("isLockScreen", "true"); return Json(""); } /// /// 解除锁定 /// /// /// public ActionResult unlockScreen(SysEmp userInfo) { bool isPass = false; String password = ""; if (userInfo != null) { password = MD5Encrypt.NewObject.MD5(userInfo.Passwd); } password = (password == null) ? "" : password; var loginedUser = HttpContext.Session.GetString("loginedUser"); if (loginedUser == null) { isPass = false; } else { SysEmp? user = JsonSerializer.Deserialize(loginedUser); if (user == null) { isPass = false; } else { if (password.Equals(user.Passwd)) { HttpContext.Session.Remove("isLockScreen"); isPass = true; } else { isPass = false; } } } result.Add("isPass", isPass); return Json(result); } #endregion #region 修改密码 public RedirectResult EditPage() { if (CurrentEmp != null) { return Redirect("/System/EditPassword"); } return Logout(); } public ActionResult EditUserPassword(string empId, string oldPassword, string newPassword1) { Hashtable result = new Hashtable(); bool existUser = false; if (CurrentEmp != null) { result = service.EditUserPassword(empId, oldPassword, newPassword1, CurrentEmp.EmpId.ToString()); existUser = true; } if(!existUser) { result.Add("status", false); result.Add("msg", "用户信息不存在!请重新登录……"); } return Json(result); } #endregion } }