SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




InfoPath: Formular Absenden / Berechtigungen bei Zielbibliothek

Geprüfte Antwort Dieser Beitrag hat 3 Antworten

Ohne Rang
292 Beiträge
Florian Willmes erstellt 17 Aug. 2009 16:33
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Community,

ich habe ein Problem bei einem aktuellen Projekt.

Benutzer sollen ein Formular in einer Formularbibliothek erstellen und abspeichern können. Diese Anforderung bereiten keine Probleme.

 

Zusätzlich soll das Formular jedoch an eine weitere Bibliothek gesendet werden. In dieser Bibliothek sollen die Benutzer jedoch keine Dateien / Formulare manuell hinzufügen können.

Leider sind für die InfoPath-Funktion "Absenden", Rechte zum Erstellen von Elementen in der Zielbibliothek erforderlich! Wie kann man dieses Szenario trotzdem realisieren?

Ich hab mir überlegt, dass grundsätzlich die Benutzer keine Berechtigung zum Erstellen in der Bibliothek haben, und man ihnen diese Berechtigung per Code kurz vor dem Absenden an die Bibliothek erteilt. Diese Berechtigungsvergabe würde ich als managed Code beim Absende-Button hinterlegen. Ich habe mir dazu den auf der folgenden Seite verlinkten Code als Vorlage genommen:

http://www.microsoft.com/germany/msdn/solve/knowhow/howto/office/WieSetzeIchBerechtigungenAufListenUndListeneintraegeInSharePoint.mspx

Leider erhalte ich anschließend beim betätigen des Buttons, also dem Ausführen des Codes, einen fehler mit der ID 5337 -> "The security validation for this page is invalid." Anscheinend gibt es ein Berechtigungsproblem beim Ausführen des managed Code.

 

Hat jmd. eine Idee, wie ich dieses Problem lösen könnte?

Gibt es beispielsweise die Möglichkeit, den managed Code mit erweiterten Rechten (als den aktuellen Benutzerrechten) auszuführen, oder ist dias generell der falsche und unsichere Ansatz?

 

Danke im Voraus,

Flo

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 17 Aug. 2009 20:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Im Code für das SPWeb, in dem sich die Zielbibliothek befindet, AllowUnsafeUpdates auf true setzen (und mit RunWithElevatedPriviledges arbeiten).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
292 Beiträge
Florian Willmes Als Antwort am 18 Aug. 2009 12:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Vielen Dank für Deine Hilfe,

um den Code mit erweiterten Rechten auszuführen habe dieses Beispiel verwendet.

 

Ich habe nun die Möglichkeit, einem User eine Berechtigungsstufe bei einer Bibliothek zuzuweisen. Könntest du mir noch einen kleinen Tipp geben, wie ich ihm diese Berechtigungsstufe nun wieder entziehen kann?

 

Gruß

Flo

Gruß
Florian

Ohne Rang
292 Beiträge
Florian Willmes Als Antwort am 18 Aug. 2009 13:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Die Lösung werde ich hier mal posten:

zum Hinzufügen von Berechtigungen kann folgender Code-Ausschnitt verwendet werden:

SPSite site = new SPSite("http://london");
SPWeb web = site.OpenWeb("/Blog");
SPList list = web.Lists["Dokumente"];

if (!item.HasUniqueRoleAssignments) item.BreakRoleInheritance(true);

SPRoleDefinition role = web.RoleDefinitions.GetByType(SPRoleType.Reader);
SPRoleAssignment roleAssign = new SPRoleAssignment(@"FOURTHCOFFEE\BenjaminMartin", "", "", "");
roleAssign.RoleDefinitionBindings.Add(role);
list.RoleAssignments.Add(roleAssign);


zum Entfernen von Berechtigungen verwendet man statt der add-Methode die Remove-Methode, welcher man ein SPUser-Objekt übergibt.

list.RoleAssignments.Remove(oUser);

Gruß
Florian