Session.class.php (2084B)
1 <?php 2 3 // PHP-Versionsunabhaengiges Array fuer die Session-Variablen ermitteln 4 namespace util; 5 6 use cms\model\User; 7 use security\Password; 8 9 10 /** 11 * Session-Funktionen zum Lesen/Schreiben in/von HTTP-Session 12 * In der Session werden folgende Daten abgelegt 13 * - Angemeldeter Benutzer 14 * - Datenbankobjekt 15 * - Konfiguration 16 * Die Methoden dieser Klassen koennen statisch aufgerufen werden. 17 * 18 * @author $Author$ 19 * @version $Revision$ 20 * @package openrat.service 21 */ 22 class Session 23 { 24 const KEY_OIDC_PROVIDER = 'oidc_provider'; 25 const KEY_DBID = 'dbid'; 26 const KEY_DB = 'database'; 27 const KEY_USER = 'userObject'; 28 const KEY_CONFIG = 'config'; 29 const KEY_PASSWORD_COMMIT_CODE = 'password_commit_code'; 30 const KEY_PASSWORD_COMMIT_NAME = 'password_commit_name'; 31 const KEY_REGISTER_CODE = 'register_code'; 32 const KEY_REGISTER_MAIL = 'register_mail'; 33 const KEY_MAIL_CHANGE_CODE = 'mail_change_code'; 34 const KEY_MAIL_CHANGE_MAIL = 'mail_change_mail'; 35 const KEY_TOKEN = 'token'; 36 37 const PRAEFIX = 'ors_'; 38 39 private static $sessionStarted; 40 41 public static function get($var) 42 { 43 $SESS = &$_SESSION; 44 45 if (isset($SESS[self::PRAEFIX . $var])) 46 return $SESS[self::PRAEFIX . $var]; 47 else 48 return ''; 49 } 50 51 public static function set($var, $value) 52 { 53 $SESS = &$_SESSION; 54 $SESS[self::PRAEFIX . $var] = $value; 55 } 56 57 58 /** 59 * Schliesst die aktuelle Session 60 * 61 * Diese Funktion sollte so schnell wie moeglich aufgerufen werden, da vorher 62 * keine andere Seite (im Frameset oder parallele AJAX-Requests) geladen werden kann 63 * Nach Aufruf dieser Methode sind keine Session-Zugriffe ueber diese Klasse mehr 64 * moeglich. 65 */ 66 public static function close() 67 { 68 session_write_close(); 69 self::$sessionStarted = false; 70 } 71 72 73 public static function token() { 74 return self::get( self::KEY_TOKEN ); 75 } 76 77 78 public static function start() 79 { 80 // Start the session. 81 session_name(getenv('CMS_SESSION_NAME') ?: 'or_sid'); 82 session_start(); 83 84 if ( ! self::token() ) 85 self::set( self::KEY_TOKEN,Password::randomHexString(15 ) ); 86 87 self::$sessionStarted = true; 88 } 89 } 90