File indexing completed on 2024-10-13 13:29:13
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: 10.10.2018 0026 */ 0027 class Application_Model_Jwt 0028 { 0029 0030 public static function encode($member_id) 0031 { 0032 $config = Zend_Registry::get('config')->settings->jwt; 0033 $member_data = self::getMemberData($member_id); 0034 $payload = self::buildPayload($member_data, $config); 0035 0036 return JWT::encode($payload, $config->secret, $algo = 'HS256'); 0037 } 0038 0039 private static function getMemberData($member_id) 0040 { 0041 $model = new Default_Model_Member(); 0042 0043 return $model->fetchMemberData($member_id)->toArray(); 0044 } 0045 0046 private static function buildPayload($member_data, $config) 0047 { 0048 $date = new DateTime(); 0049 $interval = DateInterval::createFromDateString($config->expire->cookie); 0050 $payload['exp'] = $date->add($interval)->getTimestamp(); 0051 $payload['vt'] = 4; //type=cookie_ltat 0052 $payload['user'] = $member_data['external_id']; 0053 $payload['hash'] = crc32($member_data['username'] . $member_data['mail'] . $member_data['password']); 0054 0055 return $payload; 0056 } 0057 0058 public static function decode($jwt, $verify = true) 0059 { 0060 $config = Zend_Registry::get('config')->settings->jwt; 0061 0062 return JWT::decode($jwt, $config->secret, $verify); 0063 } 0064 0065 public static function encodeFromArray(array $payload) 0066 { 0067 $config = Zend_Registry::get('config')->settings->jwt; 0068 0069 return JWT::encode($payload, $config->secret, $algo = 'HS256'); 0070 } 0071 0072 }