Example #1
0
        //用户管理重置密码
        public void ResetPsw()
        {
            try
            {
                using (ProxyBE p = new ProxyBE())
                {
                    Guid userid = new Guid(Request["UserID"]);
                    User user   = p.Client.GetUser(SenderUser, userid);
                    if (user == null)
                    {
                        throw new Exception("所查找用户不存在。");
                    }

                    user.Password        = CEncrypt.EncryptString(UserDefaultPassword);
                    user.LoginErrorCount = 0;
                    user.IsLocked        = false;
                    user.IsDisabled      = false;
                    SaveUserArgs sarg = new SaveUserArgs();
                    sarg.User = user;
                    p.Client.SaveUser(SenderUser, sarg);
                    WriteSuccess();
                }
            }
            catch (Exception ex)
            {
                WriteError(ex.Message, ex);
            }
        }
Example #2
0
        //当前用户修改密码
        public void ModifiyPsw()
        {
            string OldPassword = Request["OldPassword"];
            string NewPassword = Request["NewPassword"];

            try
            {
                using (ProxyBE p = new ProxyBE())
                {
                    User user = p.Client.GetUser(SenderUser, this.CurrentUser.UserID);

                    if (CEncrypt.DecryptString(user.Password) != OldPassword)
                    {
                        throw new Exception("旧密码错误");
                    }
                    user.Password = CEncrypt.EncryptString(NewPassword);
                    SaveUserArgs sarg = new SaveUserArgs();
                    sarg.User = user;
                    p.Client.SaveUser(SenderUser, sarg);
                    WriteSuccess();
                }
            }
            catch (Exception ex)
            {
                WriteError(ex.Message, ex);
            }
        }
Example #3
0
        private void SaveRole(string userID, string rolesfunids)
        {
            using (ProxyBE p = new ProxyBE())
            {
                List <System.Guid> roleItemIDs = new List <System.Guid>();
                SaveUserArgs       sargs       = new SaveUserArgs();
                if (!string.IsNullOrEmpty(rolesfunids))
                {
                    string[] roles = rolesfunids.Split(',');
                    foreach (string item in roles)
                    {
                        roleItemIDs.Add(new Guid(item));
                    }
                }

                var userItem = p.Client.GetUser(SenderUser, new Guid(userID));
                if (userItem == null)
                {
                    return;
                }
                sargs.RoleIDs = roleItemIDs;
                sargs.User    = userItem;
                //保存用户时,只要把角色赋值给它即可,引擎会自动处理.
                p.Client.SaveUser(SenderUser, sargs);
            }
        }
Example #4
0
        /// <summary>
        /// Save User
        /// </summary>
        public void SaveUser()
        {
            using (ProxyBE p = new ProxyBE())
            {
                try
                {
                    if (Request["DepartmentID"] == "请选择")
                    {
                        throw new Exception("请选择所属部门");
                    }

                    User user = p.Client.GetUser(null, parm.UserID);
                    if (user == null)
                    {
                        user            = new User();
                        user.UserID     = parm.UserID;
                        user.Created    = DateTime.Now;
                        user.CreatedBy  = SenderUser.UserCode + "." + SenderUser.UserName;
                        user.Modified   = DateTime.Now;
                        user.ModifiedBy = SenderUser.UserCode + "." + SenderUser.UserName;
                        user.Password   = CEncrypt.EncryptString(UserDefaultPassword);
                    }
                    user.UserCode = parm.UserCode.Trim();
                    user.UserName = parm.UserName.Trim();
                    user.Sex      = parm.Sex.Trim();
                    user.Position = parm.Position.Trim();
                    user.Email    = parm.Email.Trim();
                    //手机号码唯一
                    user.Mobile          = parm.Mobile.Trim();
                    user.Description     = parm.Description.Trim();
                    user.IDNumber        = parm.IDNumber;
                    user.LoginErrorCount = 0;
                    user.IsDisabled      = Convert.ToBoolean(parm.IsDisabled);
                    user.IsLocked        = parm.IsLocked;
                    user.DepartmentID    = parm.DepartmentID;
                    SaveUserArgs args = new SaveUserArgs();
                    args.User = user;

                    string RoleIDs = Request["RoleIDs"];
                    if (!string.IsNullOrEmpty(RoleIDs))
                    {
                        args.RoleIDs = new List <Guid>();
                        string[] roles = RoleIDs.Split(',');
                        foreach (string item in roles)
                        {
                            args.RoleIDs.Add(new Guid(item));
                        }
                    }
                    p.Client.SaveUser(SenderUser, args);
                    WriteSuccess();
                }
                catch (Exception ex)
                {
                    WriteError(ex.Message, ex);
                }
            }
        }
Example #5
0
        public void ModifyPassword()
        {
            try
            {
                if (CurrentUser == null || CurrentUser.UserID == Guid.Empty)
                {
                    throw new Exception("未获取到用户信息,请先登录");
                }
                using (ProxyBE be = new ProxyBE())
                {
                    #region 登录
                    User   user     = be.Client.GetUserByUserCode(null, CurrentUser.UserCode);
                    string Password = Request["Password"].ToString();
                    user.Password = CEncrypt.EncryptString(Password);

                    SaveUserArgs args = new SaveUserArgs();
                    args.User = user;
                    be.Client.SaveUser(SenderUser, args);
                    #endregion
                }

                //StringBuilder sb = new StringBuilder();
                //sb.Append("{");
                //sb.AppendFormat("'isOk':{0}", 1);
                //sb.AppendFormat(",'message':'{0}'", "success");
                //sb.AppendFormat(",'url':'{0}'", url);
                //sb.Append("}");
                //Response.Write(sb.ToString());
                Response.Write("{\"result\":\"success\",\"errorCode\":0}");
            }
            catch (Exception ex)
            {
                PLogger.LogError(ex);
                WriteError(ex.Message);
            }
        }
Example #6
0
        public void Login()
        {
            try
            {
                string UserCode   = Request["username"];
                string Password   = Request["password"];
                string VerifyCode = Request["verifycode"];

                if (string.IsNullOrEmpty(UserCode))
                {
                    throw new Exception("用户名不能为空");
                }

                if (VerifyCode.ToLower() != Session["LoginVerifyCode"].ToString().ToLower())
                {
                    throw new PException("验证码不正确");
                }

                using (ProxyBE be = new ProxyBE())
                {
                    #region 登录
                    User user = be.Client.GetUserByUserCode(null, UserCode);

                    if (user == null)
                    {
                        throw new PException("errorUserName");
                    }
                    if (user.IsLocked)
                    {
                        throw new PException("errorLockedUserName");
                    }
                    if (user.IsDisabled)
                    {
                        throw new PException("errorDisabledUserName");
                    }
                    if (user.LoginErrorCount >= 5)
                    {
                        throw new PException("errorLoginOutTimes");
                    }

                    SaveUserArgs args = new SaveUserArgs();
                    //记录当前登录时间
                    if (CEncrypt.EncryptString(Password) != user.Password)
                    {
                        user.LoginErrorCount += 1;
                        PException ex = null;
                        if (user.LoginErrorCount >= 5)
                        {
                            user.IsLocked = true;
                            ex            = new PException("errorLoginOutTimes");
                        }
                        else
                        {
                            ex = new PException("errorPassword{0}", 5 - user.LoginErrorCount);
                        }
                        args.User = user;
                        be.Client.SaveUser(base.SenderUser, args);
                        throw ex;
                    }


                    args.User            = user;
                    user.LoginErrorCount = 0;
                    user.LastLoginTime   = DateTime.Now;
                    be.Client.SaveUser(base.SenderUser, args);

                    SessionUser su = new SessionUser();
                    su.UserCode = user.UserCode;
                    //用户类型
                    su.UserType = (int)UserType.U;
                    //su.LoginUrl = UserLoginUrl;
                    su.UserID        = user.UserID;
                    su.UserName      = user.UserName;
                    su.IsSystemUser  = user.IsSystem;
                    su.LastLoginTime = user.LastLoginTime;
                    su.CompanyID     = user.CompanyID;
                    OnlineUser.Lock(su);
                    this.CurrentUser = su;
                    #endregion

                    #region 加载权限项
                    List <Role> userRoles = be.Client.GetRolesByUserID(null, user.UserID);
                    su.Roles = userRoles;

                    List <PrivilegeItem> privilegeItems = be.Client.GetPrivilegeItemByUserID(null, user.UserID);
                    var privilegeItemS = from pi in privilegeItems select pi.PrivilegeItemID;
                    su.PrivilegeItemIDs = privilegeItemS.ToList <Guid>();

                    List <Privilege> privileges = be.Client.GetPrivilegesByUserID(null, user.UserID);
                    var privilegeS = from pl in privileges select pl.PrivilegeID;
                    su.PrivilegeIDs = privilegeS.ToList <Guid>();

                    Dictionary <string, List <string> > PrivilegeCodesDir = new Dictionary <string, List <string> >();
                    foreach (var item in privileges)
                    {
                        if (PrivilegeCodesDir.ContainsKey(item.PrivilegeCode.ToLower()))
                        {
                            continue;
                        }
                        List <string> itemCodes = new List <string>();
                        var           plItems   = privilegeItems.Where(pl => pl.PrivilegeID.ToString() == item.PrivilegeID.ToString() && pl.IsDisabled == false).ToList();
                        if (plItems != null)
                        {
                            foreach (var itemPrivilegeItems in plItems)
                            {
                                itemCodes.Add(itemPrivilegeItems.PrivilegeItemCode.ToLower());
                            }
                        }
                        PrivilegeCodesDir.Add(item.PrivilegeCode.ToLower(), itemCodes);
                    }
                    su.PrivilegeCodes = PrivilegeCodesDir;
                    #endregion

                    StringBuilder sb = new StringBuilder();
                    sb.Append('{');
                    sb.Append(string.Format("\"isOk\":\"{0}\",\"message\":\"{1}\",\"url\":\"{2}\"", 1, "success", "/Index.aspx"));
                    sb.Append('}');
                    Response.Write(sb.ToString());
                    //WriteSuccess();
                }
            }
            catch (Exception ex)
            {
                PLogger.LogError(ex);
                WriteError(ex.Message);
            }
        }
Example #7
0
        public void SaveUser(Sender sender, SaveUserArgs args)
        {
            try
            {
                if (string.IsNullOrEmpty(args.User.UserCode))
                {
                    throw new Exception(string.Format("用户编号:{0}命名无效,可能存在特殊字符。", args.User.UserCode));
                }

                if (string.IsNullOrEmpty(args.User.UserName))
                {
                    throw new Exception(string.Format("用户名称:{0}命名无效,可能存在特殊字符。", args.User.UserName));
                }

                if (UserIsDuplicated(sender, args.User))
                {
                    throw new Exception(string.Format("用户编号:{0}已存在,请重新输入。", args.User.UserCode));
                }
                if (UserMobileIsDuplicated(sender, args.User))
                {
                    throw new Exception(string.Format("用户手机号:{0}已存在,请重新输入。", args.User.Mobile));
                }
                using (ObjectProxy op = new ObjectProxy(true))
                {
                    User user = new User();
                    user.UserID = args.User.UserID;
                    if (op.LoadUserByUserID(user) == 0)
                    {
                        user = null;
                    }

                    if (user == null)
                    {
                        args.User.Created    = DateTime.Now;
                        args.User.CreatedBy  = sender.UserCode + "." + sender.UserName;
                        args.User.Modified   = args.User.Created;
                        args.User.ModifiedBy = args.User.CreatedBy;
                        op.InsertUser(args.User);
                        UserPassword up = new UserPassword();
                        up.UserID     = args.User.UserID;
                        up.Password   = args.User.Password;
                        up.Modified   = DateTime.Now;
                        up.ModifiedBy = sender.UserCode + "." + sender.UserName;
                        op.InsertUserPassword(up);
                    }
                    else
                    {
                        args.User.Modified   = DateTime.Now;
                        args.User.ModifiedBy = sender.UserCode + "." + sender.UserName;

                        op.UpdateUserByUserID(args.User);
                        if (args.RoleIDs != null)
                        {
                            op.DeleteUser2RolesByUserID(args.User.UserID);
                        }

                        if (args.User.Password != user.Password)
                        {
                            UserPassword up = new UserPassword();
                            up.UserID     = args.User.UserID;
                            up.Password   = args.User.Password;
                            up.Modified   = DateTime.Now;
                            up.ModifiedBy = sender.UserCode + "." + sender.UserName;
                            op.InsertUserPassword(up);
                        }
                    }
                    if (args.RoleIDs != null)
                    {
                        foreach (Guid roleID in args.RoleIDs)
                        {
                            User2Role ur = new User2Role();
                            ur.UserID = args.User.UserID;
                            ur.RoleID = roleID;
                            op.InsertUser2Role(ur);
                        }
                    }
                    op.CommitTransaction();
                }
            }
            catch (Exception ex)
            {
                PLogger.LogError(ex);
                throw ex;
            }
        }
