Themen im Forum sichtbar, jedoch nicht aufrufbar

Fragen rund um die Installation, Administration und Benutzung von phpBB.
Forumsregeln
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
Antworten
Everlong
Mitglied
Beiträge: 77
Registriert: 03.10.2003 03:49
Wohnort: Berlin

Themen im Forum sichtbar, jedoch nicht aufrufbar

Beitrag von Everlong »

Hallo,

ich suche die Möglichkeit, das Themen (also die Namen) für Gäste angezeigt werden, jedoch bei einem Klick auf das Thema zum Login/Registrationsmenü weitergeleitet wird.

Bisher habe ich es mit einem Workarround in der php Datei gelöst, frage mich aber ob es nicht auch eine einfacherer Möglichkeit gibt welche ich übersehe.
Gruss

Everlong
MTT
Mitglied
Beiträge: 104
Registriert: 28.09.2014 14:47

Re: Themen im Forum sichtbar, jedoch nicht aufrufbar

Beitrag von MTT »

Versuchs mal im ACP

Auf Benutzer und Gruppen klicken
Links auf Gruppenrechte klicken
Gäste wählen
Auf erweiterte Berechtigen klicken,
und da so einstellen wie Du es möchtest
Nie bevorzugen

Nicht vergessen auf "Alle Berechtigungen anwenden" zu klicken.

Und das ganze dann auch unter "Gruppenspezifische Forenrechte"

M.
Noli umquam desinere!
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Themen im Forum sichtbar, jedoch nicht aufrufbar

Beitrag von gn#36 »

Das lässt sich denke ich mit einer Extension realisieren, die den Hook in der viewtopic.php nutzt und lediglich kontrolliert, ob der Nutzer Gast ist und wenn ja immer ein Login Formular anbietet.

Ausreichen würde wohl das Event core.viewtopic_assign_template_vars_before.

Ich habe jetzt gerade nicht die Zeit, die zu schreiben, aber im Grunde genommen besteht die auch nur aus drei Dateien mit wenig Inhalt: composer.json, config/services.yml und events/main.php. Wenn du dich ein wenig mit PHP auskennst kannst du ja mal probieren, die selbst umzusetzen, anhand z.B. hiervon.

Ansonsten geht's auch weiterhin mit einer kleinen PHP Code Änderung: Du vergibst das Leserecht für Gäste, aber in der viewtopic.php ersetzt du

Code: Alles auswählen

// Start auth check
if (!$auth->acl_get('f_read', $forum_id))
durch

Code: Alles auswählen

// Start auth check
if (!$auth->acl_get('f_read', $forum_id) || $user->data['user_id'] == ANONYMOUS)
. Dann bekommen Gäste immer das Loginformular zu sehen. Hat natürlich den Nachteil, dass du bei einem Update nicht mehr einfach alles drüberbügeln kannst.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Everlong
Mitglied
Beiträge: 77
Registriert: 03.10.2003 03:49
Wohnort: Berlin

Re: Themen im Forum sichtbar, jedoch nicht aufrufbar

Beitrag von Everlong »

Hallo,

danke für die Antwort.
gn#36 hat geschrieben:

Code: Alles auswählen

// Start auth check
if (!$auth->acl_get('f_read', $forum_id) || $user->data['user_id'] == ANONYMOUS)
. Dann bekommen Gäste immer das Loginformular zu sehen.
Ich habe es jetzt so gelöst:

Code: Alles auswählen

if (!$user->data['is_registered'] && $forum_id != 1 && $forum_id != 36 && !$user->data['is_bot'])
Das macht es was es soll, die Gäste können in den beiden Foren (1 und 36) die Themen lesen jedoch in allen anderen Forum nur die Übersicht der Themen sehen.
Gruss

Everlong
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Themen im Forum sichtbar, jedoch nicht aufrufbar

Beitrag von gn#36 »

Damit hast du natürlich die Berechtigung f_read komplett ausgehebelt im Bezug auf das ansehen von Themen. Heißt also, jeder der die ID des Themas kennt, kann es lesen, es wird nicht zusätzlich noch geprüft ob der User generell in dem Forum lesen dürfte. Somit darf jeder, selbst wenn er die Themenübersicht und das Forum ansich nicht sehen kann, auf das Thema zugreifen, sofern er registriert ist. Da man das auch hinkriegt, indem man die IDs im Link durchprobiert sind damit alle deine Foren für alle registrierten Benutzer zugänglich. Bei Foren ID 1 und 36 besteht überhaupt keine Beschränkung, da darf auch jeder Gast lesen.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Everlong
Mitglied
Beiträge: 77
Registriert: 03.10.2003 03:49
Wohnort: Berlin

Re: Themen im Forum sichtbar, jedoch nicht aufrufbar

Beitrag von Everlong »

gn#36 hat geschrieben:Heißt also, jeder der die ID des Themas kennt, kann es lesen, es wird nicht zusätzlich noch geprüft ob der User generell in dem Forum lesen dürfte. Somit darf jeder, selbst wenn er die Themenübersicht und das Forum ansich nicht sehen kann, auf das Thema zugreifen, sofern er registriert ist.
Das ist auch gewünscht, es handelt sich um ein "Gästeforum" wo jeder unregistrierte Posten und auch die Themen sehen darf, jedoch in den anderen Foren nur die Themen in der Forum Liste einsehen darf jedoch nicht den Inhalt der einzelnen Threads als Gast.
Gruss

Everlong
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Themen im Forum sichtbar, jedoch nicht aufrufbar

Beitrag von gn#36 »

Solange du also absolut keine "internen" Foren z.B. nur für Moderatoren hast ist das ok. Für die gilt nämlich das gleiche. Ich wollte es nur erwähnen, falls das jemand nachmacht.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Everlong
Mitglied
Beiträge: 77
Registriert: 03.10.2003 03:49
Wohnort: Berlin

Re: Themen im Forum sichtbar, jedoch nicht aufrufbar

Beitrag von Everlong »

gn#36 hat geschrieben:Solange du also absolut keine "internen" Foren z.B. nur für Moderatoren hast ist das ok. Für die gilt nämlich das gleiche. Ich wollte es nur erwähnen, falls das jemand nachmacht.
Stimmt, wenn jemand registriert ist und die ForumID vom internen Moderatoren Forum kennt könnte er es sehen. Gar nicht daran gedacht.

Ich werde dann doch mir die Lösung mit "f_read" nochmal anschauen.

Danke fürs nachhaken!
Gruss

Everlong
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Themen im Forum sichtbar, jedoch nicht aufrufbar

Beitrag von gn#36 »

Wenn wir schon dabei sind, dann kann man auch hierfür eine Extension schreiben (oder es in die bestehende Extension integrieren).

Erstelle einen Ordner gn36/viewtopiclogin im ext Verzeichnis
dort hinein die folgenden Verzeichnisse und Dateien

Code: Alles auswählen

composer.json
config/
    services.yml
event/
   viewtopic.php
Inhalt der composer.json:

Code: Alles auswählen

{
    "name": "gn36/viewtopiclogin",
    "type": "phpbb-extension",
    "description": "An extension which forces a login form on viewtopic for guests, even if they are allowed to read according to permissions.",
    "version": "1.0.0",
    "time": "2015-01-12",
    "license": "GPL-2.0",
    "authors": [
        {
            "name": "Martin Beckmann",
            "role": "Developer"
        }
    ],
    "require": {
        "php": ">=5.3.3"
    },
    "extra": {
        "display-name": "Force login on Topic View for Guests",
        "soft-require" : {
            "phpbb/phpbb": ">=3.1.2,<3.2.*@dev"
        }
    }
}
Inhalt der services.yml (alle Einrückungen mit Leerzeichen!)

Code: Alles auswählen

services:
    gn36.viewtopiclogin.listener:
        class: gn36\viewtopiclogin\event\viewtopic
        arguments:
            - @user
        tags:
            - { name: event.listener }
Inhalt der viewtopic.php

Code: Alles auswählen

namespace gn36\viewtopiclogin\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class viewtopic implements EventSubscriberInterface
{
    protected $user;
   
    __construct(\phpbb\user $user)
    {
        $this->user = $user;
    }

    static public function getSubscribedEvents()
    {
        return array(
            // viewtopic
            'core.viewtopic_assign_template_vars_before'    => 'force_login_guest',
        );
    }
    public function force_login_guest($event)
    {
        //ggf. hier weitere Ausnahmen ergänzen anhand der Infos in $event (u.a. steht da die Foren ID drin: $event['forum_id'])
        if(!$user->data['is_registered'])
        {
            login_box();
        }
    }
} 
Auch das ist bisher noch nicht getestet.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Support-Forum“