5

Uwaga: mówię o wstrzykiwaniu mojego kodu do serwera SharePoint po stronie serwera (za pośrednictwem paczki/dodatku itp.) W przeciwieństwie do korzystania z usług Microsoft.SharePoint.dll lub usług internetowych w celu uzyskania dostępu do SharePoint.Podłączanie do serwera SharePoint po stronie serwera

Mój problem polega na tym, że muszę dostosować sposób działania bibliotek dokumentów, w tym niestandardowego zarządzania uprawnieniami. Przeglądałem wewnętrzne elementy jego pracy. Oto moje obserwacje:

  1. zapewnia podstawową logikę zarządzania biblioteką dokumentów. Jednak samo w sobie nie jest to WebPart.
  2. Rzeczywiste renderowanie części WWW dla biblioteki dokumentów prawdopodobnie jest obsługiwane przez ListViewWebPart lub klasę pochodną.
  3. W rzeczywistości istnieje klasa SPPictureLibrary, która zakłada, że ​​możliwe jest dziedziczenie klasy SPDocumentLibrary w celu zapewnienia niestandardowego zachowania w bibliotece dokumentów.
  4. WebPartAdder.SiteWebPartGalleryProvider w pewien sposób łączy SPDocumentLibrary z metodą WebPart wewnątrz Microsoft.SharePoint.WebPartPages.WebPartAdder.AddSources.

Teraz wszystko to jest po stronie klienta, nic z tego nie dzieje się na samym serwerze SharePoint (afaik). Jednak widzę metody przeciążać na SPSecurableObject tym SPDocumentLibrary/SPList ręcznym, w szczególności:

  1. CheckPermissions
  2. GetUserEffectivePermissionInfo
  3. GetUserEffectivePermissions
  4. EffectiveBasePermissions itp

Co ja naprawdę chcę robić to być w stanie zastąpić CheckPermissions/EffectiveBasePermissions na serwerze SharePoint na SPDocumentLibrary, aby wprowadzić moją niestandardową logikę.

Chciałbym teraz skierować moje badania do bibliotek dll programu SharePoint i ich zrozumienia. Chciałbym jednak uzyskać opinię ekspercką na temat tego, czy jest to wykonalne/wskazane we właściwym kierunku. Znakiem rozpoznawczym Microsoft (szczególnie biorąc pod uwagę ASP.NET 2.0/ASP.NET MVC jako punkt odniesienia) jest struktura rozszerzająca/dostawca. Dostarczają doskonałych dostawców "rzeczy" po wyjęciu z pudełka, ale możesz tworzyć klasy, dziedzicząc/wdrażając coś, co zastąpi domyślnych dostawców. Tak:

  1. Czy mogę wstrzyknąć do serwera po stronie SharePoint. Moim idealnym rozwiązaniem byłoby utworzenie klasy pochodnej SPDocumentLibrary (po stronie serwera) i wstrzyknięcie jej tak, aby w dowolnej instancji tworzonej biblioteki dokumentów tworzony był mój obiekt klasy (zamiast SPDocumentLibrary, zakładając, że jest to również serwer klasy. nadal muszą "odzwierciedlać" klasy po stronie serwera SharePoint).
  2. Jeśli 1) jest nopes, czy mogę utworzyć niestandardową WebPart, aby używać biblioteki dokumentów programu SharePoint w sposób, który zapewnia jej natywną bibliotekę dokumentów, ale nadal pozwala mi używać klasy pochodnej SPDocumentLibrary, gdy ta część sieci jest dostępna (proszę zauważyć, że cała moja dyskusja dotyczy serwera SharePoint, tj. mojego kodu wykonującego w przestrzeni adresowej SharePoint/proces w3wp).
  3. Dlaczego w ogóle mamy logikę w SPSite.EffectiveBasePermissions.Mam na myśli to, że ma to być CSOM i powinno po prostu być odpowiedzialne za serializację/deserializację tego, co jest zwracane przez/wysyłane na serwer. Jednakże widzę skomplikowaną logikę w tej nadpisanej właściwości, która kręci się wokół wydawania zezwolenia.
  4. Jeśli zarówno 1), jak i 2) nie jest opcją (dosłownie :)), czy mam jakąkolwiek opcję manipulowania skutecznymi uprawnieniami SharePoint podczas pracy w przestrzeni adresowej SharePoint, zanim SharePoint podejmie jakiekolwiek działania w oparciu o te uprawnienia.

Wiem, że to było długie pytanie, ale mam nadzieję, że dobrze przeprowadzam moje badania.

+0

Czy rozważasz wdrożenie dostawcy niestandardowej roli? Może możesz zastosować niestandardowe roszczenia do biblioteki dokumentów, a następnie wstawić te niestandardowe roszczenia do działającej tożsamości. http://geekswithblogs.net/GinoAbraham/archive/2017/03/21/custom-role-claim-based-authentication-on-sharepoint-2013.aspx –

Odpowiedz

2

Nie sądzę, że masz poziom kontroli w programie SharePoint.

Nie jesteś pewien, czy sprawdziłeś opcję wydarzeń SharePoint. Zamiast tworzyć własną klasę, aby dodać logikę, można dodać logikę jako zdarzenie SharePoint. Możesz subskrybować odpowiednie zdarzenia i odpowiednio dodać logikę. Na przykład możesz anulować aktualizację w oparciu o niestandardową logikę. Jednak nie sądzę, że można dostosować logikę uprawnień do bazy.

SPList ma metodę "CheckPermissions", która z kolei wywołuje "CheckPermissions" klasy podstawowej (SPSecurableObject). Jednak wątpię, czy byłoby możliwe stworzenie własnej podklasy, nadpisanie odpowiednich metod i przejęcie logiki uprawnień. Jest to coś bardzo ważnego dla SharePoint, które moim zdaniem nie ma być dostosowywane.