From c627c74e1b7e0ce495d17fd8b77b30d8056e7c63 Mon Sep 17 00:00:00 2001 From: Suraj Dadral Date: Wed, 23 Oct 2024 13:31:16 +0530 Subject: [PATCH] Reads '%p' password from current user session instead of db This fixes error if user changed password --- drivers/caldav/caldav_client.php | 4 ++++ drivers/caldav/caldav_driver.php | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/caldav/caldav_client.php b/drivers/caldav/caldav_client.php index 95f6789..81567fa 100644 --- a/drivers/caldav/caldav_client.php +++ b/drivers/caldav/caldav_client.php @@ -62,6 +62,10 @@ public function __construct($uri, $user = null, $pass = null) $this->rc = rcmail::get_instance(); if ($user) $settings['userName'] = $user; + if ($pass == '%p') { + $password = $this->rc->get_user_password(); + $pass = str_replace('%p', $password, $pass); + } if ($pass) $settings['password'] = $pass; parent::__construct($settings); diff --git a/drivers/caldav/caldav_driver.php b/drivers/caldav/caldav_driver.php index 71a2162..1831001 100644 --- a/drivers/caldav/caldav_driver.php +++ b/drivers/caldav/caldav_driver.php @@ -118,15 +118,12 @@ protected function _setup_preinstalled_sources() foreach ($preinstalled_sources as $cal){ $url = $cal['caldav_url']; $user = $cal['caldav_user']; - $pass = $cal['caldav_pass']; $url = str_replace('%u', $username, $url); $user = str_replace('%u', $username, $user); - $pass = str_replace('%p', $password, $pass); $cal['caldav_url'] = $url; $cal['caldav_user'] = $user; - $cal['caldav_pass'] = $pass; if (!$this->create_source($cal)) { $error_msg = 'Unable to add default calendars' . ($this->last_error ? ': ' . $this->last_error :''); @@ -2339,12 +2336,16 @@ private function _unix_timestamp($field) } private function _decrypt_pass($pass) { + if ($pass == '%p') return $pass; + $p = base64_decode($pass); $e = new Encryption(); return $e->decrypt($p); } private function _encrypt_pass($pass) { + if ($pass == '%p') return $pass; + $e = new Encryption(); $p = $e->encrypt($pass); return base64_encode($p);