Anerkennung der Geschäftsbedingungen Anerkennung der Geschäftsbedingungen
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

Anerkennung der Geschäftsbedingungen

Started by sindbad5, August 09, 2014, 12:04:03 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

sindbad5

Auf dem Loginformular soll stehen, dass die Geschäftbedingungen und rechtlichen Hinweise zu den Fotos anerkannt werden.

Wird dies vom User bestätigt, sind Highresolution-Downloads möglich, sonst nicht.

Das bedeutet, wer sich einloggt, ohne den Punkt zu bestätigen, sieht ev. Alben, die nicht Eingeloggte nicht sehen können, kann aber keine Downloads von hochaufgelösten Dateien auslösen.

Würde man die Bestätigung von rechtlichen Hinweisen und der Geschäftbedingungen bei jedem Higres-Download abfragen, nervt das zu sehr. Auf dem Loginformular ist das gut aufgehoben.

sindbad5

Kann man diese Erweiterung hinzufügen?

Αndré

Hier wieder die Problematik des Wortes "Download": sobald eine Datei vom Server an den Browser übertragen wurde, ist der "Download" praktisch fertig, obwohl der Benutzer das Bild ggf. (noch) nicht auf seinem Rechner abgespeichert hat. Unabhängig davon, dass sich das erstmal relativ fehleranfällig anhört, gehe ich davon aus, dass angemeldete Personen, die die AGB nicht bestätigt haben nur Bilder in Zwischengröße ansehen dürfen (also keinen Link zur Vollbildansicht erhalten). Ist es das, was du beabsichtigst?

sindbad5

Genau, die Leute, die sich anmelden, ohne die AGB zu bestätigen, können keine hochaufgelösten Bilder sehen.

Wenn sie sich anmelden ohne die AGB zu bestätigen, hätte das unter Umständen dennoch Vorteile für sie, weil sie dann Alben sehen können, die nicht öffentlich sind. Aber zur Entsperrung der hochaufgelösten Dateien muss ertsmal ein Bestätigung der Regeln erfolgen.

Tom

Αndré

Ich denke mal kurz laut 8) Ob die AGB bestätigt wurden oder nicht, speichert man am Besten in einem Cookie. Dann kann man später abfragen, ob dieses Cookie existiert oder nicht und entsprechend einen Link anbieten oder nicht. Der Admin sollte vermutlich immer Zugriff auf die hohe Auflösung haben.

Ich schaue mal, ob ich sowas in den nächsten Tagen umsetzen kann.

Αndré

In login.php suchst du nach
                  <tr>
                      <td colspan="2" align="center" class="tableb"><label for="remember_me">{$lang_login_php['remember_me']} </label><input name="remember_me" id="remember_me" type="checkbox" class="checkbox" value="1" tabindex="3" /></td>
                  </tr>

und fügst darüber
                  <tr>
                      <td colspan="2" align="center" class="tableb"><label for="agb">Hiermit akzeptiere ich die <a href="agb.php" target="agb">AGB</a></label><input name="agb" id="agb" type="checkbox" class="checkbox" value="1" tabindex="3" /></td>
                  </tr>

ein.

In bridge/coppermine.inc.php suchst du nach
                            // If this is a 'remember me' login set the remember field to true
                            if ($remember) {
                                    $remember_sql = ",remember = '1' ";
                                    // Change cookie life time to 2 weeks
                                    if (CPG_COOKIES_ALLOWED) {
                                        setcookie( $this->client_id, $this->session_id, time() + (CPG_WEEK*2), $CONFIG['cookie_path'] );
                                    }
                            } else {
                                    $remember_sql = '';
                                    // Kill the cookie when closing the browser
                                    if (CPG_COOKIES_ALLOWED) {
                                        setcookie( $this->client_id, $this->session_id, 0, $CONFIG['cookie_path'] );
                                    }
                            }

