ConPresso Community

Fragen, Antworten, Diskussionen rund um das Content Management System ConPresso

 
Fragen zu 4.0.8
Gehe zu Seite 1, 2, 3  Weiter
 
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> ConPresso 4
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 23.07.2009 20:34    Titel: Fragen zu 4.0.8 Antworten mit Zitat

Ich beziehe mich auf Aussagen aus folgender Ankündigung:

http://community.conpresso.de/viewtopic.php?p=24718#24718


Zitat:
Sicherheit: Der Aufruf einer externen URL zeigt eine Warnung an. Modulentwickler können Prefixe von dieser Warnung freischalten, indem Sie im Modul-Array einen Wert für 'externalHelpUrl' definieren.

Kann man das mal näher erläutern? Geht es dabei um die auf die Fragezeichen-Buttons gelegten Hilfefunktionen oder die Links in der Hilfe-Navigation? Gemerkt habe ich davon noch nichts...
Und wie sieht die 'externalHelpUrl'-Definition aus?
Zitat:
Im oberen Frame werden die Rubriken nicht auf Basis der Navigation angezeigt, um ein direktes Login in eine Rubrik zu ermöglichen.

Welche Änderungen sind dafür verantwortlich? Ich würde das gerne in einigen 4.0.7 Auftritten nachrüsten, ohne alle Modifikationen zu verlieren.
Schade daß es noch kein direktes "Artikel bearbeiten"-Login gibt (das hatte ich mal von mir aus für eine 4.0.3 gebaut...)
Zitat:
Experimentelles Feature: Schutz von Dateien mit bestimmten Dateinamen vor unberechtigtem Download über eine .htaccess-Umleitung.

Wo und wie kann man das sehen? Eine .htaccess-Datei habe ich nicht gefunden...

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
balu
ConPresso-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1746

BeitragVerfasst am: 24.07.2009 08:51    Titel: Re: Fragen zu 4.0.8 Antworten mit Zitat

MarkusR hat Folgendes geschrieben:
Ich beziehe mich auf Aussagen aus folgender Ankündigung:

http://community.conpresso.de/viewtopic.php?p=24718#24718


Zitat:
Sicherheit: Der Aufruf einer externen URL zeigt eine Warnung an. Modulentwickler können Prefixe von dieser Warnung freischalten, indem Sie im Modul-Array einen Wert für 'externalHelpUrl' definieren.

Kann man das mal näher erläutern? Geht es dabei um die auf die Fragezeichen-Buttons gelegten Hilfefunktionen oder die Links in der Hilfe-Navigation? Gemerkt habe ich davon noch nichts...
Und wie sieht die 'externalHelpUrl'-Definition aus?


Die Hilfe kann ja über den ref-Parameter auch auf externe Seiten verweisen:
http://www.example.com/conpresso/_manual/index.php?ref=http://www.heise.de

Wenn Ihr in einem Modul so auf externe Links verweist, wird also auch eine Warnung ausgegeben.

Vermeiden könnt Ihr das, indem ihr in der Modul-Definition ($GLOBALS['modules'][$moduleDirectory]) den neuen Parameter "externalHelpUrl" angebt.

Der Parameter ist ein "Prefix", die als "ref" übergebene URL muss am Anfang dieser URL entsprechen:
http://www.heise.de
http://www.heise
würden also die Warnung vermeiden.

MarkusR hat Folgendes geschrieben:

Zitat:
Im oberen Frame werden die Rubriken nicht auf Basis der Navigation angezeigt, um ein direktes Login in eine Rubrik zu ermöglichen.

Welche Änderungen sind dafür verantwortlich? Ich würde das gerne in einigen 4.0.7 Auftritten nachrüsten, ohne alle Modifikationen zu verlieren.


In frame_titel.php in den Zeilen 143 und 164 wurde unter anderem das folgende geprüft:
$_SESSION['SID_navigation_id']==$v['id']

Wenn man direkt in die Rubrik einloggt ist die navigation_id aber noch nicht in der Session, darum würde dort nicht die aktuelle Rubrik ausgewählt.

MarkusR hat Folgendes geschrieben:

