| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- using System;
- using System.Configuration;
- using CommonTool;
- using YZXYH.Repository.Models;
- namespace YZXYH.Repository
- {
- public partial class AlumUserRepository
- {
- /// <summary>
- /// 用户登录
- /// </summary>
- /// <param name="pcUserNo">用户账号</param>
- /// <param name="pcPassword">密码</param>
- /// <param name="pcErrorMsg">错误信息</param>
- /// <param name="pcUserType">用户类型</param>
- /// <param name="isCookie">是否自动登录</param>
- /// <returns></returns>
- public bool Login(string pcUserNo, string pcPassword, ref string pcErrorMsg,UserType pcUserType,bool isCookie)
- {
- if (pcErrorMsg == null) throw new ArgumentNullException(nameof(pcErrorMsg));
- pcErrorMsg = "";
- bool lbRetval = false;
- string lcMsg = "失败";
- string loPassword;
- string loName;
- string loGraduationYear = "";
- string lcSessionName;
- string lcUserNo;
- if (pcUserType==UserType.GeneralUser)
- {
- if (!IsExist(u => u.Mobile == pcUserNo && u.IsLocked == "N"))
- {
- pcErrorMsg = "用户手机号码不存在!";
- return false;
- }
- AlumUser loAlumUser = GetSingle(u => u.Mobile == pcUserNo);
- lcUserNo = loAlumUser.Id;
- pcUserType = loAlumUser.GraduationYear == "0000" ? UserType.TeacherUser : pcUserType;
- loName = loAlumUser.Name;
- loPassword = loAlumUser.Password;
- loGraduationYear = loAlumUser.GraduationYear;
- lcSessionName = ConfigurationManager.AppSettings["UserInfoSession"];
- }
-
- else
- {
- if (!UnitOfWork.SysUserRepository.IsExist(u => u.SysNo == pcUserNo && u.IsLocked == "N"&&u.TimeExpiration.CompareTo(DateTime.Now)>0))
- {
- pcErrorMsg = "用户账号不存在或已被锁定(过期)!";
- return false;
- }
-
- SysUser loSysUser = UnitOfWork.SysUserRepository.GetSingle(u => u.SysNo == pcUserNo);
- lcUserNo = loSysUser.Id;
- loName = loSysUser.SysName;
- loPassword = loSysUser.SysPassword;
- lcSessionName = ConfigurationManager.AppSettings["SysUserInfoSession"];
- }
-
- pcPassword = SysSecurity.Encrypt4CPlus(pcPassword.Trim());
- if (loPassword == pcPassword.Trim())
- {
- lbRetval = true;
- lcMsg = "成功";
- string lcGuid = UtilRandom.GetGuid();
- SysUserInfo loUserInfo = new SysUserInfo(lcUserNo, pcPassword, loName, pcUserType)
- {
- UserGuid = lcGuid
- };
- UserListSession.Instance.Add(lcGuid, loUserInfo);
- SessionHelper.Instance.AddSession(lcSessionName, lcGuid, 30);
- if (isCookie)
- {
- string lcCookieName = ConfigurationManager.AppSettings["SysUserInfoCookie"];
- CookieHelper.Instance.WriteCookie(lcCookieName,
- CookieHelper.Instance.BuildCookueValue(SysSecurity.Encrypt(JsonHelper.Instance.Serialize(loUserInfo)), 3000));
- }
- }
- else
- {
- pcErrorMsg = "登录密码错误";
- }
- UnitOfWork.UserLastLoginRepository.InsertNoId(new UserLastLogin()
- {
- UserNo = lcUserNo,
- TimeLastLogin = DateTime.Now,
- IpAddress = IpHelper.Instance.GetClientIp()
- });
- UnitOfWork.SysLogRepository.AddLog(pcUserType + " | Login", " 登录 " + lcMsg,
- loName + "|" + pcUserNo, pcErrorMsg, loGraduationYear);
- return lbRetval;
- }
- /// <summary>
- /// 检查用户的登录是否有效
- /// </summary>
- /// <returns></returns>
- public bool CheckLogin()
- {
- bool lbRetval = false;
- string lcSessionName = ConfigurationManager.AppSettings["UserInfoSession"];
- string lcToken = SessionHelper.Instance.GetSession(lcSessionName);
- SessionHelper.Instance.DelSession(lcSessionName);
- if (string.IsNullOrEmpty(lcToken))
- return false;
- if (CheckLogin(lcToken))
- {
- SessionHelper.Instance.AddSession(lcSessionName, lcToken, 30);
- lbRetval = true;
- }
- return lbRetval;
- }
- /// <summary>
- /// 根据Token检查用户登录
- /// </summary>
- /// <param name="pcToken">Token</param>
- /// <param name="pcValidate">需验证Token密码</param>
- /// <returns></returns>
- public bool CheckLogin(string pcToken, bool pcValidate = false)
- {
- bool lbRetval = UserListSession.Instance.IsContainsKey(pcToken);
- if (pcValidate && lbRetval)
- {
- SysUserInfo loUserInfo = UserListSession.Instance.GetUserInfoByGuid(pcToken);
- string lcMobile = loUserInfo.UserNo;
- string lcPassword = loUserInfo.Password;
- AlumUser loAlumUser = GetSingle(u => u.Mobile == lcMobile && u.IsLocked == "N");
- lbRetval = lcPassword == loAlumUser.Password;
- }
- return lbRetval;
- }
- /// <summary>
- /// 修改密码
- /// </summary>
- /// <param name="pcMobile">手机号</param>
- /// <param name="pcOldPassword">原密码</param>
- /// <param name="pcNewPassword">新密码</param>
- /// <param name="pcMsg">操作信息</param>
- /// <param name="sysUserInfo"></param>
- /// <returns></returns>
- public bool ModifyPassword(string pcMobile, string pcOldPassword, string pcNewPassword, ref string pcMsg, SysUserInfo sysUserInfo)
- {
- if (pcMsg == null) throw new ArgumentNullException(nameof(pcMsg));
- bool lbRetval = false;
- string lcErrorMsg="";
- AlumUser alum = GetSingle(a => a.Mobile == pcMobile && a.IsLocked == "N");
- if (alum != null)
- {
- if (SysSecurity.Encrypt4CPlus(pcOldPassword.Trim()) == alum.Password)
- {
- Update(a => a.Mobile == pcMobile, a => new AlumUser {Password = SysSecurity.Encrypt4CPlus(pcNewPassword.Trim())});
- if (Save())
- {
- pcMsg = "修改密码成功";
- lbRetval = true;
- }
- else
- {
- pcMsg = "修改密码失败";
- lcErrorMsg = "保存修改失败";
- }
- }
- else
- {
- pcMsg = "修改密码失败,原密码错误!";
- lcErrorMsg = "原密码错误";
- }
- UnitOfWork.SysLogRepository.AddLog(sysUserInfo.UserType+" | Modify", pcMsg,
- alum.Name + "|" + alum.Mobile, lcErrorMsg, alum.GraduationYear);
- }
- else
- {
- pcMsg = "用户不存在或已被锁定!";
- }
-
- return lbRetval;
- }
- }
- }
|