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
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
Blackmail's such an ugly word. I prefer extortion -- the "x" makes it sound cool.
-- Bender
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
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
Blackmail's such an ugly word. I prefer extortion -- the "x" makes it sound cool.
-- Bender
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
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 ?
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 in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen