diff --git a/lib/classes/StudipRedisCache.class.php b/lib/classes/StudipRedisCache.class.php index c485b787b52ff135c7476e37d9f37b07c4ede57d..7b9570bdd0c76605dbb000f59f2298648440be89 100644 --- a/lib/classes/StudipRedisCache.class.php +++ b/lib/classes/StudipRedisCache.class.php @@ -27,8 +27,9 @@ class StudipRedisCache implements StudipCache * * @param string $hostname Hostname of redis server * @param int $port Port of redis server + * @param string $auth Optional auth token/password */ - public function __construct($hostname, $port) + public function __construct($hostname, $port, string $auth = '') { if (!extension_loaded('redis')) { throw new Exception('Redis extension missing.'); @@ -40,6 +41,10 @@ class StudipRedisCache implements StudipCache if (!$status) { throw new Exception('Could not add cache.'); } + + if ($auth !== '') { + $this->redis->auth($auth); + } } /** @@ -83,7 +88,10 @@ class StudipRedisCache implements StudipCache public function read($arg) { $key = $this->getCacheKey($arg); - return $this->redis->get($key); + + $result = $this->redis->get($key); + + return ($result === null) ? null : unserialize($result); } /** @@ -97,7 +105,7 @@ class StudipRedisCache implements StudipCache public function write($name, $content, $expire = self::DEFAULT_EXPIRATION) { $key = $this->getCacheKey($name); - return $this->redis->setEx($key, $expire, $content); + return $this->redis->setEx($key, $expire, serialize($content)); } /** diff --git a/resources/vue/components/RedisCacheConfig.vue b/resources/vue/components/RedisCacheConfig.vue index ae254b9e7eca76e9e58928e64704ea591c7222eb..ad035b37f0393df8cf145f10c9f0787969af2491 100644 --- a/resources/vue/components/RedisCacheConfig.vue +++ b/resources/vue/components/RedisCacheConfig.vue @@ -2,16 +2,20 @@ <div> <label class="col-4"> <span class="required"> - <translate>Hostname</translate> + {{ $gettext('Hostname') }} </span> <input required type="text" name="hostname" placeholder="localhost" v-model="theHostname"> </label> <label class="col-2"> <span class="required"> - <translate>Port</translate> + {{ $gettext('Port') }} </span> <input required type="text" name="port" placeholder="6379" v-model="thePort"> </label> + <label> + {{ $gettext('Passwort/Token zur Authentifizierung') }} + <input type="text" name="auth" v-model="theAuth"> + </label> </div> </template> @@ -26,12 +30,17 @@ export default { port: { type: Number, default: 6379 + }, + auth: { + type: String, + default: '' } }, data () { return { theHostname: this.hostname, thePort: this.port, + theAuth: this.auth } }, methods: {