Schade daß es noch kein direktes "Artikel bearbeiten"-Login gibt (das hatte ich mal von mir aus für eine 4.0.3 gebaut...)


Ich hatte mit einer eigenen Version dafür Probleme mit fehlenden Sessiondaten, so dass die Artikel dann teilweise in der falschen Rubrik gespeichert wurden.

Hattest Du das hier in der Community? Dann suche ich mir das nochmal raus und schaue was Du da anders gemacht hast.

MarkusR hat Folgendes geschrieben:

Zitat:
Experimentelles Feature: Schutz von Dateien mit bestimmten Dateinamen vor unberechtigtem Download über eine .htaccess-Umleitung.

Wo und wie kann man das sehen? Eine .htaccess-Datei habe ich nicht gefunden...


Das Problem ist, dass eine .htaccess-Datei auf Servern zu Problemen führt, die das nicht unterstützen / erlauben.

In der _data/index.php wird der Mechanismus kurz erklärt und auch die zwei Zeilen, die für eine .htaccess nötig wären.

Balu

_________________
Bartels.Schöne
ConPresso Support & Development

 
Für dieses Posting bedanken sich die folgenden User: MarkusR
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 24.07.2009 09:47    Titel: Re: Fragen zu 4.0.8 Antworten mit Zitat

balu hat Folgendes geschrieben:
Hattest Du das hier in der Community? Dann suche ich mir das nochmal raus und schaue was Du da anders gemacht hast.

Ich glaube nicht. Damals gab es nicht mal das direkte Rubriklogin, aber ich hatte im Quellcode den Ansatz einer Prüfung des Parameters "startrubric" endeckt und habe das ganze dann aufgebohrt, damit Links in dieser Form
../_admin/index.php?startrubric=RUBRIKNAME&article_action=articles_modify&article_nr=27
direkt zur Bearbeitung des Artikels führen, inkl. korrekter Einstellung der Rubrik. Das führte dann allerdings erst mal zur Entwicklung des Rubrik-Platzhalters (<!-- RUBRIC: Name; -->) der dann später als Value-Platzhalter eingeführt wurde (<!-- VALUE: rubric; name; -->). Darüber geriet die direkte Artikelbearbeitung in Vergessenheit.

Was diesen ref-Parameter angeht kann ich es dennoch nicht nachvollziehen, weil bei mir auch die externen Links ohne Meldung aufgerufen werden. Ein Aufruf der Hilfe in der Form
../_manual/index.php?ref=http%3A%2F%2Fmanual.conpresso4.de%2Fform%2Fsettings.htm&show=modules
zeigt die gewünschte Seite direkt an. Keine Meldung. Mache ich was falsch?
(ja, es ist eine 4.0.8-Installation...)

Könnte es sein, daß die Prüfung
if (substr($ref, 0, strlen($v['externalHelpUrl'])) == $v['externalHelpUrl'])
in dem Fall, daß nichts angegeben wird, prüft, ob es einen Teil mit der Länge Null gibt, der nichts enthält? Das dürfte immer true ergeben...
Eine Datei in der Form
Code:
<?php
echo (substr($ref, 0, strlen($v['externalHelpUrl'])) == $v['externalHelpUrl'])  ? "Stimmt!" : "Stimmt nicht!";
?>

sagt bei mir immer "Stimmt!", da die Variable $v nicht existiert.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 24.07.2009 10:13    Titel: Antworten mit Zitat

Habe gerade den Hack für den Rubrik-Login für 4.0.3 wiedergefunden:
http://community.conpresso.de/viewtopic.php?t=2593
der damals bestens funktionierte (inkl. korrekter Einstellung des title-Frames...)

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
balu
ConPresso-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1746

BeitragVerfasst am: 27.07.2009 09:48    Titel: Re: Fragen zu 4.0.8 Antworten mit Zitat

Hi Markus,

MarkusR hat Folgendes geschrieben:
Was diesen ref-Parameter angeht kann ich es dennoch nicht nachvollziehen, weil bei mir auch die externen Links ohne Meldung aufgerufen werden. Ein Aufruf der Hilfe in der Form
../_manual/index.php?ref=http%3A%2F%2Fmanual.conpresso4.de%2Fform%2Fsettings.htm&show=modules
zeigt die gewünschte Seite direkt an. Keine Meldung. Mache ich was falsch?
(ja, es ist eine 4.0.8-Installation...)

Könnte es sein, daß die Prüfung
if (substr($ref, 0, strlen($v['externalHelpUrl'])) == $v['externalHelpUrl'])
in dem Fall, daß nichts angegeben wird, prüft, ob es einen Teil mit der Länge Null gibt, der nichts enthält? Das dürfte immer true ergeben...
Eine Datei in der Form
Code:
<?php
echo (substr($ref, 0, strlen($v['externalHelpUrl'])) == $v['externalHelpUrl'])  ? "Stimmt!" : "Stimmt nicht!";
?>

sagt bei mir immer "Stimmt!", da die Variable $v nicht existiert.


Das ist natürlich absolut richtig, hat mich aber etwas an meinem Verstand zweifeln lassen, weil ich eigentlich sicher war, das sowohl gesetzt als auch nicht gesetzt geprüft zu haben.

Klassischer Fall von "nicht alle Eventualitäten" bedacht. Getestet wurde, ob die Warnung ausgegeben wird, wenn kein Modul aktiv ist und ob ein aktives Modul die Warnung überspringt, wenn der Wert gesetzt ist.

Vergessen wurde aber ein aktives Modul ohne den Wert zu prüfen.

Vor das substr() habe ich jetzt darum noch eine Prüfung eingebaut, ob der Wert gesetzt ist:

!empty($v['externalHelpUrl']) &&

Balu

_________________
Bartels.Schöne
ConPresso Support & Development
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
balu
ConPresso-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1746

BeitragVerfasst am: 10.08.2009 10:10    Titel: Antworten mit Zitat

Hi Markus,

MarkusR hat Folgendes geschrieben:
Habe gerade den Hack für den Rubrik-Login für 4.0.3 wiedergefunden:
http://community.conpresso.de/viewtopic.php?t=2593
der damals bestens funktionierte (inkl. korrekter Einstellung des title-Frames...)


ich wollte Dir hierzu noch schreiben, dass Du nicht startrubric, sondern rubric als Parameter benutzen musst, damit das (im aktuellen Code) funktioniert. Außerdem wird dort nicht nach dem Rubriknamen, sondern nur nach der ID gesucht.

Da das ganze sowieso nur für Admins eine Hilfe sein soll und das vermutlich nicht unbedingt für SEO nötig ist sollte die ID reichen, oder?

_admin/index.php?rubric=1

Balu

_________________
Bartels.Schöne
ConPresso Support & Development
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 10.08.2009 10:37    Titel: Antworten mit Zitat

Hallo balu,

ist mir schon klar, daß es nicht mehr "startrubric" ist. Wink Anfang 2006 war das aber noch so.

Quellcode:
Zitat:
if (!empty($_REQUEST['startrubric'])) { // FIXME, Steffen: describe in manual that a user can directly log in to a rubric



Meine Frage oben bezog sich auf folgendes:
Was muß ich in einer 4.0.7 ändern, damit der Backend-Rubrik-Login so funktioniert wie in 4.0.8 ... außer Dateien einfach überschreiben natürlich.
(ich kann das natürlich auch selbst herausfinden, aber vielleicht weiß der Autor ja noch, was geändert wurde...)

Der Login in die direkte Artikelbearbeitung war nur ein Wunsch... der aber realisierbar sein sollte, wenn ich das schon in 4.0.3 geschafft habe.
Ich möchte nur ungern da was entwickeln, was dann wieder durch andere Parameter in kommenden Versionen zunichte gemacht wird.

Wunsch ist also ein Login in der Form:
_admin/index.php?rubric=1&article_action=articles_modify&articlenr=27
oder auch (wenn eine Artikelnummer automatisch die Artikelbearbeitung definiert) nur
_admin/index.php?rubric=1&article_nr=27
den man im Template einfach mittels
_admin/index.php?rubric=<!-- VALUE: rubric; id; -->&articlenr=<!-- Value: articlenr -->
erzeugen könnte.

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
balu
ConPresso-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1746

BeitragVerfasst am: 10.08.2009 11:39    Titel: Antworten mit Zitat

Hi Markus,

die Änderungen sind auch bei mir schon etwas länger her, aber wozu gibt es Logfiles:

r194 | balu | 2007-04-16 10:09:05 +0200 (Mon, 16 Apr 2007) | 1 line
Changed paths:
M /conpresso/trunk/_admin/frame_titel.php

don't make the display of the rubric in the head based on the navigation (to allow direct rubric login)
------------------------------------------------------------------------
r148 | balu | 2007-01-24 10:49:10 +0100 (Wed, 24 Jan 2007) | 1 line
Changed paths:
M /conpresso/trunk/_admin/index.php

Allow direct login to a rubric (fix);
------------------------------------------------------------------------
r147 | balu | 2007-01-23 15:41:27 +0100 (Tue, 23 Jan 2007) | 1 line
Changed paths:
M /conpresso/trunk/_admin/index.php
M /conpresso/trunk/_cfg/global_footer.php.dist

Allow direct login to a rubric; added transparent gif to do so;


Ich habe gerade schon Pakete für einen Release-Candidate für die 4.0.9 geschnürt, da bekomme ich das nicht mehr mit rein.

Aber ich denke, man muss dafür nur _admin/index.php anpassen und den else-Fall erweitern, der zu dem folgenden führt:

echo htmlspecialchars(BASE_REL.'_admin/articles.php?'.$SID);

Als Parameter würde ich "nr" nehmen, wie bei den Detailseiten und für die Artikelverwaltung allgemein.

Statt nur SID als Parameter zu ergänzen, müsste man dann falls $_REQUEST['nr'] gesetzt ist, noch die folgenden Parameter ergänzen:

action=articles_modify&nr=' . (int)$_REQUEST['nr']

Ich schaue mir das morgen nochmal an und teste es hier. Dann ist es im endgültigen Release enthalten.

Balu

_________________
Bartels.Schöne
ConPresso Support & Development

 
Für dieses Posting bedanken sich die folgenden User: MarkusR
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 12.08.2009 01:06    Titel: Antworten mit Zitat

Was mich gerade wundert, weil ich mich mit den Benutzern beschäftige:

Wenn ich einem Redakteur nur das Recht aktiv für eine Rubrik zuweise, dann werden damit ALLE Rechte aktiviert, also genauso wie Global (Alle Rechte zuweisen).

Die Hilfe sagt aber
Zitat:
Über die Spalte "Aktiv" wird gesteuert, ob einem Benutzer eine Rubrik im ConPresso-Backend angezeigt wird


Soll man dann damit auch ALLE Rechte erhalten?

Weiterhin kann ein Redakteur, der kein Recht hat, einen Artikel zu erstellen, dennoch einen Artikel kopieren, dann bearbeiten und speichern... und somit einen Artikel anlegen. Das sollte nicht so sein!

Dann kann ein Redakteur, der kein Recht für den Upload besitzt, dennoch Dateien hochladen, wenn auch nur für alle Rubriken. Dann kann er es aber zur Bearbeitung aufrufen und der Rubrik zuweisen. Er kann es dann zwar nicht mehr in der Liste sehen, aber nun ist es in der Rubrik verfügbar.
Upload, Löschen und Verschieben sollten ihm ohne Rechte für einen Upload nicht möglich sein!

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 12.08.2009 02:40    Titel: Antworten mit Zitat

Zitat:
man muss dafür nur _admin/index.php anpassen und den else-Fall erweitern, der zu dem folgenden führt:

echo htmlspecialchars(BASE_REL.'_admin/articles.php?'.$SID);

Als Parameter würde ich "nr" nehmen, wie bei den Detailseiten und für die Artikelverwaltung allgemein.

Statt nur SID als Parameter zu ergänzen, müsste man dann falls $_REQUEST['nr'] gesetzt ist, noch die folgenden Parameter ergänzen:

action=articles_modify&nr=' . (int)$_REQUEST['nr']

Ich schaue mir das morgen nochmal an und teste es hier. Dann ist es im endgültigen Release enthalten.

Habe ich jetzt mal selbst eingebaut, weil ich es gerade gut gebrauchen kann.

Ich habe einfach Zeile 232 von
Code:
                else                                echo htmlspecialchars(BASE_REL.'_admin/articles.php?'.$SID);

geändert in
Code:
                else echo htmlspecialchars(BASE_REL.'_admin/articles.php?'.( $_REQUEST['nr'] ? 'action=articles_modify&nr=' . (int)$_REQUEST['nr'] : '' ).$SID);

und Zeile 236 von
Code:
            <frame name="cpo_content"    scrolling="auto" noresize src="<?php echo BASE_REL.'_admin/login.php?action='.htmlspecialchars($naction).'&amp;rubric='.$_REQUEST['rubric'].'&amp;'.$SID; ?>">

in
Code:
            <frame name="cpo_content"    scrolling="auto" noresize src="<?php echo BASE_REL.'_admin/login.php?action='.htmlspecialchars($naction).'&amp;rubric='.$_REQUEST['rubric'].( $_REQUEST['nr'] ? '&amp;nr=' . (int)$_REQUEST['nr'] : '' ).'&amp;'.$SID; ?>">


Im Artikeltemplate ist noch ein Login versteckt in der Form
Code:
<a href="/_admin/index.php?rubric=<!-- Value: rubric; id; -->&nr=<!-- Value: articlenr -->" target="backend" rel="nofollow" ><img src="/_images/transparent.gif" style="width: 1em; height: 1em; border: 0;"/></a>


Zuletzt muß noch _admin/login.php die Nummer weitergeben.
Dafür nach der Zeile
Code:
    <input type="hidden" name="rubric" value="<?php print(htmlspecialchars($_REQUEST['rubric'])); ?>">

noch die Zeile
Code:
    <input type="hidden" name="nr" value="<?php print(htmlspecialchars($_REQUEST['nr'])); ?>">

einfügen.

Sieht gut aus! Cool


Hintergrund ist, daß dort "Profile" liegen, die User selbst bearbeiten können, aber eben nur die eigenen. Daher sollen sie dort direkt hingeleitet werden.
Dafür benutze ich die Variablenoption von mod_pages mit folgendem Eintrag:
Code:
NurEigeneArtikel;0;select;nein,ja

Wenn nun bei einer Rubrik "ja" gewählt ist, dann können Redakteure und Chefredakteure nur ihre eigenen Artikel sehen und somit bearbeiten.
Dazu mußte ich nur noch in _admin/articles.php in
Code:
    case 'list': // {{{

nach dem Block
Code:
        $_q = "FROM ".CPO_NEWS." "
             ."WHERE artikel_archiv=0 "
             ."AND rubric_id='".addslashes($_SESSION['SID_rubric_id'])."' ";

noch das hier einfügen
Code:
      // Einschränkung Rubrik auf eigene Artikel
      $uservars = unserialize($cpoRubrics[addslashes($cpoRubric['id'])]['_settings']);
      if ($uservars['NurEigeneArtikel'] == 'ja' && $_SESSION['SID_user']['admin']<=ROLE_CHIEFEDITOR)  $_q .= "AND autor ='".$_SESSION['SID_login']."' ";


edit: login.php vergessen

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7


Zuletzt bearbeitet von MarkusR am 12.08.2009 13:53, insgesamt einmal bearbeitet

 
Für dieses Posting bedanken sich die folgenden User: Mr. Magpie, Heike-Marie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 12.08.2009 03:26    Titel: Antworten mit Zitat

Damit man nicht doch über die im Template generierten Links an die fremden Artikel kommt, muß hier noch ein Riegel vorgeschoben werden.

Dazu im Block
Code:
    case 'articles_modify': // {{{

den Abfrage-Code
Code:
        $query = "SELECT nr, idx, auth, keywords, commentary, titel, templates_id, datum, verfallsdatum, pub_datum, autor, email, initial, freigabe, sort_id "
                ."FROM ".CPO_NEWS." "
                ."WHERE nr='".addslashes($_GET['nr'])."' ";

        $db = new DB;
        $db->query($query);
        $db->next_record();

ändern zu
Code:
        $query = "SELECT nr, idx, auth, keywords, commentary, titel, templates_id, datum, verfallsdatum, pub_datum, autor, email, initial, freigabe, sort_id "
                ."FROM ".CPO_NEWS." "
                ."WHERE nr='".addslashes($_GET['nr'])."' ";

        // Einschränkung Rubrik auf eigene Artikel
        $uservars = unserialize($cpoRubrics[addslashes($cpoRubric['id'])]['_settings']);
        if ($uservars['NurEigeneArtikel'] == 'ja' && $_SESSION['SID_user']['admin']<=ROLE_CHIEFEDITOR)  $query .= "AND autor ='".$_SESSION['SID_login']."' ";
       
        $db = new DB;
        $db->query($query);
        if ($db->num_rows()<1)  break; // Abbruch falls das kein eigener Artikel ist!
        $db->next_record();

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7

 
Für dieses Posting bedanken sich die folgenden User: Mr. Magpie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 12.08.2009 08:37    Titel: Antworten mit Zitat

Noch ein merkwürdiges Verhalten:

Ich habe eine Rubrik "Intern".

Dort versucht sich nun ein Redakteur, der keine Rechte für diese Rubrik hat und sie auch nicht als Gruppenmitglied sehen darf, einzuloggen. Er wird abgewiesen (Formular erscheint erneut). Dennoch ist er eingeloggt und kann die Rubrik sehen, wenn er sie einfach über die Navigation aufruft.

Daß Redakteure alle Rubriken im Frontend sehen dürfen ist ja ok (wäre aber schöner wenn nicht), daß Ihnen aber gesagt wird "Du kommst hier nicht rein" obwohl sie schon drin sind und einfach nur weitergehen müssen ist etwas schräg... Confused

Für meinen Teil kann ich es verkraften, da sie ohnehin Mitglied einer passenden Gruppe werden sollen (aber eben noch nicht sind). Besser wäre es aber wie gesagt, wenn man erst mit höheren Positionen alles sehen darf (z.B. ab Superuser).

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 12.08.2009 21:08    Titel: Antworten mit Zitat

MarkusR hat Folgendes geschrieben:

Weiterhin kann ein Redakteur, der kein Recht hat, einen Artikel zu erstellen, dennoch einen Artikel kopieren, dann bearbeiten und speichern... und somit einen Artikel anlegen. Das sollte nicht so sein!

Dann kann ein Redakteur, der kein Recht für den Upload besitzt, dennoch Dateien hochladen, wenn auch nur für alle Rubriken. Dann kann er es aber zur Bearbeitung aufrufen und der Rubrik zuweisen. Er kann es dann zwar nicht mehr in der Liste sehen, aber nun ist es in der Rubrik verfügbar.
Upload, Löschen und Verschieben sollten ihm ohne Rechte für einen Upload nicht möglich sein!

Ich habe jetzt folgendes angepasst, um bei fehlenden Rechten Artikeloperationen (Copy, Move, Delete) und jeglichen Dateiupload zu unterbinden.

In _include/basic_navigation.inc.php
Code:
   $GLOBALS['navigation']['Files'][] = array(
      'caption'=>'upload files',
      'url'=>BASE_REL.'_admin/upload_files.php'
   );
   $GLOBALS['navigation']['Files'][] = array(
      'caption'=>'work on images',
      'url'=>BASE_REL.'_admin/manage_images.php'
   );
   $GLOBALS['navigation']['Files'][] = array(
      'caption'=>'work on files',
      'url'=>BASE_REL.'_admin/manage_files.php'
   );

ändern zu
Code:
    if ($_SESSION['SID_stufe3'] || $_SESSION['SID_user']['admin']>ROLE_EDITOR) {
      $GLOBALS['navigation']['Files'][] = array(
         'caption'=>'upload files',
         'url'=>BASE_REL.'_admin/upload_files.php'
      );
      $GLOBALS['navigation']['Files'][] = array(
         'caption'=>'work on images',
         'url'=>BASE_REL.'_admin/manage_images.php'
      );
      $GLOBALS['navigation']['Files'][] = array(
         'caption'=>'work on files',
         'url'=>BASE_REL.'_admin/manage_files.php'
      );
   }


und in _admin/articles.php
Code:
            // copy
            printIcon(
               BASE_REL.'_admin/articles.php?action=articles_copy&nr='.$db->v('nr'),
               SKIN_URL.'pic_copy.gif',
               __('copy article'),
               true
            );

            // move
            if ($article_block) {
               printIcon(
                  BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
                  SKIN_URL.'pic_move.gif',
                  sprintf(__('Article is being edited by %s.'), htmlspecialchars($db_2->v('name'))),
                  false
               );
            } else {
               // Allowed to access different rubric?
               $query = "SELECT COUNT(*) FROM ".CPO_PERMISSION." "
                     ."WHERE user_id=".$_SESSION['SID_user']['id']." "
                     ."AND stufe1=1 "
                     ."AND rubric_id!='".addslashes($_SESSION['SID_rubric_id'])."'";
               DEBUG(2, 'Is the user allowed to access a different rubric?<br /><br />'.$query, __FILE__, __LINE__);
               $db_2->query($query);
               $db_2->next_record();
               if ($db_2->v('COUNT(*)')>0) {
                  printIcon(
                     BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
                     SKIN_URL.'pic_move.gif',
                     __('move article'),
                     true
                  );
               } else {
                  printIcon(
                     BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
                     SKIN_URL.'pic_move.gif',
                     __('You only have access to this rubric.'),
                     false
                  );
               }
            }

            // delete article
            if ($article_block) {
               printIcon(
                  BASE_REL.'_admin/articles.php?action=articles_delete&nr='.$db->v('nr'),
                  SKIN_URL.'pic_del.gif',
                  sprintf(__('Article is being edited by %s.'), htmlspecialchars($db_2->v('name'))),
                  false
               );
            } else {
               printIcon(
                  BASE_REL.'_admin/articles.php?action=articles_delete&nr='.$db->v('nr'),
                  SKIN_URL.'pic_del.gif',
                  __('delete article'),
                  true
               );
            }

ändern zu
Code:
            if ($_SESSION['SID_stufe1']==1 OR $_SESSION['SID_user']['admin']>ROLE_EDITOR)  { // by MarkusR: no copy, move delete if no creation rights!
               // copy
               printIcon(
                  BASE_REL.'_admin/articles.php?action=articles_copy&nr='.$db->v('nr'),
                  SKIN_URL.'pic_copy.gif',
                  __('copy article'),
                  true
               );

               // move
               if ($article_block) {
                  printIcon(
                     BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
                     SKIN_URL.'pic_move.gif',
                     sprintf(__('Article is being edited by %s.'), htmlspecialchars($db_2->v('name'))),
                     false
                  );
               } else {
                  // Allowed to access different rubric?
                  $query = "SELECT COUNT(*) FROM ".CPO_PERMISSION." "
                        ."WHERE user_id=".$_SESSION['SID_user']['id']." "
                        ."AND stufe1=1 "
                        ."AND rubric_id!='".addslashes($_SESSION['SID_rubric_id'])."'";
                  DEBUG(2, 'Is the user allowed to access a different rubric?<br /><br />'.$query, __FILE__, __LINE__);
                  $db_2->query($query);
                  $db_2->next_record();
                  if ($db_2->v('COUNT(*)')>0) {
                     printIcon(
                        BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
                        SKIN_URL.'pic_move.gif',
                        __('move article'),
                        true
                     );
                  } else {
                     printIcon(
                        BASE_REL.'_admin/articles.php?action=articles_move&nr='.$db->v('nr'),
                        SKIN_URL.'pic_move.gif',
                        __('You only have access to this rubric.'),
                        false
                     );
                  }
               }

               // delete article
               if ($article_block) {
                  printIcon(
                     BASE_REL.'_admin/articles.php?action=articles_delete&nr='.$db->v('nr'),
                     SKIN_URL.'pic_del.gif',
                     sprintf(__('Article is being edited by %s.'), htmlspecialchars($db_2->v('name'))),
                     false
                  );
               } else {
                  printIcon(
                     BASE_REL.'_admin/articles.php?action=articles_delete&nr='.$db->v('nr'),
                     SKIN_URL.'pic_del.gif',
                     __('delete article'),
                     true
                  );
               }
            }


Jetzt hat der Redakteur die Rechte, die eingestellt sind. In meinem Fall nur "Bearbeiten" (kein Erstellen, kein Upload, keine Freigabe)

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
balu
ConPresso-Entwickler


Anmeldungsdatum: 01.01.1970
Beiträge: 1746

BeitragVerfasst am: 13.08.2009 09:30    Titel: Antworten mit Zitat

Moin Markus,

ich habe hier für die Dateien einen anderen Weg eingeschlagen.

Bei Deinem Mechanismus kann er Dateien hochladen und für alle Rubriken verfügbar machen, wenn er in irgendeiner anderen Rubrik Upload-Rechte hat.

Ich habe den Code nach Deinem Hinweis hier so geändert, dass er zwar Dateien hochladen kann, diese aber nicht mehr der Rubrik zuordnen:

Dazu habe ich in der _includesite/i_image_change.php die Prüfung geändert in Zeile 143:

Code:
if ($_SESSION['SID_rubric_id']!='' && ($_SESSION['SID_stufe3'] || $_SESSION['SID_user']['admin']>ROLE_EDITOR)) {


Das ändert aber nichts daran, dass der Benutzer noch Dateien "in alle Rubriken" hochladen kann.

Hierzu müsste man im Grunde prüfen, ob der Redakteur überhaupt in irgendeiner Rubrik Upload-Rechte hat und nur dann den Datei-Upload freischalten.

Anschliessend stellte sich die Frage, ob die Upload-Rechte auch das bearbeiten / löschen von Dateien betreffen. Korrekt wäre es, wenn es hierzu eigenständige Rechte geben würde.

Ich habe hier mit meinen Kollegen gerade ein kurzes Brainstorming gemacht, um da zu einer Lösung zu kommen. Aber das Problem ist zu tief im ConPresso-Rechtesystem / Dateihandling verankert, als dass man da jetzt eine einfache Anpassung machen könnte.

Oder hast Du noch eine Idee?

Balu
PS: Artikel schaue ich mich gleich an

_________________
Bartels.Schöne
ConPresso Support & Development
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MarkusR
Handbuchversteher


Anmeldungsdatum: 01.01.1970
Beiträge: 7010

BeitragVerfasst am: 13.08.2009 09:46    Titel: Antworten mit Zitat

Ich verstehe Eure Vorgehensweise, den Upload nur dort zu verbieten, wo es keine Rechte gibt.
Ich wiederum möchte es nur dort erlauben, wo es Recht gibt.

Die Erfahrung zeigt, daß der Server mit Massen von Bildern zugemüllt wird, die nicht mehr gelöscht werden. Klar, auch das könnte man als Redakteur lernen, aber eine Verwaltung durch jemanden, der ein Händchen für Bilder hat, ist mir lieber.
Viele Leute haben (vermutlich durch die allgegenwärtige Skalierung durch das Betriebssystem) Probleme zu erkennen, wie groß ein Bild denn nun wirklich ist. Alle werden gleich groß dargestellt. Erst mach dem Upload sieht man, ob es eine Briefmarke oder ein Poster war.
Nicht zuletzt durch die in 3.4.x noch vorhandene (aber ressourcenfressende) Anzeige, ob und wo ein Bild verwendet wird, die es jetzt nicht mehr gibt, werden häufig Bilder gelöscht, die eigentlich noch in Verwendung waren.

Daher ist es für mich sinnvoller, Redakteuren kein Upload-Recht einzuräumen. Wenn ich das dann doch tue, dann auch gerne für alle Rubriken...

Ich weiß ja, daß das Rechtesystem eine der nächsten großen Baustellen ist... Wink
Diese Korrektur brauchte ich aber jetzt... Twisted Evil

_________________
Ciao Markus
ConPresso-Module
ConPresso und PHP 7
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neue Antwort erstellen    ConPresso Community Foren-Übersicht -> ConPresso 4 Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen