protected DataTable GetUser(string organizeId = null, bool containSelf = true)
    {
        DataTable dtUser  = null;
        var       manager = new PiUserManager(this.RDIFrameworkDbProvider, this.UserInfo);

        string sqlQuery = string.Empty;

        sqlQuery = " SELECT * "
                   + "   FROM " + PiUserTable.TableName
                   + "  WHERE (" + PiUserTable.FieldDeleteMark + " = 0 "
                   + "       AND " + PiUserTable.FieldEnabled + " = 1 "
                   + "       AND " + PiUserTable.FieldIsVisible + " = 1 ";

        if (!string.IsNullOrEmpty(organizeId))
        {
            sqlQuery += " AND " + PiUserTable.FieldDepartmentId + " = '" + organizeId + "' ";
        }
        sqlQuery += " ) ";
        if (containSelf)
        {
            sqlQuery += " OR ( " + PiUserTable.FieldId + "='" + this.UserInfo.Id + "')";
        }

        sqlQuery += " ORDER BY " + PiUserTable.FieldSortCode;

        dtUser           = manager.Fill(sqlQuery);
        dtUser.TableName = PiUserTable.TableName;
        return(dtUser);
    }
예제 #2
0
        /// <summary>
        /// 按条件分页查询
        /// </summary>
        /// <param name="userId">查看用户</param>
        /// <param name="auditStatus">审核状态</param>
        /// <param name="searchValue">查询字段</param>
        /// <param name="recordCount">记录数</param>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">每页显示</param>
        /// <param name="sortExpression">排序字段</param>
        /// <param name="sortDire">排序方向</param>
        /// <returns>数据表</returns>
        public DataTable GetDataTableByPage(string userId, string searchValue, out int recordCount, int pageIndex = 1, int pageSize = 20, string sortExpression = "CreateOn", string sortDire = "DESC")
        {
            string whereConditional = CustomerTable.FieldDeleteMark + " = 0 ";
            // 可以看自己公司的数据
            // whereConditional += " AND " + CustomerEntity.FieldCompanyId + " = '" + this.UserInfo.CompanyId + "'";
            // 用户在某个部门
            PiUserManager userManager = new PiUserManager(this.UserInfo);

            if (userManager.IsInOrganize(this.UserInfo.Id, "技术组") || userManager.IsInOrganize(this.UserInfo.Id, "管理组"))
            {
                // 可以看全部
            }
            else if (!string.IsNullOrEmpty(userId))
            {
                // 只能看自己的
                whereConditional += " AND (" + CustomerTable.FieldCreateUserId + " = '" + userId + "')";
            }
            else
            {
                // 可以看自己部门的数据
                // whereConditional += " AND " + CustomerEntity.FieldDepartmentId + " = '" + this.UserInfo.DepartmentId + "'";
            }

            //auditStatus = auditStatus.Trim();
            //if (!string.IsNullOrEmpty(auditStatus))
            //{
            //    auditStatus = this.DBProvider.SqlSafe(auditStatus);
            //    whereConditional += " AND (" + CustomerTable.FieldAuditStatus + " = '" + auditStatus + "')";
            //}

            searchValue = searchValue.Trim();
            if (!string.IsNullOrEmpty(searchValue))
            {
                searchValue = this.DBProvider.SqlSafe(searchValue);
                if (searchValue.IndexOf("%") < 0)
                {
                    searchValue = "'%" + searchValue + "%'";
                }
                whereConditional += " AND (" + CustomerTable.FieldCreateBy + " LIKE " + searchValue;

                whereConditional += " OR " + CustomerTable.FieldFullName + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldShortName + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldCompanyName + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldCompanyAddress + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldPostalCode + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldCompanyPhone + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldCompanyFax + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldWebAddress + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldLicenceNo + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldChieftain + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldBank + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldBankAccount + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldLocalTaxNo + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldNationalTaxNo + " LIKE " + searchValue;
                whereConditional += " OR " + CustomerTable.FieldDescription + " LIKE " + searchValue;

                whereConditional += " OR " + CustomerTable.FieldModifiedBy + " LIKE " + searchValue + ")";
            }
            return(GetDTByPage(out recordCount, pageIndex, pageSize, sortExpression, sortDire, this.CurrentTableName, whereConditional, "*"));
        }
예제 #3
0
    /// <summary>
    /// 用户忘记密码,发送密码
    /// </summary>
    /// <param name="userName">用户名</param>
    /// <param name="returnStatusCode">状态码</param>
    /// <param name="returnStatusMessage">状态信息</param>
    /// <returns>成功发送密码</returns>
    public static bool SendPassword(string userName, out string returnStatusCode, out string returnStatusMessage)
    {
        bool returnValue = false;

        // 1.用户是否找到?默认是未找到用户状态
        returnStatusCode    = StatusCode.UserNotFound.ToString();
        returnStatusMessage = "用户未找到,请重新输入用户名。";
        // 用户数据库进行差找用户操作
        IDbProvider dbProvider = new SqlProvider(RDIFrameworkDbConection);

        dbProvider.Open();
        PiUserManager userManager = new PiUserManager(dbProvider);
        // 2.用户是否已被删除?
        var parameters = new List <KeyValuePair <string, object> >();

        parameters.Add(new KeyValuePair <string, object>(PiUserTable.FieldUserName, userName));
        parameters.Add(new KeyValuePair <string, object>(PiUserTable.FieldDeleteMark, 0));
        var userEntity = BaseEntity.Create <PiUserEntity>(userManager.GetDT(parameters, 0, string.Empty));

        dbProvider.Close();
        // 是否已找到了此用户
        if (userEntity != null && !string.IsNullOrEmpty(userEntity.Id.ToString()))
        {
            // 3.用户是否有效的?
            if (userEntity.Enabled == 1)
            {
                if (!string.IsNullOrEmpty(userEntity.Email))
                {
                    // 5.重新产生随机密码?
                    // 6.发送邮件给用户?
                    // 7.重新设置用户密码?
                    returnValue         = SendPassword(userEntity);
                    returnStatusCode    = StatusCode.OK.ToString();
                    returnStatusMessage = "新密码已发送到您的注册邮箱" + userEntity.Email + "。";
                }
                else
                {
                    // 4.用户是否有邮件账户?
                    returnStatusCode    = StatusCode.UserNotEmail.ToString();
                    returnStatusMessage = "用户没有电子邮件地址,无法从新设置密码,请您及时联系系统管理员。";
                }
            }
            else
            {
                if (userEntity.Enabled == 0)
                {
                    returnStatusCode    = StatusCode.UserLocked.ToString();
                    returnStatusMessage = "用户被锁定,不允许设置密码。";
                }
                else
                {
                    returnStatusCode    = StatusCode.UserNotActive.ToString();
                    returnStatusMessage = "用户还未被激活,不允许设置密码。";
                }
            }
        }
        return(returnValue);
    }
예제 #4
0
    /// <summary>
    /// 发送密码给指定的邮箱
    /// </summary>
    /// <param name="userEntity">用户实体</param>
    /// <returns>成功发送邮件</returns>
    private static bool SendPassword(PiUserEntity userEntity)
    {
        bool        returnValue = false;
        IDbProvider dbProvider  = new SqlProvider(RDIFrameworkDbConection);
        UserInfo    userInfo    = null;

        try
        {
            string password = RandomHelper.GetRandom(100000, 999999).ToString();
            using (var mailMessage = new System.Net.Mail.MailMessage())
            {
                // 接收人邮箱地址
                mailMessage.To.Add(new System.Net.Mail.MailAddress(userEntity.Email));
                mailMessage.Body         = GetSendPasswordBody(userEntity, password);
                mailMessage.From         = new System.Net.Mail.MailAddress("*****@*****.**", ".NET快速开发、整合框架");
                mailMessage.BodyEncoding = Encoding.GetEncoding("GB2312");
                mailMessage.Subject      = ".NET快速开发、整合框架 新密码。";
                mailMessage.IsBodyHtml   = true;
                var smtpclient = new System.Net.Mail.SmtpClient("SMTP.126.COM", 25);
                smtpclient.Credentials = new System.Net.NetworkCredential("*****@*****.**", "abcd");
                smtpclient.EnableSsl   = false;
                smtpclient.Send(mailMessage);
                returnValue = true;
                // 修改用户的密码
                // 用户数据库进行差找用户操作
                dbProvider.Open();
                PiUserManager userManager = new PiUserManager(dbProvider);
                userInfo = userManager.ConvertToUserInfo(userEntity);
                userManager.SetParameter(userInfo);
                // 密码进行加密,读取网站的密钥
                password = userManager.EncryptUserPassword(password);
                userManager.SetPassword(userEntity.Id.ToString(), password);
            }
        }
        catch (System.Exception exception)
        {
            // 若有异常,应该需要保存异常信息
            CiExceptionManager.LogException(dbProvider, userInfo, exception);
            returnValue = false;
        }
        finally
        {
            dbProvider.Close();
        }
        return(returnValue);
    }
    /// <summary>
    /// 获取用户列表
    /// </summary>
    /// <param name="ddlUser">用户选项</param>
    /// <param name="organizeId">部门主键</param>
    /// <param name="insertBlank">插入空行</param>
    protected void GetUserByPermissionScope(DropDownList ddlUser, string organizeId = null, bool insertBlank = false, string permissionItemCode = "Resource.ManagePermission")
    {
        var       manager = new PiUserManager(this.RDIFrameworkDbProvider, this.UserInfo);
        DataTable dtUser  = null;

        if (string.IsNullOrEmpty(organizeId))
        {
            if (this.UserInfo.IsAdministrator)
            {
                dtUser = manager.GetDT();
            }
            else
            {
                dtUser = RDIFrameworkService.Instance.PermissionService.GetUserDTByPermissionScope(userInfo, userInfo.Id, permissionItemCode);
                if (!string.IsNullOrEmpty(organizeId))
                {
                    BusinessLogic.SetFilter(dtUser, PiUserTable.FieldDepartmentId, organizeId);
                }
                // 至少要把自己显示出来,否则难控制权限了
                if (dtUser == null || dtUser.Rows.Count == 0)
                {
                    var userManager = new PiUserManager(userInfo);
                    dtUser = userManager.GetDTById(this.UserInfo.Id);
                }
            }
        }
        else
        {
            dtUser = manager.GetDataTableByOrganizes(new string[] { organizeId });
        }
        ddlUser.SelectedValue  = null;
        ddlUser.DataValueField = PiUserTable.FieldId;
        ddlUser.DataTextField  = PiUserTable.FieldRealName;
        ddlUser.DataSource     = dtUser;
        ddlUser.DataBind();
        if (this.UserInfo.IsAdministrator || insertBlank)
        {
            ddlUser.Items.Insert(0, new ListItem());
        }
    }
