Il blog di Giuseppe Marchi - SharePoint MVP
NAVIGATION - SEARCH

Gestione della security sulla "Top link bar" di SharePoint Foundation

Se non avete la licenza Server di SharePoint e siete obbligati a lavorare su SharePoint Foundation (2010 o 2013 che sia), sapete bene che avete un bel pò di limiti riguardo la gestione della navigazione.
Il limite più grosso è non avere la pagina disponibile al percorso: "Site settings > Look and feel > Navigation", che ti da a disposizione un meccanismo di gestione completa della navigazione del tuo portale, partendo dalla creazione della gerarchia di link per arrivare all'ordinamento e alla gestione della security.
Questa funzionalità si abilita attraverso la feature di Publishing di SharePoint Server che, come sapete, su SharePoint Foundation non è disponibile.
Senza questa funzionalità diventa molto noiosa la gestione della security della "Top link bar".
Provate ad eseguire questa serie di operazioni:

  • Create un nuovo sito a partire dal sito di root della vostra site collection
  • In fase di creazione mettete la spunta sulla voce "Display this site on the top link bar of the parent site?"
  • Una volta creato il sito modificate le autorizzazioni in modo tale da togliere la possibilità di entrare nel sito ad un particolare utente X
  • Ritornate nel sito di root e cancellate il link dalla "Top link bar"
  • Re-inserite il link a mano all'interno della "Top link bar"
In questo modo vedrete che il link "Sottosito", su cui abbiamo specificato una serie di autorizzazioni personalizzate, sarà visibile nella "Top link bar" anche agli utenti che in realtà non possono entrarci e che, facendo click su tale link, arriveranno alla pagina di "Access denied" sul sito. Il che è molto fastidioso perchè prima diamo modo all'utente di vedere un link nella barra di navigazione e di farci click sopra, ma subito dopo gli diciamo che in realtà non poteva entrarci.

Come risolvere questa issue su siti già creati?
Purtroppo l'unico modo che abbiamo è quello di ricreare il link utilizzando Powershell, utilizzando il seguente codice:

$web = Get-SPWeb http://sp2013
$newnode = New-Object Microsoft.SharePoint.Navigation.SPNavigationNode("Sub site", "/subsite", $false)
$web.Navigation.TopNavigationBar.AddAsLast($newnode)

Questo script utilizza le classi del modello ad oggetti server-side di SharePoint per aggiungere un nuovo nodo all'interno della "Top link bar". La parte importante è quella di settare a $false l'ultimo parametro del costruttore della classe SPNavigationNode, che indica a SharePoint che specifica se il link è esterno oppure no. Settando a $false tale parametro, SharePoint capisce che è un link interno alla intranet e ci applica il controllo sui permessi.
Questo lo possiamo vedere stampando a video il contenuto della variabile $newnode. Come potete notare, la proprietà "IsExternal" del nostro nodo di navigazione è stata impostata a False.

Title                  : Sub site
TitleResource          : Microsoft.SharePoint.SPUserResource
IsVisible              : True
IsExternal             : False
Id                     : 2011
ParentId               : 0
Parent                 :
Navigation             : Microsoft.SharePoint.Navigation.SPNavigation
Url                    : /subsite
LastModified           : 10/11/2014 11:04:55
Children               : {}
Properties             : {vti_navsequencechild}
TargetSecurityScopeId  : 00000000-0000-0000-0000-000000000000
TargetParentObjectType : Web

Questo problema non ce l'abbiamo sui siti nuovi, perchè una volta inserita la spunta sul campo "Display this site on the top link bar of the parent site?" in fase di creazione del sito, SharePoint aggiungerà in autonomia il link al sito sulla "Top link bar" e tale link sarà correttamente profilato in base alle autorizzazioni dell'utente corrente su tale sito.
Ripeto, abbiamo questo problema solamente con SharePoint Foundation.
blog comments powered by Disqus