Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:fo_getforumaccessmatrix_ad

fo_GetForumAccessMatrix_Ad

Ermittelt für ein Forum die Zugriffs-Berechtigungen für mehrere Gruppen bzw. Personen. Es können zwar auch nur Zugriffsrechte für EINE Gruppe bzw. Person ausgegeben werden, allerdings kann man dafür auch fo_GetForumAccessLevelIDs_Ad benutzen.

Seit dieser Version kann man sich auch die Zugriffsrechte für mehrere Foren (dann aber nur für EINE Person bzw. Gruppe) ausgeben lassen.

Die Rückgabemenge dieser Prozedur ist für eine Übersicht in „Matrix“-Form gedacht (siehe Sortierung der Rückgabemenge). Das bedeutet insbesondere, daß für JEDES Zugriffsrecht (sprich für jede „AccessLevelID“) ein Datensatz vorhanden ist, also angegeben ist, ob die Person bzw. die Gruppe dieses Recht besitzt oder nicht.

Hinweis zum grundsätzlichen Verfahren bzgl. Zugriffsrechte in Foren:
Unabhängig von der Aktion, die ein Teilnehmer eines Forums vornehmen möchte (Beitrag erstellen, Beitrag löschen, Thread abschließen, ein Binärobjekt zu einem Posting hinzufügen etc.), wird zunächst überprüft, ob er über das entsprechende Zugriffsrecht verfügt. Dabei gilt : Direkt für eine Person zugewiesene Rechte haben Vorrang vor Gruppenrechten. Hat jemand keine direkt definierten Zugriffsrechte, besitzt er die Rechte, die ALLE Gruppen, denen er zugeordnet ist, ZUSAMMEN für das entsprechende Forum bekommen haben. Sind weder für die Person, noch für irgendeine Gruppe, zu der die Person gehört, Zugriffsrechte vergeben, werden die Rechte des anonymen Benutzers („PersonID = 0“) herangezogen - sind auch hierzu keine Rechte eingetragen, hat die Person überhaupt keinen Zugriff auf das Forum.

HTTP-MethodGET
HTTP-AuthOptional
Tags
Engine-Kategorieforums
Engine-TypDaten-Ermittlung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
ForumID ID eines Forums. Ist „NULL“ angegeben, MUSS eine „GroupOrPersonID“ übergeben werden. Es werden dann die Zugriffsrechte der Foren-IDs aus „tempdb.dbo.OneID“ ermittelt bzw. der Foren für die zur Person/Gruppe explizit Zugriffsrechte vergeben sind.
smallint3.5.15
CheckPersonAccess0 Gibt an, ob die Zugriffsrechte für Gruppen („0“) oder Personen („1“) ermittelt werden sollen, d.h. hierdurch wird angegeben, ob es sich bei „GroupOrPersonID“ bzw. den IDs in „tempd.dbo.OneID“ um (eine) GroupID(s) oder PersonID(s) handelt.
bit3.5.15
GroupOrPersonIDNULL ID einer Gruppe oder Person. Ist „NULL“ angegeben, MUSS „ForumID“ übergeben werden. Dann werden die Zugriffsrechte entweder für die Personen/Gruppen-IDs in „tempdb.dbo.OneID“ ermittelt oder aber für die, zu denen explizit Zugriffsrechte vergeben sind.
integer3.5.15

Rückgabe

wenn CheckPersonAccess = 0

Spaltenname Beschreibung SQL-Datentyp4) ab Version
GroupIDID einer Personen-Gruppe - also entweder „GroupOrPersonID“ oder eine ID, die in „tempdb.dbo.OneID“ übergeben wurde, oder aber die ID einer Gruppe, für die EXPLIZIT Zugriffsrechte für das Forum „ForumID“ existieren
smallint3.5.15
GroupDescriptionBezeichnung der Gruppe „GroupID“
varchar(100)3.5.15
AccessLevelIDID eines Zugriffsrechtes
smallint3.5.15
DescriptionBeschreibung des Zugriffsrechtes „AccessLevelID“
varchar(100)3.5.15
Access„0“ Die Gruppe „GroupID“ hat das Zugriffsrecht „AccessLevelID“ für das Forum „ForumID“ NICHT
„1“ Die Gruppe „GroupID“ BESITZT das Zugriffsrecht „AccessLevelID“ für das Forum „ForumID“
bit3.5.15
ForumIDID eines Forums - also entweder „ForumID“ oder eine ID, die in „tempdb.dbo.OneID“ übergeben wurde, oder die ID eines Forums, für das „GroupID“ explizit Zugriffsrechte besitzt
smallint3.5.21
Sortierung der Rückgabe

(parameterunabängige Sortierung)

  • GroupID (aufsteigend)
  • ForumID (aufsteigend)
  • AccessLevelID (aufsteigend)

wenn CheckPersonAccess = 1

