Example #1
0
 public virtual ReturnInfo <IList <UserInfo> > QueryByFilter(UserFilterInfo filter, string connectionId = null)
 {
     return(ExecReturnFunc <IList <UserInfo> >((reInfo) =>
     {
         return Persistence.SelectByFilter(filter, connectionId);
     }));
 }
        /// <summary>
        /// 追加查询分页SQL
        /// </summary>
        /// <param name="whereSql">where语句</param>
        /// <param name="parameters">参数</param>
        /// <param name="filter">筛选</param>
        protected override void AppendSelectPageWhereSql(StringBuilder whereSql, DynamicParameters parameters, FilterInfo filter = null)
        {
            whereSql.AppendFormat(" AND [{0}]=@SystemHide", GetFieldByProp("SystemHide"));
            parameters.Add("@SystemHide", false);

            if (filter is UserFilterInfo)
            {
                UserFilterInfo userFilter = filter as UserFilterInfo;
                if (userFilter.Enabled != null)
                {
                    whereSql.AppendFormat(" AND [{0}]=@Enabled", GetFieldByProp("Enabled"));
                    parameters.Add("@Enabled", userFilter.Enabled);
                }
            }
        }
        /// <summary>
        /// 根据筛选条件查询用户列表
        /// </summary>
        /// <param name="filter">筛选</param>
        /// <param name="connectionId">连接ID</param>
        /// <returns>用户列表</returns>
        public IList <UserInfo> SelectByFilter(UserFilterInfo filter, string connectionId = null)
        {
            DynamicParameters parameters;
            StringBuilder     whereSql = MergeWhereSql(filter, out parameters);

            IList <UserInfo> result = null;

            DbConnectionManager.BrainpowerExecute(connectionId, this, (connId, dbConn) =>
            {
                string sql = $"{SelectSql()} " + whereSql.ToString();
                result     = dbConn.Query <UserInfo>(sql, parameters).AsList();
            }, AccessMode.SLAVE);

            return(result);
        }
        /// <summary>
        /// 获取查询分页连接SQL
        /// </summary>
        /// <param name="parameters">参数</param>
        /// <param name="filter">筛选</param>
        /// <returns>连接SQL语句</returns>
        protected override string GetSelectPageJoinSql(DynamicParameters parameters, FilterInfo filter = null)
        {
            if (filter is UserFilterInfo)
            {
                UserFilterInfo userFilter = filter as UserFilterInfo;
                if (userFilter.RoleId == null)
                {
                    return(null);
                }

                parameters.Add("@RoleId", userFilter.RoleId);
                return("INNER JOIN user_role UR ON UR.user_id=[user[.id AND UR.role_id=@RoleId");
            }

            return(null);
        }
Example #5
0
        public IActionResult TestLdapFilters([FromBody] UserFilterInfo body)
        {
            var configuration = LdapPlugin.Instance.Configuration;

            configuration.LdapSearchFilter = body.LdapSearchFilter;
            configuration.LdapAdminFilter  = body.LdapAdminFilter;
            LdapPlugin.Instance.UpdateConfiguration(configuration);

            var usersComplete = false;

            try
            {
                var response = new LdapFilterResponse();

                var users = _ldapAuthenticationProvider.GetFilteredUsers(configuration.LdapSearchFilter).ToHashSet();
                response.Users = users.Count;
                usersComplete  = true;

                HashSet <string> admins = new HashSet <string>();
                if (!string.IsNullOrEmpty(configuration.LdapAdminFilter) && !string.Equals(configuration.LdapAdminFilter, "_disabled_", StringComparison.Ordinal))
                {
                    admins = _ldapAuthenticationProvider.GetFilteredUsers(configuration.LdapAdminFilter).ToHashSet();
                }

                response.Admins   = admins.Count;
                response.IsSubset = admins.IsSubsetOf(users);

                return(Ok(response));
            }
            catch (AuthenticationException e)
            {
                return(Unauthorized(new LdapTestErrorResponse(e.Message)));
            }
            catch (LdapException e)
            {
                var filterLabel = usersComplete ? "Admin Filter: " : "User Filter: ";

                var filterMessage = Regex.Match(e.ToString(), @"LdapLocalException: (?<message>.*) \(\d+\) Filter Error");
                if (filterMessage.Success)
                {
                    return(BadRequest(new LdapTestErrorResponse(filterLabel + filterMessage.Groups["message"].Value)));
                }

                return(BadRequest(new LdapTestErrorResponse(filterLabel + e.Message)));
            }
        }
Example #6
0
        public IList <UserInfo> SearchUser(UserFilterInfo filterInfo)
        {
            IList <UserInfo> userInfos = null;

            switch (filterInfo.OrganizationType)
            {
            case OrganizationType.Company:
            case OrganizationType.Department:

                DepartmentUserSearcher deparUserFilter = new DepartmentUserSearcher(this.OrganizationManager);
                deparUserFilter.Account       = filterInfo.Account;
                deparUserFilter.AccountOrName = filterInfo.AccountOrName;
                deparUserFilter.DepartmentId  = filterInfo.OrganizationId;
                deparUserFilter.Name          = filterInfo.Name;
                deparUserFilter.Recursive     = filterInfo.Recursive;

                userInfos = deparUserFilter.Search().Select(x => x.MapUserInfo()).ToList();
                break;

            case OrganizationType.GeneralManagerPosition:
            case OrganizationType.ManagerPosition:
            case OrganizationType.Position:
            case OrganizationType.VirtualPosition:

                PositionUserSearcher positionUserFilter = new PositionUserSearcher(this.OrganizationManager);
                positionUserFilter.Account    = filterInfo.Account;
                positionUserFilter.PositionId = filterInfo.OrganizationId;
                positionUserFilter.Name       = filterInfo.Name;
                positionUserFilter.Recursive  = filterInfo.Recursive;

                userInfos = positionUserFilter.Search().Select(x => x.MapUserInfo()).ToList();
                break;
            }
            if (userInfos == null)
            {
                userInfos = new List <UserInfo>();
            }
            return(userInfos);
        }
        public virtual FileContentResult Export()
        {
            IDictionary <string, string> dicParams = Request.QueryString.Value.ToDictionaryFromUrlParams();
            UserFilterInfo filter = dicParams.ToObject <UserFilterInfo, string>();
            ReturnInfo <IList <UserInfo> > returnInfo = Service.QueryByFilter(filter);

            if (returnInfo.Failure())
            {
                return(File(new byte[] { 0 }, null));
            }

            Response.Headers.Add("Content-Disposition", "attachment;filename=" + WebUtility.UrlEncode("用户_" + DateTime.Now.ToFixedDate() + ".xls"));

            try
            {
                return(File(returnInfo.Data.ToExcelBytes(), "application/vnd.ms-excel"));
            }
            catch (Exception ex)
            {
                Log.ErrorAsync("导出Excel发生异常", ex);
                return(null);
            }
        }
Example #8
0
        public virtual FileContentResult Export()
        {
            var comData = HttpContext.CreateCommonUseData(ComUseDataFactory, menuCode: MenuCode(), functionCodes: FunCodeDefine.EXPORT_EXCEL_CODE);
            IDictionary <string, string> dicParams = Request.QueryString.Value.ToDictionaryFromUrlParams();
            UserFilterInfo filter = dicParams.ToObject <UserFilterInfo, string>();
            ReturnInfo <IList <UserInfo> > returnInfo = Service.QueryByFilter(filter, comData);

            if (returnInfo.Failure())
            {
                return(File(new byte[] { 0 }, null));
            }

            Response.Headers.Add("Content-Disposition", "attachment;filename=" + WebUtility.UrlEncode("用户_" + DateTime.Now.ToFixedDate() + ".xlsx"));

            try
            {
                return(File(returnInfo.Data.ToExcelBytes(), "application/vnd.ms-excel"));
            }
            catch (Exception ex)
            {
                Log.ErrorAsync("导出Excel发生异常", ex);
                return(null);
            }
        }