/// <summary> /// 用户修改密码 /// </summary> /// <param name="taskId">任务标识</param> /// <param name="userInfo">用户</param> /// <param name="oldPassword">原始密码</param> /// <param name="newPassword">新密码</param> /// <returns>影响行数</returns> public UserLogonResult ChangePassword(string taskId, BaseUserInfo userInfo, string oldPassword, string newPassword) { UserLogonResult result = null; var parameter = ServiceInfo.Create(taskId, userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { // 事务开始 // dbHelper.BeginTransaction(); var userManager = new BaseUserManager(dbHelper, userInfo); result = new UserLogonResult { UserInfo = userManager.ChangePassword(userInfo.Id.ToString(), oldPassword, newPassword), // 获取登录后信息 // result.Message = BaseParameterManager.GetParameterByCache("BaseNotice", "System", "Logon", "Message"); // 获得状态消息 Status = userManager.Status, StatusCode = userManager.StatusCode, StatusMessage = userManager.GetStateMessage() }; // 事务提交 // dbHelper.CommitTransaction(); }); return(result); }
/// <summary> /// 按用户名登录(LDAP专用) /// </summary> /// <param name="taskId">任务标识</param> /// <param name="systemCode">子系统编码</param> /// <param name="userInfo">用户</param> /// <param name="userName">用户名</param> /// <returns>用户实体</returns> public UserLogonResult LogonByUserName(string taskId, string systemCode, BaseUserInfo userInfo, string userName) { var result = new UserLogonResult(); var parameter = ServiceInfo.Create(taskId, userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { // 先侦测是否在线 //userLogonManager.CheckOnline(); // 然后获取用户密码 var userManager = new BaseUserManager(userInfo); // 是否从角色判断管理员 userManager.CheckIsAdministrator = true; //根据用户名获取用户信息 var userEntity = userManager.GetByUserName(userName); if (userEntity != null) { var baseUserLogonManager = new BaseUserLogonManager(userInfo); //获取密码 var userLogonEntity = baseUserLogonManager.GetEntityByUserId(userEntity.Id); var password = userLogonEntity.UserPassword; //再进行登录,这里密码不能是AD的密码,所以不检验密码 result = userManager.LogonByUserName(userName, password, systemCode, null, null, null, false, false); //可以登录,但不建议,没有登录日志等 //result = userManager.LogonByOpenId(openId, string.Empty, string.Empty); } // 登录时会自动记录进行日志记录,所以不需要进行重复日志记录 //BaseLogManager.Instance.Add(userInfo, this.serviceName, MethodBase.GetCurrentMethod()); }); return(result); }
/// <summary> /// 登录 /// </summary> /// <param name="taskId">任务标识</param> /// <param name="userInfo">用户</param> /// <param name="companyName">单位名称</param> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <param name="openId">单点登录标识</param> /// <returns>登录实体类</returns> public UserLogonResult LogonByCompany(string taskId, BaseUserInfo userInfo, string companyName, string userName, string password, string openId) { var result = new UserLogonResult(); var parameter = ServiceInfo.Create(taskId, userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { // 先侦测是否在线 // userLogonManager.CheckOnline(); // 再进行登录 var userManager = new BaseUserManager(userInfo) { CheckIsAdministrator = true }; result = userManager.LogonByCompany(companyName, userName, password, openId, userInfo.SystemCode, GetRemoteIp()); // 张祈璟20130619添加 //if (returnUserInfo != null) //{ // returnUserInfo.CloneData(userInfo); // result.UserInfo = returnUserInfo; //} // 登录时会自动记录进行日志记录,所以不需要进行重复日志记录 // BaseLogManager.Instance.Add(result, this.serviceName, MethodBase.GetCurrentMethod()); }); return(result); }
/// <summary> /// 验证用户 /// </summary> /// <param name="openId">当点登录识别码</param> /// <param name="transparent">是否使用了代理</param> /// <param name="useCaching">使用缓存</param> /// <param name="useDataBase">使用数据库</param> /// <param name="useUserCenterHost">使用接口</param> /// <returns>用户登录信息</returns> public static UserLogonResult LogonByOpenId(string openId, bool transparent = false, bool useCaching = true, bool useDataBase = true, bool useUserCenterHost = true) { // 统一的登录服务 UserLogonResult userLogonResult = null; if (useCaching) { // 先从缓存活取用户是否在?若在缓存里已经在了,就不需要再登录了,直接登录就可以了。 var result = GetUserInfoCaching(openId); if (result != null) { userLogonResult = new UserLogonResult { UserInfo = result, Status = Status.Ok, StatusCode = Status.Ok.ToString() }; return(userLogonResult); } } if (useDataBase) { } if (useUserCenterHost) { // DotNetService dotNetService = new DotNetService(); // result = dotNetService.LogonService.LogonByOpenId(GetUserInfo(), openId); var url = BaseSystemInfo.UserCenterHost + "/UserCenterV42/LogonService.ashx"; var webClient = new WebClient(); var postValues = new NameValueCollection(); postValues.Add("function", "LogonByOpenId"); postValues.Add("userInfo", BaseSystemInfo.UserInfo.Serialize()); postValues.Add("systemCode", BaseSystemInfo.SystemCode); // 若ip地址没有传递过来,就获取BS客户端ip地址 postValues.Add("ipAddress", Utils.GetIp()); // BS 登录容易引起混乱, // postValues.Add("macAddress", BaseSystemInfo.UserInfo.MACAddress); postValues.Add("securityKey", BaseSystemInfo.SecurityKey); postValues.Add("openId", openId); // 向服务器发送POST数据 var responseArray = webClient.UploadValues(url, postValues); var response = Encoding.UTF8.GetString(responseArray); if (!string.IsNullOrEmpty(response)) { userLogonResult = JsonUtil.JsonToObject <UserLogonResult>(response); } // 检查身份 if (userLogonResult != null && userLogonResult.Status == Status.Ok) { Logon(userLogonResult.UserInfo, false); } } return(userLogonResult); }
/// <summary> /// 授权码登录 /// </summary> /// <param name="authorizationCode"></param> /// <param name="transparent"></param> /// <param name="useCaching"></param> /// <param name="useDataBase"></param> /// <param name="useUserCenterHost"></param> /// <returns></returns> public static UserLogonResult LogonByAuthorizationCode(string authorizationCode, bool transparent = false, bool useCaching = true, bool useDataBase = true, bool useUserCenterHost = true) { // 统一的登录服务 UserLogonResult result = null; var openId = string.Empty; if (BaseUserManager.VerifyAuthorizationCode(null, authorizationCode, out openId)) { result = LogonByOpenId(openId, transparent, useCaching, useDataBase, useUserCenterHost); } return(result); }
/// <summary> /// 按唯一识别码登录 /// </summary> /// <param name="taskId">任务标识</param> /// <param name="userInfo">用户</param> /// <param name="openId">唯一识别码</param> /// <returns>用户实体</returns> public UserLogonResult LogonByOpenId(string taskId, BaseUserInfo userInfo, string openId) { var result = new UserLogonResult(); var parameter = ServiceInfo.Create(taskId, userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { // 先侦测是否在线 var userLogonManager = new BaseUserLogonManager(); userLogonManager.CheckOnline(); // 若是单点登录,那就不能判断ip地址,因为不是直接登录,是间接登录 var userManager = new BaseUserManager(userInfo); result = userManager.LogonByOpenId(openId, userInfo.SystemCode, string.Empty, string.Empty); }); return(result); }
/// <summary> /// 登录 /// </summary> /// <param name="taskId">任务标识</param> /// <param name="userInfo">用户</param> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <param name="openId">单点登录标识</param> /// <returns>登录实体类</returns> public UserLogonResult UserLogon(string taskId, BaseUserInfo userInfo, string userName, string password, string openId) { var result = new UserLogonResult(); var parameter = ServiceInfo.Create(taskId, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { var userManager = new BaseUserManager(userInfo) { CheckIsAdministrator = true }; result = userManager.LogonByUserName(userName, password, userInfo.SystemCode, openId); //2016-02-16 吉日嘎拉 记录用户日志用 parameter.UserInfo = result.UserInfo; }); return(result); }
/// <summary> /// 登录 /// </summary> /// <param name="taskId">任务标识</param> /// <param name="userInfo">用户</param> /// <param name="nickName">昵称</param> /// <param name="password">密码</param> /// <param name="openId">单点登录标识</param> /// <returns>登录实体类</returns> public UserLogonResult LogonByNickName(string taskId, BaseUserInfo userInfo, string nickName, string password, string openId) { var result = new UserLogonResult(); var parameter = ServiceInfo.Create(taskId, userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { // 先侦测是否在线 // userLogonManager.CheckOnline(); // 再进行登录 var userManager = new BaseUserManager(userInfo) { CheckIsAdministrator = true }; result = userManager.LogonByNickName(nickName, password, openId, userInfo.SystemCode); }); return(result); }
/// <summary> /// 检查用户的登录许可信息 /// </summary> /// <param name="userEntity">用户实体</param> /// <param name="userLogonEntity">用户登录实体</param> /// <returns>用户登录信息</returns> public static UserLogonResult CheckUser(BaseUserEntity userEntity, BaseUserLogonEntity userLogonEntity) { var result = new UserLogonResult(); //int errorMark = 0; // 05. 是否允许登录,是否离职是否正确 if (!string.IsNullOrEmpty(userEntity.AuditStatus) && userEntity.AuditStatus.EndsWith(AuditStatus.WaitForAudit.ToString())) { result.Status = Status.WaitForAudit; result.StatusCode = AuditStatus.WaitForAudit.ToString(); result.StatusMessage = AuditStatus.WaitForAudit.ToDescription(); //errorMark = 1; return(result); } // 用户是否有效的 if (userEntity.Enabled == 0) { result.Status = Status.LogonDeny; result.StatusCode = Status.LogonDeny.ToString(); result.StatusMessage = Status.LogonDeny.ToDescription(); //errorMark = 2; return(result); } // 用户是否有效的 if (userEntity.Enabled == -1) { result.Status = Status.UserNotActive; result.StatusCode = Status.UserNotActive.ToString(); result.StatusMessage = Status.UserNotActive.ToDescription(); //errorMark = 3; return(result); } // 01: 系统是否采用了在线用户的限制, 这里是登录到哪个表里去? //errorMark = 6; // 2015-12-08 吉日嘎拉 if (userLogonEntity == null) { result.Status = Status.MissingData; result.StatusCode = Status.MissingData.ToString(); result.StatusMessage = Status.MissingData.ToDescription(); return(result); } // 06. 允许登录时间是否有限制 // 2015-05-28 jirigala 子系统的用户是否有效的 //errorMark = 7; if (userLogonEntity.Enabled == 0) { //errorMark = 8; result.Status = Status.LogonDeny; result.StatusCode = Status.LogonDeny.ToString(); result.StatusMessage = Status.LogonDeny.ToDescription(); return(result); } //errorMark = 11; if (userLogonEntity.AllowEndTime != null) { //errorMark = 12; //userLogonEntity.AllowEndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, userLogonEntity.AllowEndTime.Value.Hour, userLogonEntity.AllowEndTime.Value.Minute, userLogonEntity.AllowEndTime.Value.Second); } //errorMark = 13; if (userLogonEntity.AllowStartTime != null) { //errorMark = 14; //userLogonEntity.AllowStartTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, userLogonEntity.AllowStartTime.Value.Hour, userLogonEntity.AllowStartTime.Value.Minute, userLogonEntity.AllowStartTime.Value.Second); //errorMark = 15; if (DateTime.Now < userLogonEntity.AllowStartTime) { result.Status = Status.ServiceNotStart; result.StatusCode = Status.ServiceNotStart.ToString(); result.StatusMessage = Status.ServiceNotStart.ToDescription(); //errorMark = 17; return(result); } } //errorMark = 18; if (userLogonEntity.AllowEndTime != null) { //errorMark = 19; if (DateTime.Now > userLogonEntity.AllowEndTime) { result.Status = Status.ServiceExpired; result.StatusCode = Status.ServiceExpired.ToString(); result.StatusMessage = Status.ServiceExpired.ToDescription(); //errorMark = 20; return(result); } } // 07. 锁定日期是否有限制 //errorMark = 21; if (userLogonEntity.LockStartTime != null) { //errorMark = 22; if (DateTime.Now > userLogonEntity.LockStartTime) { //errorMark = 23; if (userLogonEntity.LockEndTime == null || DateTime.Now < userLogonEntity.LockEndTime) { result.Status = Status.UserLocked; result.StatusCode = Status.UserLocked.ToString(); result.StatusMessage = Status.UserLocked.ToDescription(); //errorMark = 24; return(result); } } } //errorMark = 25; if (userLogonEntity.LockEndTime != null) { //errorMark = 26; if (DateTime.Now < userLogonEntity.LockEndTime) { //errorMark = 27; result.Status = Status.UserLocked; result.StatusCode = Status.UserLocked.ToString(); result.StatusMessage = Status.UserLocked.ToDescription(); //errorMark = 28; return(result); } } result.Status = Status.Ok; result.StatusCode = Status.Ok.ToString(); result.StatusMessage = Status.Ok.ToDescription(); return(result); }