und ersetzt es durch
                            // If this is a 'remember me' login set the remember field to true
                            $superCage = Inspekt::makeSuperCage();
                            if ($remember) {
                                    $remember_sql = ",remember = '1' ";
                                    // Change cookie life time to 2 weeks
                                    if (CPG_COOKIES_ALLOWED) {
                                        setcookie( $this->client_id, $this->session_id, time() + (CPG_WEEK*2), $CONFIG['cookie_path'] );
                                        if ($superCage->post->keyExists('agb')) {
                                            setcookie( $CONFIG['cookie_name'].'_agb', 1, time() + (CPG_WEEK*CPG_WEEK), $CONFIG['cookie_path'] );
                                        }
                                    }
                            } else {
                                    $remember_sql = '';
                                    // Kill the cookie when closing the browser
                                    if (CPG_COOKIES_ALLOWED) {
                                        setcookie( $this->client_id, $this->session_id, 0, $CONFIG['cookie_path'] );
                                        if ($superCage->post->keyExists('agb')) {
                                            setcookie( $CONFIG['cookie_name'].'_agb', 1, 0, $CONFIG['cookie_path'] );
                                        }
                                    }
                            }

                            if (!$superCage->post->keyExists('agb')) {
                                setcookie( $CONFIG['cookie_name'].'_agb', 0, time() - CPG_WEEK, $CONFIG['cookie_path'] );
                            }



Damit hätten wir schon mal den Cookie. Nun müssen wir den Cookie an geeigneter Stelle auswerten. Dafür kopieren wir die Funktion theme_html_picture aus themes/sample/theme.php in die theme.php-Datei deines Themes, falls sie dort noch nicht existiert.

Dann suchst nach
if (!USER_ID && $CONFIG['allow_unlogged_access'] <= 2) {
und ersetzt es an beiden Stellen durch
                if (USER_ID && USER_ACCESS_LEVEL == 3 && $superCage->cookie->getInt($CONFIG['cookie_name'].'_agb') !== 1) {
                    $pic_html = '<a href="javascript:;" onclick="alert(\'Du musst den AGB zustimmen\');">';
                } elseif (!USER_ID && $CONFIG['allow_unlogged_access'] <= 2) {

sindbad5

Hallo, mit den Modifikationen erscheint ein anklickbares Feld im Loginformular, doch wenn es nicht aktiviert wird, kann man dennoch die Higresdateien runterladen. Ich habe das auf mehreren Rechnern ausprobiert, um auszuschießen, dass Dateien im Cache des Browser dieses Verhalten erzeugen. Die Änderungen in der theme.php scheinen keine Auswirkung zu haben.

Am Wochenende probiere ich das an einem frischen Projekt nochmal aus.

Tom

Αndré

Die Modifikation bietet lediglich den Link zum Bild in Vollgröße nicht an, wenn der Haken nicht gesetzt wurde. Der Direktaufruf der Datei ist nach wie vor möglich, da Coppermine in diesem Fall gar nicht involviert ist. Wie genau hast du denn getestet?

sindbad5

Ich habe die entsprechenden Dateien modifiziert und ausgetauscht. Dann habe ich einen neuen Benutzer ohne Adminrechte angelegt.
Danach alle Programme geschlossen, CCleaner aufgerufen, temp und caches gelöscht, Rechner neugestartet und die Installation wieder aufgerufen.

Dann habe ich mich unter dem neuen Benutzernamen eingeloggt, ohne die AGB zu bestätigen. Ergebnis, siehe Screenshot. Das Login habe ich auf zwei Laptops wiederholt, auf denen keine der ursprünglichen Dateien im Cache sein konnte.

Ich möchte zu der Installation hier keinen Link setzen, weil ich meine Fotos unter einer Domain auf HTML-Seiten und parallel dazu in einer älteren Copperminedatebank und zusätzlich in Pixtacy habe. Das neue Projekt soll derzeit noch nicht von Google und Co erfaßt werden.

Am Wochenende kann ich an der älteren Datenbank (http://www.medienarchiv.com/a-archiv/) einen zweiten Versuch starten, um zu checken, ob es damit geht.   

Tom

Αndré

Quote from: sindbad5 on August 21, 2014, 02:22:29 PM
siehe Screenshot

Das scheint mir kein Standard-Feature von Coppermine zu sein. Meine Modifikation deaktiviert das Popup, in dem das Bild in voller Größe zu sehen ist, welches sich beim Klick auf das Bild in Zwischengröße öffnet.

Wie wird denn die Download-Schaltfläche generiert? Über ein Plugin/Theme/Modifikation?

sindbad5

Verstehe ...  Ich habe die Plugins ' Secured fullsize download (fullsize_access)' und ' Log fullsize access (log fullsize access)' aktiviert. Eines der beiden ist dafür verantwortlich.

Vermutlich müßte Stramms Shoppingcart alle von mir gewünschten Funktionen enthalten: Higres-Download nur für berechtigte eingeloggte Benutzer, Protokoll und Anerkennung der Geschäftsbedinungen nebst rechtlichen Hinweisen zur Verwendung der Fotos. Doch reagiert er nicht auf Anfragen und scheint nicht mehr aktiv zu sein.

Deswegen taste ich mich mit deiner Hilfe und Plugins an eine alternative Lösung heran.

Tom


Αndré

Die Anpassungen in login.php und bridge/coppermine.inc.php  müssen beibehalten werden, die in deinem Theme kannst du rückgängig machen.

Dann öffnest du plugins/fullsize_access/fullsize_check.php und ersetzt
if( USER_ID ){
durch
if( USER_ID && $superCage->cookie->getInt($CONFIG['cookie_name'].'_agb') === 1){

sindbad5

Leier habe ich zuwenig Ahnung von php, um die Codezeile prüfen zu können. Mit der veränderten Datei erscheint nach einem Klick auf ein Thumbnail nur ein weisser Bildschirm, wenn ich mich als normaler User einlogge.

Tom

Αndré

Hoppla. Füge vor der o.g. Zeile bitte noch
$superCage = Inspekt::makeSuperCage();
ein.

sindbad5

Leider klappt das nicht. Zwar sehe ich die Thumbnails und wieder die Previews, doch darunter steht immer: "Higres Download nur mit Login" egal, ob man die AGB klickt oder nicht. 

Tom

Αndré

Ich habe es gerade getestet und bei mir erscheint dann
QuoteDownload:   Fullsize download for registered users only! Please, Register or login

Zum Vergleich, der Inhalt meiner fullsize_check.php-Datei:
<?php
function fullsize_check_user(){
$superCage Inspekt::makeSuperCage();
if( USER_ID && $superCage->cookie->getInt($CONFIG['cookie_name'].'_agb') === 1){
return(true);
} else{
return(false);
}
}
?>

sindbad5

Das ist wie bei mir, abgesehen davon, dass ich die Meldung in deutscher Sprache sehe.

Sie erscheint, wenn ich mich einlogge und die AGB bestätige, aber auch wenn ich sie nicht bestätige.

Möchte ich mich vor einem konkreten Download nochmal einloggen, sagt Coppermine, du bist schon eingeloggt.

Für den Higresdownload müssen zwei Bedingungen erfüllt sein:  Login und Bestätigung der AGB.

Tom

   




Αndré

Bitte füge vor
$superCage = Inspekt::makeSuperCage();
noch
global $CONFIG;
ein.

sindbad5

Das sieht gut aus. Den Text zum Login bei erfolgter Anmeldung ohne Bestätigung der AGB werde ich entsprechend anpassen und dann wäre das geklärt.  Danke sehr!

Tom

Αndré

Bitte. Und sorry für die ganzen Flüchtigkeitsfehler, aber ich habe derzeit nicht die Zeit um alles zunächst zu testen bevor ich es veröffentliche.