Spaltenname Beschreibung SQL-Datentyp5) ab Version
PersonIDID einer Person - also entweder „GroupOrPersonID“ oder eine ID, die in „tempdb.dbo.OneID“ übergeben wurde, oder die ID einer Person, für die explizit Zugriffsrechte für „ForumID“ vergeben sind
integer3.5.15
AccessLevelIDID eines Zugriffsrechtes
smallint3.5.15
DescriptionBeschreibung des Zugriffsrechtes „AccessLevelID“
varchar(255)3.5.15
Access„0“ : Die Person „PersonID“ hat das Zugriffsrecht „AccessLevelID“ NICHT direkt zugewiesen
„1“ : Die Person „PersonID“ HAT das Zugriffsrecht „AccessLevelID“ direkt zugewiesen bekommen
bit3.5.15
GroupAccess„0“ : Es gibt KEINE Gruppe, der die Person zugeordnet ist, die das Zugriffsrecht „AccessLevelID“ hat
„1“ : Die Person ist in wenigstens einer Gruppe, die das Zugriffsrecht „AccessLevelID“ hat
bit3.5.15
AnonymousAccess„0“ : Die anonyme Person („PersonID = 0“) besitzt das Zugriffsrecht „AccessLevelID“ NICHT
„1“ : Die anonyme Person („PersonID = 0“) BESITZT das Zugriffsrecht „AccessLevelID“
bit3.5.21
AccessTypeDiese Rückgabespalte gibt an, ob die Person „PersonID“ das Zugriffsrecht „AccessLevelID“ besitzt (oder eben nicht) und wodurch sie das Recht erhalten hat…
„1“ : Direkt
„2“ : Über eine Gruppe
„3“ : Über die anonyme Person
„4“ : Keine Berechtigung
tinyint3.5.21
ForumIDID eines Forums - also entweder „ForumID“ oder eine ID, die in „tempdb.dbo.OneID“ übergeben wurde, oder die ID eines Forums, für das „PersonID“ explizit Zugriffsrechte besitzt
smallint3.5.21
Sortierung der Rückgabe

(parameterunabängige Sortierung)

  • PersonID (aufsteigend)
  • ForumID (aufsteigend)
  • AccessLevelID (aufsteigend)

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 6)
-569Der Benutzer hat kein Ausführungsrecht für die Prozedurnur indirekt
-567Die Prozedur darf z. Zt. nicht ausgeführt werdennur indirekt
-566Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werdennur indirekt
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-530Der Wert ist nicht konvertierbarnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochennur indirekt
-500Falsche Parameterdirekt und indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

7.0.7 2015-01-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
5.5.1 2008-07-291. Fehler : in der Rückgabespalte „AccessType“ konnte der (nicht dokumentierte) Wert „0“ zurückgegeben werden
2. Ausgabe an die Standard-Ausgabe [via „print“] im Fall „-500“, die nähere Informationen über die Ursache enthält
4.0.10 2004-03-151. Aufruf der Prozeduren „_mi_StartProcedure“ und „_mi_FinishProcedure“
2. Ausführen von „set transaction isolation level 1“ und „set rowcount 0“ zu Beginn der Prozedur
3. Konsequente Fehlerbehandlung
4.0.0 2003-04-03Komplette (interne) Überarbeitung der Prozedur
3.5.21 2002-08-06
3.5.17 2002-05-02
3.5.16 2002-04-25
3.5.15 2002-03-12Erstmalig in dieser Version erstellt

Code-Snippets

Engine Playground

Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:

cURL

Unformatierte Ausgabe:

curl -X GET  'http://<partner>-<project>.dstore.de/default/engine/fo_GetForumAccessMatrix_Ad?ForumID=<value>'

Mit xmllint 7) formatierte Ausgabe:

curl -X GET  'http://<partner>-<project>.dstore.de/default/engine/fo_GetForumAccessMatrix_Ad?ForumID=<value>' | xmllint --format -
dStore_php
use dStore_php\WebService;
 
$service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80);
 
$request = new WebService\Requests\Engine\Procedure\Request(
			new WebService\Requests\AccessData('default'),
	'fo_GetForumAccessMatrix_Ad',
		array(
			'ForumID' => <value>,
			// 'CheckPersonAccess' => 0,
			// 'GroupOrPersonID' => NULL
		)
);
 
$service->execute($request);
 
			$xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument();
			$ResultSet = $xml_result->getRowsAsArray();
engine/execute

XML zur Ausführung mit der Methode engine/execute, z.B. per

curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?>
<ListOfBatches>
	<Batch No="0">
		<Procedure Name="fo_GetForumAccessMatrix_Ad">
			<Parameters>
				<Parameter Name="ForumID"><!-- smallint value --></Parameter>
				<!-- <Parameter Name="CheckPersonAccess">0</Parameter> -->
				<!-- <Parameter Name="GroupOrPersonID">NULL</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
Pflichtparameter sind unterstrichen
6)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
7)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/fo_getforumaccessmatrix_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)