33 geniale Contao-Erweiterungen, die du kennen solltest! - Contao Academy
Ergebnis 1 bis 7 von 7

Thema: [calender_ical] Zugriff auf .ics-Datei mit Passwort schützen

  1. #1
    Contao-Fan Avatar von gregor
    Registriert seit
    20.06.2009.
    Ort
    Frankfurt am Main
    Beiträge
    549

    Standard [calender_ical] Zugriff auf .ics-Datei mit Passwort schützen

    Hallo,

    kann ich den Zugriff auf die von calendar_ical erzeugte .ics-Datei mit einem Passwort schützen?

    Ich möchte erreichen das nur bestimmte User Zugriff auf den iCal-Kalender haben.


    LG
    Gregor

  2. #2
    Contao-Fan Avatar von hschottm
    Registriert seit
    15.06.2009.
    Ort
    Loxstedt, Germany
    Beiträge
    816
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von gregor Beitrag anzeigen
    Hallo,

    kann ich den Zugriff auf die von calendar_ical erzeugte .ics-Datei mit einem Passwort schützen?

    Ich möchte erreichen das nur bestimmte User Zugriff auf den iCal-Kalender haben.


    LG
    Gregor
    Dann nimmst du einfach das Inhaltselement 'iCal', das sich unter Dateielemente versteckt.
    Bei dem kannst du einfach unter Sicherheitseinstellungen dann nur die entsprechenden Nutzergruppen auswählen, die das Element überhaupt sehen dürfen, d.h. der Link ist nur für bestimmte ausgewählte Benutzer sichtbar.

    Gruß,
    Helmut
    Angehängte Grafiken Angehängte Grafiken
    Blackmail's such an ugly word. I prefer extortion -- the "x" makes it sound cool.
    -- Bender

  3. #3
    Contao-Fan Avatar von gregor
    Registriert seit
    20.06.2009.
    Ort
    Frankfurt am Main
    Beiträge
    549

    Standard

    Hallo Helmut,

    vielen Dank für Deine Antwort.
    Leider habe ich mich wohl etwas missverständlich ausgedrückt.

    Ich möchte gerne den Zugriff mit einem Smartphone auf die .ics von Extern mit einem Passwort versehen. Somit können nur bestimmte externe User ein Kalender-Abo bekommen. Die .ics selbst kann man ja nicht mit einem Passwort versehen.

    Wenn ich die .ics in ein mit htaccess-Passwortschutz geschütztes Verzeichnis manuel kopiere, habe ich mein Ziel schon erreicht. Jedoch speichert calender_ical die .ics im Root ab und jedesmal dann manuell verschieben ist nicht sehr effizient. Meine Frage wäre nun: Kann ich calender_ical dazu bringen, dass die .ics in ein passwortgeschützes Verzeichnis meiner Wahl abgespeichert wird?

    LG
    Gregor

  4. #4
    Contao-Fan Avatar von hschottm
    Registriert seit
    15.06.2009.
    Ort
    Loxstedt, Germany
    Beiträge
    816
    User beschenken
    Wunschliste

    Standard

    Das müsste man der Erweiterung noch beibringen, dass sie in ein anderes Verzeichnis speichert. Das Problem ist ein bisschen, dass der gesamte Prozess mit den downloadbaren Dateien auf das Root-Verzeichnis ausgerichtet ist. Also auch das leeren des Cache und das erzeugen neuer Dateien erwartet immer explizit das Root-Verzeichnis.
    Man müsste das also quasi als zusätzliche Option hinzufügen. Und ehrlich gesagt wird das auch nichts mit einer Directory-Auswahl über die Oberfläche, denn die greift ja nur auf TL_FILES zu. Das müsste dann schon ein Textfeld sein, in dem man den Pfad eingibt und stumpf versucht wird, die Datei dort ebenfalls zu erzeugen.

    Ich könnte mal versuchen, das zu integrieren, wobei mir im Moment leider etwas die Zeit fehlt. Wärst du selbst in der Lage, das zu tun? Ich hab die gesamten Sourcen in github und könnte dich problemlos zum Mitentwickler für das Projekt machen.

    Gruß,
    Helmut

    Zitat Zitat von gregor Beitrag anzeigen
    Hallo Helmut,

    vielen Dank für Deine Antwort.
    Leider habe ich mich wohl etwas missverständlich ausgedrückt.

    Ich möchte gerne den Zugriff mit einem Smartphone auf die .ics von Extern mit einem Passwort versehen. Somit können nur bestimmte externe User ein Kalender-Abo bekommen. Die .ics selbst kann man ja nicht mit einem Passwort versehen.

    Wenn ich die .ics in ein mit htaccess-Passwortschutz geschütztes Verzeichnis manuel kopiere, habe ich mein Ziel schon erreicht. Jedoch speichert calender_ical die .ics im Root ab und jedesmal dann manuell verschieben ist nicht sehr effizient. Meine Frage wäre nun: Kann ich calender_ical dazu bringen, dass die .ics in ein passwortgeschützes Verzeichnis meiner Wahl abgespeichert wird?

    LG
    Gregor
    Blackmail's such an ugly word. I prefer extortion -- the "x" makes it sound cool.
    -- Bender

  5. #5
    Contao-Fan Avatar von gregor
    Registriert seit
    20.06.2009.
    Ort
    Frankfurt am Main
    Beiträge
    549

    Standard

    Hallo Helmut,

    danke für Deine Infos.

    Es würde ein passwortgeschützter Ordner unterhalb von tl_files ausreichen. Er kann auch einen vorgegeben Namen haben, wie z.B. calendar_ical. Jedoch doch sollte hier nicht zusätzlich eine .ics gespeichert werden, sondern dann ausschließlich.

    Die Zeit, ja die ist immer ein Problem. Du musst Dir auch jetzt deswegen keinen Stress machen. Ich weiß jetzt erstmal wo das Problem liegt. Leider ist Programmierung nicht mein Steckenpferd, deshalb kann ich hier nicht helfen.

    LG
    Gregor

  6. #6
    Contao-Fan Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    256

    Standard

    Wäre immer noch ein nettes HaveTo - also den Pfad zu ändern...
    Im Zweifel händisch. Wobei in der Software natürlich attraktiver wäre .
    Jemand ne Idee ?

  7. #7
    Contao-Fan Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    256

    Standard

    Habe die Erweiterung jetzt wie folgt geändert um alle iCal Files in einen Ordner zu verlagern:

    /classes/CalendarExport.php (Ab Zeile 77)

    PHP-Code:
        protected function generateFiles($arrArchive)
        {
            
    $time time();
            
    $path "files/icalfiles/";
            
    $this->arrEvents = array();

            
    $startdate = (strlen($arrArchive['ical_start'])) ? $arrArchive['ical_start'] : time();
            
    $enddate = (strlen($arrArchive['ical_end'])) ? $arrArchive['ical_end'] : time()+$GLOBALS['calendar_ical']['endDateTimeDifferenceInDays']*24*3600;
            
    $filename strlen($arrArchive['ical_alias']) ? $arrArchive['ical_alias'] : 'calendar' $arrArchive['id'];
            
    $ical $this->getAllEvents(array($arrArchive['id']), $startdate$enddate$arrArchive['title'], $arrArchive['ical_description'], $filename$arrArchive['ical_prefix']);
            
    $content $ical->createCalendar();
            
    $objFile = new File($path.$filename ".ics");
            
    $objFile->write($content);
            
    $objFile->close();
        }

        
    /**
         * Remove old ics files from the root directory
         */
        
    public function removeOldSubscriptions()
        {
            
    $path "files/icalfiles";
            
    $arrFeeds = array();
            
    $objFeeds $this->Database->prepare("SELECT id, ical_alias FROM tl_calendar WHERE make_ical=?")->execute(1);

            while (
    $objFeeds->next())
            {
                
    $arrFeeds[] = strlen($objFeeds->ical_alias) ? $objFeeds->ical_alias 'calendar' $objFeeds->id;
            }

            
    // Make sure dcaconfig.php is loaded
            
    include(TL_ROOT '/system/config/dcaconfig.php');

            
    // Delete old files
            
    foreach (scan(TL_ROOT $path) as $file)
            {
                if (
    is_dir(TL_ROOT $path '/' $file))
                {
                    continue;
                }

                if (
    is_array($GLOBALS['TL_CONFIG']['rootFiles']) && in_array($file$GLOBALS['TL_CONFIG']['rootFiles']))
                {
                    continue;
                }

                if(
    $path$objFile = new \File($path.'/'.$file);
                else 
    $objFile = new \File($file);
                if (
    $objFile->extension == 'ics' && !in_array($objFile->filename$arrFeeds) && !preg_match('/^sitemap/i'$objFile->filename))
                {
                    
    $this->log('iCal File loeschen:' $objFile->filename''TL_CRON);
                    
    $objFile->delete();
                }

                
    $objFile->close();
            }
            return array();
        } 

    Leider gibt es keine eigenen Einstellungen für die Erweiterung im allgemeinen. Daher mit Pfad inline. Automatisches Update der Erweiterung würde den Pfad zerschießen. Ich gehe aber sowieso nicht davon aus, dass es nach knapp 2 Jahren noch mal ein Update geben wird :-).
    Vielleicht setze ich mich irgend wann noch mal dran, allgemeine Einstellungen für die Erweiterung zu integrieren. Aber da müsste ich mich stärker in die Contao Thematik einlesen.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •