File indexing completed on 2024-12-22 05:36:24

0001 <?php
0002 
0003 include_once APPLICATION_LIB . '/JWT.php';
0004 
0005 /**
0006  *  ocs-webserver
0007  *
0008  *  Copyright 2016 by pling GmbH.
0009  *
0010  *    This file is part of ocs-webserver.
0011  *
0012  *    This program is free software: you can redistribute it and/or modify
0013  *    it under the terms of the GNU Affero General Public License as
0014  *    published by the Free Software Foundation, either version 3 of the
0015  *    License, or (at your option) any later version.
0016  *
0017  *    This program is distributed in the hope that it will be useful,
0018  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
0019  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0020  *    GNU Affero General Public License for more details.
0021  *
0022  *    You should have received a copy of the GNU Affero General Public License
0023  *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0024  *
0025  * Created: 26.11.2018
0026  */
0027 class Local_LoginCookie
0028 {
0029 
0030     const secret = 'jrEeZKyGCCVJCa7Hsgwqv5wf21GREJ9j';
0031 
0032     public static function createJwt($data, $expire)
0033     {
0034         $payload = self::buildPayload($data, $expire);
0035 
0036         return JWT::encode($payload, self::secret, $algo = 'HS256');
0037     }
0038 
0039     private static function buildPayload($data, $expire)
0040     {
0041         $date = new DateTime();
0042         $interval = DateInterval::createFromDateString($expire);
0043         $payload['exp'] = $date->add($interval)->getTimestamp();
0044         $payload['data'] = $data;
0045 
0046         return $payload;
0047     }
0048 
0049     public static function readJwt($key)
0050     {
0051         $payload = JWT::decode($key, self::secret, true);
0052 
0053         if (self::isExpired($payload->exp)) {
0054             return false;
0055         }
0056 
0057         return $payload->data;
0058     }
0059 
0060     public static function isExpired($expiration_time)
0061     {
0062         $time = time();
0063 
0064         return $time < $expiration_time;
0065     }
0066 
0067 }