File modules/util/Session.class.php

Last commit: Fri Apr 15 14:51:22 2022 +0200	dankert	Refactoring: User,Config and Database info is now stored in the Request, because so there is no session required for clients which are using Basic Authorization.
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
Download modules/util/Session.class.php
History Fri, 15 Apr 2022 14:51:22 +0200 dankert Refactoring: User,Config and Database info is now stored in the Request, because so there is no session required for clients which are using Basic Authorization. Fri, 3 Dec 2021 23:27:44 +0100 dankert New: Only allowed methods are shown in the dropdown menu; Some security enhancements. Thu, 12 Nov 2020 02:03:32 +0100 Jan Dankert Fixing registering a new user; Fixing forgotten password Thu, 12 Nov 2020 01:12:45 +0100 Jan Dankert Fix: Workflow for changing the users email adress; Mail sending; Forwarding forms Sat, 31 Oct 2020 13:54:19 +0100 Jan Dankert Cleanup: Use constants for session keys. Sat, 31 Oct 2020 03:48:03 +0100 Jan Dankert Some bad fixes for OIDC to work properly. Sat, 26 Sep 2020 03:03:47 +0200 Jan Dankert Refactoring: less global functions. Sat, 22 Feb 2020 23:58:02 +0100 Jan Dankert Refactoring: Namespacing for module 'util'. Mon, 20 May 2019 00:34:19 +0200 Jan Dankert Refactoring: Datenbankverbindung im Dispatcher erstellen. Bisher wurde in der Loginaction die DB-Verbindung aufgebaut, was dort falsch aufgehoben war. Sun, 23 Sep 2018 22:26:00 +0200 Jan Dankert Die IndexAction soll beim Start des UI auch die Action und Id ermitteln. Damit die Id gesetzt werden kann, muss die Id über den Dispatcher in die Action gebracht werden. Dazu muss erst der Request gesetzt werden, bevor die weitere Verarbeitung geschieht, daher geschieht die fachliche Initialisierung der Actions jetzt (wieder) über eine init()-Methode, die vom Dispatcher aufgerufen wird. Thu, 16 Aug 2018 00:36:25 +0200 Jan Dankert Aufgeräumt: Veraltete Session-Funktionen entfernt, da Projekt,Sprache,Model nicht mehr in der Session gehalten werden. Fri, 29 Dec 2017 01:35:50 +0100 Jan Dankert Großes Refactoring: Neues Modul CMS-UI. Dieses enthält sämtliche Logik für die Bedienoberfläche. TODO: Modul CMS-API. Sat, 16 Dec 2017 23:21:31 +0100 Jan Dankert Eigenes Modul für alle Util-Klassen.