Example #8
0
        public void ResetPasswordByMobile()
        {
            try
            {
                if (string.IsNullOrEmpty(Request["UserID"]))
                {
                    Response.Write("{\"result\":\"error\",\"errorCode\":31}");
                    return;
                }
                if (string.IsNullOrEmpty(Request["Token"]))
                {
                    Response.Write("{\"result\":\"error\",\"errorCode\":31}");
                    return;
                }
                using (ProxyBE p = new ProxyBE())
                {
                    User user = p.Client.GetUser(SenderUser, new Guid(Request["UserID"]));
                    if (user == null)
                    {
                        Response.Write("{\"result\":\"error\",\"errorCode\":31}");
                        return;
                    }

                    #region 验证码
                    string code = Request["SMSVerifyCode"];
                    if (!string.IsNullOrEmpty(code))
                    {
                        if (string.IsNullOrEmpty(Session["SMSVerify_" + user.Mobile].ToString()))
                        {
                            Response.Write("{\"result\":\"error\",\"errorCode\":25}");
                            return;
                        }
                        if (code.ToString().ToUpper() != Session["SMSVerify_" + user.Mobile].ToString().ToUpper())
                        {
                            Response.Write("{\"result\":\"error\",\"errorCode\":26}");
                            return;
                        }

                        string timeout = Session["SMSVerify_TimeOut_" + user.Mobile].ToString();
                        if (!string.IsNullOrEmpty(timeout))
                        {
                            if (DateTime.Now > DateTime.Parse(timeout))
                            {
                                Response.Write("{\"result\":\"error\",\"errorCode\":27}");
                                return;
                            }
                        }
                    }
                    else
                    {
                        Response.Write("{\"result\":\"error\",\"errorCode\":23}");
                        return;
                    }
                    #endregion

                    user.Password = CEncrypt.EncryptString(Request["confirmPassword"].ToString());

                    SaveUserArgs args = new SaveUserArgs();
                    args.User = user;
                    p.Client.SaveUser(SenderUser, args);

                    StringBuilder sb = new StringBuilder();
                    sb.Append("{");
                    sb.AppendFormat("\"result\":\"{0}\",", "success");
                    sb.AppendFormat("\"errorCode\":{0}", 0);
                    sb.Append("}");
                    Response.Write(sb.ToString());
                }
            }
            catch
            {
                Response.Write("{\"result\":\"error\",\"errorCode\":10}");
            }
        }