Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        /// <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);
        }