SharePoint Online: How to show all sites a user has access to?
Requirement: Display a list of all SharePoint Online sites a user has access to.
How do I view all sites I have access to in SharePoint Online?
In SharePoint Online, you may have noticed that there’s no easy way to view all the sites you have access to. Although the SharePoint start page (https://YourDomain.sharepoint.com/_layouts/15/sharepoint.aspx) displays Frequent, Recent, and following sites, It may not give the complete list of all sites you have access. So, it may not be easier to get the site unless the user remembers the URL or bookmarked it.
So, How to view all SharePoint Online sites I have access to? Well, there is a workaround!
Option #1: Use Search to List All the Sites You Have Access
Here is how to use the SharePoint search to get a list of all sites you have access to:
- Login to https://www.office.com >> In the App Launcher, click on “SharePoint” to get the SharePoint Online start page.
- On the search box, type “contentclass:STS_Site” and hit enter.
- Click on the “Sites” tab, and this will show all sites you have access to.
If you want to include subsites as well, use search query: contentclass:STS_Site OR contentclass:STS_Web
Option #2: Create a Page to Show All Sites User has Access
Let’s create a page that shows all sites a user has access to. You can also use the Search results web part to achieve this functionality.
- Go to your SharePoint Site >> Create a new page >> Add a “Highlighted Content web part” web part to it.
- Set the Highlighted Content web part properties as below:
- Content: Source – All Sites, Type – Pages, Filter and sort: Content includes the words – STS_Site
- Set the Layout as “List” and Number of items to 100.
Save and publish the page. This page shows all sites a user has access to in SharePoint Online.
Both methods use search to get all sites you have access to. The security trimming will be applied, and you’ll get sites only you have access.
Thanks very much!
is it possible filter only where user has access as contributor for example. at the moment list included all rights included reader (everyone).
These are great suggestions. For Option #1 is there any way to sort them alphabetically or by most recently accessed?
Hi Salaudeen Rajack !
First of all, wonderful job with this site !
Is there a way to add an “highlighted content web part” to the user homepage ? Actually, I don’t know if it’s possible to modify the user homepage at all.
Thank you
Sure! The default Home page is at: /SitePages/Home.aspx, You can edit and add the web part on your SharePoint Online site.
I misspoke, I was talking about the user portal home page (www.office.com) not the site home page.
Can you query for a specific user? I want to find out a list of sites a specific staff member has access to.
Hi, I’m having the same issue, how to view what folders a specific user has access to…
thank you for your help
Peter
I have the same need. Did you figure this out?
Same question here! Does anyone know?
Took ma while to figure out but if you can’t use the method in this article because the user can’t sign in you can do this with powershell.
#connect to sharepoint admin portal
#verbinding pnp (met deze moet je het per site doen)
$tenants = “id of tenant”
$app = “app which has access to all sites”
$thumprint = “certificate which you have uploaded in the app”
Connect-PnPOnline -Tenant $tenants -ClientId $app -Thumbprint $thumprint -Url https://yourdomain-admin.sharepoint.com/
#get all the sites without the default site, portals or search. This filter also excludes the redirect template sites. Not doing this will give you an unknown error if you do a Get-PnPUser on the site
$sites = Get-PnPTenantSite -Filter ‘Url -notlike “*/portals/*”‘|where {($_.url -notlike “*/search”) -and ($_.url -ne “https://lumconline.sharepoint.com/”) -and ($_.Template -ne “RedirectSite#0”)}|select Url
# Loop through all site collections
foreach ($site in $sites) {Â
Connect-PnPOnline -Url $site.Url -Tenant $tenants -ClientId $app -Thumbprint $thumprint
# This part is only for site collection admin check
# in this case i use a displayname for the user im looking for
$gottem = Get-PnPSiteCollectionAdmin|Where-Object {($_.title -like “*displayname*”)}
if ($gottem -ne $null){Write-Host $gottem.title ” is sitecollection admin on ” $site.url -ForegroundColor Yellow}
# If you want to remove the site collection admin
#Remove-PnPSiteCollectionAdmin -Owners $gottem.Email”
# This part is for users in groepen, AD Groups or root permission
# in this case im using the primary emailadres of the user which should be the same as the UPN
$Users = Get-PnPUser -WithRightsAssigned|Where-Object {$_.Email -eq “mail@adres.com”}
if ($Users -ne $null){Write-Host $Users.Title ” has permissions on ” $site.url -ForegroundColor Green}
}Â Â
PS: If you have a lot of site collections split the search in multiple batches. If you don’t do this it will trough you a timeout error. In my case It trough me an error once but the second time it didnt. I think the sweetspot is checking for around 1500 sites per loop.
Hi, What would I do if I don’t have an app I just need All the Sites the User has permission to access. Is there another way?.
Hi Salaudeen, thanks for sharing such great content. I follow your posts since a long time ago.
Question, is it possible to do this from PowerShell or some API Call?