Hallo guys!
I always was disappointed about the fact that users might only be searched by their email or login. Here is a little extension that makes it possible to search in all of the user's data.
Here is what you have to do:
1) add the line that is bold and underlined in the file admin/users/users.ascx
<asp:DropDownList id="ddlSearchType" Runat="server">
<asp:ListItem Value="all" resourcekey="All.Header">All</asp:ListItem>
<asp:ListItem Value="username" resourcekey="Username.Header">Username</asp:ListItem>
<asp:ListItem Value="email" resourcekey="Email.Header">Email</asp:ListItem>
</asp:DropDownList>
1) add this code in the file admin/Users/Users.ascxline at line 142:
REPLACE THIS :
If SearchField = "email" Then
colMembers = AspNetSecurity.Membership.FindUsersByEmail(strFilter, CurrentPage - 1, PageSize, TotalRecords)
Else
colMembers = AspNetSecurity.Membership.FindUsersByName(strFilter + "%", CurrentPage - 1, PageSize, TotalRecords)
End If
WITH THIS :
If SearchField = "email" Then
colMembers = AspNetSecurity.Membership.FindUsersByEmail(strFilter, CurrentPage - 1, PageSize, TotalRecords)
ElseIf SearchField = "all" Then 'added by fabian
'filter out the matching users
colMembers = AspNetSecurity.Membership.GetAllUsers
Dim myProfileCommon As New ProfileCommon
For Each colMembersUsers In colMembers
Dim myProfileBase As ProfileBase = myProfileCommon.GetProfile(colMembersUsers.UserName)
If colMembersUsers.UserName Like "*" & strFilter & "*" OrElse _
colMembersUsers.Email Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("FirstName") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("LastName") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("Unit") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("Street") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("City") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("Region") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("PostalCode") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("Country") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("Fax") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("Cell") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("Website") Like "*" & strFilter & "*" OrElse _
myProfileBase.GetPropertyValue("IM") Like "*" & strFilter & "*" Then
colMembersUsersUnauthenticated.Add(colMembersUsers)
End If
Next
colMembers = colMembersUsersUnauthenticated
' Hide 'Records per Page' and pagingcontrol while diplaying UnAuthorized members, since they are not used here
Label5.Visible = False
ddlRecordsPerPage.Visible = False
ctlPagingControl.Visible = False
Else
colMembers = AspNetSecurity.Membership.FindUsersByName(strFilter + "%", CurrentPage - 1, PageSize, TotalRecords)
End If
I do not know if this is the best way to go. If you have any critique - thank you for a feedback.
Regards,
Fabian