예제 #6
0
    //
    // 五 用用户名密码登录部分
    //

    #region public static UserInfo LogOn(string userName, string password, bool checkUserPassword = true)
    /// <summary>
    /// 验证用户
    /// </summary>
    /// <param name="userName">用户名</param>
    /// <param name="password">密码</param>
    /// <param name="checkUserPassword">是否要检查用户密码</param>
    public static UserInfo LogOn(string userName, string password, bool checkUserPassword)
    {
        var userManager = new PiUserManager(Utils.GetUserInfo());

        return(userManager.LogOn(userName, password, string.Empty, false, HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"], string.Empty, checkUserPassword));
    }
예제 #7
0
        /// <summary>
        /// 按条件分页查询
        /// </summary>
        /// <param name="userId">查看用户</param>
        /// <param name="searchValue">查询字段</param>
        /// <param name="recordCount">记录数</param>
        /// <param name="pageIndex">当前页</param>
        /// <param name="pageSize">每页显示</param>
        /// <param name="sortExpression">排序字段</param>
        /// <param name="sortDire">排序方向</param>
        /// <returns>数据表</returns>
        public DataTable GetDataTableByPage(string userId, string searchValue, out int recordCount, int pageIndex = 1, int pageSize = 20, string sortExpression = "CreateOn", string sortDire = "DESC")
        {
            string whereConditional = LinkManTable.FieldDeleteMark + " = 0 ";
            // 可以看自己公司的数据
            // whereConditional += " AND " + LinkManTable.FieldCompanyId + " = '" + this.UserInfo.CompanyId + "'";
            // 用户在某个部门
            PiUserManager userManager = new PiUserManager(this.UserInfo);

            if (userManager.IsInOrganize(this.UserInfo.Id, "技术组") || userManager.IsInOrganize(this.UserInfo.Id, "管理组"))
            {
                // 可以看全部
            }
            else if (!string.IsNullOrEmpty(userId))
            {
                // 只能看自己的
                whereConditional += " AND (" + LinkManTable.FieldCreateUserId + " = '" + userId + "')";
            }
            else
            {
                // 可以看自己部门的数据
                // whereConditional += " AND " + LinkManEntity.FieldDepartmentId + " = '" + this.UserInfo.DepartmentId + "'";
            }

            //auditStatus = auditStatus.Trim();
            //if (!string.IsNullOrEmpty(auditStatus))
            //{
            //    auditStatus = this.DBProvider.SqlSafe(auditStatus);
            //    whereConditional += " AND (" + LinkManTable.FieldAuditStatus + " = '" + auditStatus + "')";
            //}

            searchValue = searchValue.Trim();
            if (!string.IsNullOrEmpty(searchValue))
            {
                searchValue = this.DBProvider.SqlSafe(searchValue);
                if (searchValue.IndexOf("%") < 0)
                {
                    searchValue = "'%" + searchValue + "%'";
                }
                whereConditional += " AND (" + LinkManTable.FieldCreateBy + " LIKE " + searchValue;

                whereConditional += " OR " + LinkManTable.FieldName + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldSex + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldPostion + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldDepartment + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldMobilePhone + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldTelephone + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldShortNumber + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldIDCard + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldOfficeAddress + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldOfficeFax + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldHomePhone + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldEducation + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldSchool + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldDegree + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldHomeZipCode + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldHomeAddress + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldHomeFax + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldNativePlace + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldParty + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldNation + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldNationality + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldMajor + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldEducationalBackground + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldBloodType + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldQQ + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldEmail + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldInterest + " LIKE " + searchValue;
                whereConditional += " OR " + LinkManTable.FieldDescription + " LIKE " + searchValue;

                whereConditional += " OR " + LinkManTable.FieldModifiedBy + " LIKE " + searchValue + ")";
            }

            return(GetDTByPage(out recordCount, pageIndex, pageSize, sortExpression, sortDire, this.CurrentTableName, whereConditional, "*"));
        }
    // 用户是否在某个部门(按编号,按名称的,按简称的)

    #region public bool UserIsInOrganize(string organizeName)
    /// <summary>
    /// 用户是否在某个组织架构里的判断
    /// </summary>
    /// <param name="organizeName">角色编号</param>
    /// <returns>是否在某个角色里</returns>
    public bool UserIsInOrganize(string organizeName)
    {
        var userManager = new PiUserManager(this.RDIFrameworkDbProvider, userInfo);

        return(userManager.IsInOrganize(this.UserInfo.Id, organizeName));
    }
    // 用户是否在某个角色里(按编号,按名称的)

    #region public bool UserIsInRole(string roleCode)
    /// <summary>
    /// 用户是否在某个角色里
    /// </summary>
    /// <param name="roleCode">角色编号</param>
    /// <returns>是否在某个角色里</returns>
    public bool UserIsInRole(string roleCode)
    {
        var userManager = new PiUserManager(this.RDIFrameworkDbProvider, userInfo);

        return(userManager.IsInRoleByCode(this.UserInfo.Id, roleCode));
    }