Einsatz des Kundenfilters in Vorlagen

Fragen zum Erstellen von Templates für webEdition.
rhorbas
webEdition Gold Partner
webEdition Gold Partner
Beiträge: 205
Registriert: Do 1. Jan 1970, 02:00

Einsatz des Kundenfilters in Vorlagen

Beitragvon rhorbas » Do 5. Apr 2018, 17:13

Ich habe für ein Projekt in der Kundenverwaltung User mit unterschiedlichen Gruppen, die sich nicht gegenseitig ausschließen, z.B.:

[ ] Mitglied
[x] Abonnent
[x] Student

Nun sollen Dokumente und Downloads entsprechend über den Kundenfilter der Dokumente geschützt werden:

[Kunden]

(o) Kunden mit bestimmten Kriterien haben Zugriff:
[Zugang_Abonnent] gleich(=) 1
ODER
[Zugang_Mitglied] gleich(=) 1

Und:
Zugriffskontrollsteuerung
(o) Fehlerkontrolle wird von Vorlage übernommen

Ich hatte mir das so vorgestellt, dass ich in der Hauptvorlage einfüge:

Code: Alles auswählen

<we:ifNotRegisteredUser>

    <div class="alert alert-warning">Diese Seite ist geschützt</div>

    <we:include id="22" type="template" comment="UserLogin" />

    <we:else />

    <we:content />

</we:ifNotRegisteredUser>
Aber dadurch wird grundsätzlich das Login-Formular angezeigt, wenn man nicht registriert ist.

Wie kann man denn die Vorlage prüfen lassen, ob einer der vorhandenen Filter greift oder nicht?

Code: Alles auswählen

<we:ifNotRegisteredUser permission="Zugang_Abonnent" match="1">
    <we:content />
</we:ifNotRegisteredUser>
prüft ja nur eine Bedingung. Wenn ich das für jede mögliiche Benutzergruppe mache, dann wird mir der <we:content /> für jede Gruppe ausgegeben, in der der Kunde Mitglied ist.

Ich bin sicher, dass es eine elegante Möglichkeit gibt -- ich sehe sie im Moment nur nicht!

Ach ja: WE 8.0.2, also aktuell.

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon WBTMagnum » Do 5. Apr 2018, 22:07

Hi!

Richtig gute Lösung habe ich jetzt auch keine parat. So sollte es aber mal gehen:

Code: Alles auswählen

<we:ifNotRegisteredUser permission="Zugang_Abonnent" match="1">
    <we:content />
<we:else/>
    <we:ifNotRegisteredUser permission="Zugang_Student" match="1">
        <we:content />
    </we:ifNotRegisteredUser>
</we:ifNotRegisteredUser>
HTH,
Sascha

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon mokraemer » Fr 6. Apr 2018, 00:36

schau dir mal das Attribut matchType in https://www.webedition.org/de/dokumenta ... stereduser an. Damit kannst du bspw. mit "one" das prüfen.
Dann kann das bspw. so aussehen:

Code: Alles auswählen

<we:ifRegisteredUser permission="Zugang" match="Abonnent,Student" matchType="one">
....
<we:else/>
Show Login
</we:ifRegisteredUser>
Dann sollte Zugang vom Typ select oder set sein.
webEdition-Kern-Entwickler

rhorbas
webEdition Gold Partner
webEdition Gold Partner
Beiträge: 205
Registriert: Do 1. Jan 1970, 02:00

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon rhorbas » Fr 6. Apr 2018, 07:54

mokraemer hat geschrieben: Fr 6. Apr 2018, 00:36 schau dir mal das Attribut matchType in https://www.webedition.org/de/dokumenta ... stereduser an. Damit kannst du bspw. mit "one" das prüfen.
Dann kann das bspw. so aussehen:

Code: Alles auswählen

<we:ifRegisteredUser permission="Zugang" match="Abonnent,Student" matchType="one">
....
<we:else/>
Show Login
</we:ifRegisteredUser>
Dann sollte Zugang vom Typ select oder set sein.
Ja, so hatte ich das zunächst gemacht. Nur soll ja das match pro Dokument verschieden sein, d.h. ich muss die Liste dynamisch aufbauen. Wie komme ich denn an die Liste der Kriterien aus dem Kundenfilter ran?
(Meine erste Lösung war, im Bearbeiten-Reiter Selects mit den Namen der zugelassenen Gruppen anzulegen. Aber da die Permissions schon im Kundenfilter gesetzt werden, fand ich das unbefriedigend: Warum eine Funktion einbauen, die im Reiter "Kunden" schon vorhanden ist?)

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon mokraemer » Fr 6. Apr 2018, 10:29

???
Also das verstehe ich jetzt gar nicht. Entweder ist die Liste "Fix", dann kann man das sehr gut über die Vorlage(n) regeln, oder wenn man es wirklich pro Dokument machen will, dann sollte man dazu den Kundenfilter nutzen.
Du kannst ja mittels cfilter="true" bestimmen, ob der Filter der auf dem Dokument eingestellt ist zusätzlich ausgewertet wird.
Wenn du also auf dem Tab Zugang=Abonnent eingestellt hast, dann liefert dir

Code: Alles auswählen

<we:ifNotRegisteredUser cfilter="true">Keine Berechtigung</we:ifNotRegisteredUser>
Aus der Erfahrung raus würde ich nicht versuchen jedes Dokument individuell zu steuern - das blickt später keiner mehr!
Besser ist es die Bereiche zu trennen und ggfs. die Vorlage mit den Filtern direkt so einzustellen wie es gebraucht wird.
webEdition-Kern-Entwickler

rhorbas
webEdition Gold Partner
webEdition Gold Partner
Beiträge: 205
Registriert: Do 1. Jan 1970, 02:00

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon rhorbas » Fr 6. Apr 2018, 10:50

mokraemer hat geschrieben: Fr 6. Apr 2018, 10:29 ???
Also das verstehe ich jetzt gar nicht. Entweder ist die Liste "Fix", dann kann man das sehr gut über die Vorlage(n) regeln, oder wenn man es wirklich pro Dokument machen will, dann sollte man dazu den Kundenfilter nutzen.
Du kannst ja mittels cfilter="true" bestimmen, ob der Filter der auf dem Dokument eingestellt ist zusätzlich ausgewertet wird.
Wenn du also auf dem Tab Zugang=Abonnent eingestellt hast, dann liefert dir

Code: Alles auswählen

<we:ifNotRegisteredUser cfilter="true">Keine Berechtigung</we:ifNotRegisteredUser>
Genauso habe ichs auch versucht, aber da wird mir auch auf Dokumenten, auf denen kein Kundenfilter eingestellt ist, das Login-Formular angezeigt:

Code: Alles auswählen

<we:ifNotRegisteredUser cfilter="true">
    Diese Seite ist Mitgliedern vorbehalten
    <we:include id="22" type="template" comment="UserLogin" />
    <we:else />
    <we:content />
</we:ifNotRegisteredUser>
Während ich auf ein geschütztes Dokument trotz Login tatsächlich keinen Zugriff erhalte, wenn ich nicht der richtigen Gruppe angehöre.

Ich müsste also eine Möglichkeit haben, vor dem <ifNotRegisteredUser> abzufragen, ob überhaupt ein cfilter gesetzt ist.
mokraemer hat geschrieben: Fr 6. Apr 2018, 10:29 Aus der Erfahrung raus würde ich nicht versuchen jedes Dokument individuell zu steuern - das blickt später keiner mehr!
Besser ist es die Bereiche zu trennen und ggfs. die Vorlage mit den Filtern direkt so einzustellen wie es gebraucht wird.
Das wird nicht gehen, manche der angebotenen Fortbildungen und Dokumente sind eben nur bestimmten Mitgliedern/Abonnenten zugänglich.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon mokraemer » Fr 6. Apr 2018, 14:35

geht auch.
Mit dem Attribut allowNoFilter.

Du solltest hier dann nur genau testen, welches Verhalten du jetzt haben willst. Du kannst hier keinen Mischbetrieb fahren. Entweder sind die Doks dann auch allen (nicht nur Kunden zugänglich), oder du mußt zumindest auf der Filter Seite einstellen das nur registrierte User Zugriff haben. Anders macht das keinen Sinn. Das System kann ja nicht raten wie es gerade gedacht ist.
webEdition-Kern-Entwickler

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon mokraemer » Fr 6. Apr 2018, 14:37

Was man aber meist macht ist sowas:

Code: Alles auswählen

<we:ifRegisteredUser>
	<we:ifRegisteredUser cfilter="true">
		Mein Inhalt
	<we:else/>
		Leider dürfen sie das nicht sehen.
	</we:ifRegisteredUser>
<we:else/>
	Mein Login
</we:ifRegisteredUser>
webEdition-Kern-Entwickler

rhorbas
webEdition Gold Partner
webEdition Gold Partner
Beiträge: 205
Registriert: Do 1. Jan 1970, 02:00

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon rhorbas » Fr 6. Apr 2018, 16:41

mokraemer hat geschrieben: Fr 6. Apr 2018, 14:37 Was man aber meist macht ist sowas:

Code: Alles auswählen

<we:ifRegisteredUser>
	<we:ifRegisteredUser cfilter="true">
		Mein Inhalt
	<we:else/>
		Leider dürfen sie das nicht sehen.
	</we:ifRegisteredUser>
<we:else/>
	Mein Login
</we:ifRegisteredUser>
OK, hab ich jetzt genau so gemacht -- und erhalte auf jeder ungeschützten Seite: "Mein Login."

Frei verfügbaren Inhalt kann ich so also nicht anbieten, stimmts?

Nachtrag: Wenn ich mich aber einlogge, dann erhalte ich auf einer Seite ohne Kundenfilter:

"Leider dürfen sie das nicht sehen."

Hier stimmt doch was nicht?

Nachtrag 2: Ich habe das jetzt so gelöst, aber gefallen tut es mir nicht:

Code: Alles auswählen

<?php
if( '' == $GLOBALS['we_doc']->documentCustomerFilter):
?>
<we:content />
<?php
else:
?>
<we:ifRegisteredUser>
    <we:ifRegisteredUser cfilter="true">
        <we:content />
        <we:else/>
        <div class="alert alert-warning">Diese Seite ist geschützt.</div>
    </we:ifRegisteredUser>
    <we:else/>
    <div class="alert alert-warning">Für diese Seite müssen Sie sich anmelden.</div>

    <we:include id="22" type="template" comment="UserLogin" />
</we:ifRegisteredUser>
<?php
endif;
?>
Schöner wäre es, wenn man das über ein WE-Tag machen könnte (<we:ifCustomerFilter/> z.B.)

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon mokraemer » Fr 6. Apr 2018, 18:44

1. Ich kann nur noch mal betonen, daß ich auf keinen Fall in der gleichen Vorlage freie UND unfreie Inhalte machen würde. Wenn du bei einem mal vergißt die Einstellung zu machen, kennt google direkt den Inhalt. Sind es unterschiedliche Vorlagen, dann kann es höchstens der falsche Kundenstamm sehen, was unschön aber weniger tragisch ist.

2. Du solltest die Syntax if(): endif nicht mehr verwenden, das kann Probleme mit WE machen. Wir verwenden ausschließlich {} und die Mischung mag PHP nicht.

3. Ich würde in einem Master nie den gleichen Inhalt per <we:content/> 2* reinziehen
webEdition-Kern-Entwickler

rhorbas
webEdition Gold Partner
webEdition Gold Partner
Beiträge: 205
Registriert: Do 1. Jan 1970, 02:00

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon rhorbas » Fr 19. Mär 2021, 17:13

Ich finde den Ansatz nach wie vor sinnvoll, und der funktioniert seit 3 Jahren gut: Bei den Kunden sind mehrere Felder hinterlegt (Zugang_1, Zugang_2), und die Redaktion kann Seiten für "Kunden mit bestimmten Kriterien haben Zugriff" freigeben.

Für Barrhorn musste ich das jetzt ändern

Code: Alles auswählen

<?php if(0 == we_base_WE::getWeDoc()->documentCustomerFilter->getMode() ) { ?>
    <we:content/>
<?php
} else {
?>
<we:ifRegisteredUser>
    <we:ifRegisteredUser cfilter="true">
        <we:content />
        <we:else/>
        <div class="alert alert-warning">Diese Seite ist geschützt.</div>
    </we:ifRegisteredUser>
    <we:else/>
    <div class="alert alert-warning">Für diese Seite müssen Sie sich anmelden.</div>
    <we:include id="22" type="template" comment="UserLogin" />
</we:ifRegisteredUser>
<?php }; ?>
Wenn es einen Ansatz mit Tags gibt, übernehme ich den sofort. Und wenn nicht, nehme ich auch gerne Verbesserungsvorschläge an obigem Code entgegen. (Dass der nicht updatesicher ist, ist mir klar; habe ich ja eben gemerkt. ;-) )

Benutzeravatar
Finn
Senior Member
Beiträge: 285
Registriert: Mo 3. Apr 2017, 13:37
Wohnort: Bremen
Kontaktdaten:

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon Finn » Di 14. Dez 2021, 11:09

Moin Moin,

ich habe auch folgenden Bedarf:

Grundsätzlich sollen alle Dokumente frei sichtbar sein. Es soll aber redaktionell die Möglichkeit geben, über den Kundenfilter ein Dokument nur für eingeloggte Personen sichtbar zu machen.

Das ist so aktuell nicht mit WE Tags abzubilden richtig? Entweder ich habe grundsätzlich geschützte Dokumente oder frei zugänglich.

Ich dachte das eventuell das funktioniert:

<we:ifRegisteredUser allowNoFilter="true" cfilter="true"></we:ifRegisteredUser>

Aber obwohl dann kein Filter gesetzt ist, ist der Inhalt trotzdem nicht sichtbar. Oder ist das ein Bug?

LG
Finn
Finn Thorwarth
WG Werbeagentur
https://www.wg-werbeagentur.de

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Einsatz des Kundenfilters in Vorlagen

Beitragvon mokraemer » Di 14. Dez 2021, 17:05

du kannst jedes dynamische Dokument auch ohne ifRegisteredUser steuern. Du mußt nur angeben wer die Fehlerknontrolle übernimmt
webEdition-Kern-Entwickler


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 15 Gäste