|
132 | 132 |
|
133 | 133 |
|
134 | 134 | // required files |
| 135 | + // version. Info about current version and build |
| 136 | + include(DEDALO_CORE_PATH . '/base/version.inc'); |
135 | 137 | // logger. Logger class |
136 | 138 | include(DEDALO_CORE_PATH . '/logger/class.logger.php'); |
137 | 139 | // core_functions. Basic common functions (before session start) |
|
142 | 144 | include(DEDALO_CONFIG_PATH . '/config_db.php'); |
143 | 145 | // dd_tipos. List of main Dédalo resolved tipos |
144 | 146 | include(DEDALO_CORE_PATH . '/base/dd_tipos.php'); |
145 | | - // version. Info about current version and build |
146 | | - include(DEDALO_CORE_PATH . '/base/version.inc'); |
147 | 147 |
|
148 | 148 |
|
149 | 149 |
|
150 | | -// SESSIONS |
| 150 | +// sessions |
151 | 151 | define('DEDALO_SESSIONS_PATH', dirname(DEDALO_ROOT_PATH, 2) . '/sessions'); |
152 | 152 |
|
153 | | - if (session_status()!==PHP_SESSION_ACTIVE) { |
| 153 | + // handler: files | redis | memcached | postgresql | user |
| 154 | + if (!defined('DEDALO_SESSION_HANDLER')) { |
| 155 | + define('DEDALO_SESSION_HANDLER', 'files'); |
| 156 | + } |
154 | 157 |
|
155 | | - // HANDLER |
156 | | - $SESSION_HANDLER = 'files'; // files | memcached | user | postgresql |
157 | | - define('DEDALO_SESSION_HANDLER', $SESSION_HANDLER); |
| 158 | + // save_path: define explicitly if needed (e.g. redis) |
| 159 | + if (!defined('DEDALO_SESSION_SAVE_PATH')) { |
| 160 | + switch (DEDALO_SESSION_HANDLER) { |
| 161 | + case 'redis': |
| 162 | + define('DEDALO_SESSION_SAVE_PATH', 'tcp://127.0.0.1:6379'); |
| 163 | + break; |
| 164 | + case 'memcached': |
| 165 | + define('DEDALO_SESSION_SAVE_PATH', '127.0.0.1:11211'); |
| 166 | + break; |
| 167 | + case 'files': |
| 168 | + default: |
| 169 | + define('DEDALO_SESSION_SAVE_PATH', DEDALO_SESSIONS_PATH); |
| 170 | + break; |
| 171 | + } |
| 172 | + } |
| 173 | + |
| 174 | + if (session_status()!==PHP_SESSION_ACTIVE && !defined('DEDALO_RR_WORKER')) { |
158 | 175 |
|
159 | | - // LIFETIME |
| 176 | + // lifetime |
160 | 177 | // Set max duration of dedalo user session |
161 | 178 | // Use ini directive to set session.gc_maxlifetime (Garbage Collection lifetime) |
162 | 179 | // Use session_cache_expire to set duration of session |
|
165 | 182 | $session_duration_hours = $session_duration_hours ?? 8; |
166 | 183 | $timeout_seconds = intval($session_duration_hours*3600); // in seconds |
167 | 184 |
|
| 185 | + // session name |
| 186 | + $sesion_name = 'dedalo_'.DEDALO_ENTITY; |
| 187 | + |
168 | 188 | // session start |
169 | 189 | $cookie_secure = (DEDALO_PROTOCOL==='https://'); |
170 | 190 | $cookie_samesite = (DEVELOPMENT_SERVER===true) ? 'Lax' : 'Strict'; |
| 191 | + |
171 | 192 | session_start_manager([ |
172 | | - 'save_handler' => 'files', |
| 193 | + 'save_handler' => DEDALO_SESSION_HANDLER, |
173 | 194 | 'timeout_seconds' => $timeout_seconds, |
174 | | - 'save_path' => DEDALO_SESSIONS_PATH, |
| 195 | + 'save_path' => DEDALO_SESSION_SAVE_PATH, |
175 | 196 | // 'additional_save_path' => false, bool optional |
176 | 197 | 'prevent_session_lock' => defined('PREVENT_SESSION_LOCK') ? PREVENT_SESSION_LOCK : false, |
177 | | - 'session_name' => 'dedalo_'.DEDALO_ENTITY, |
| 198 | + 'session_name' => $sesion_name, |
178 | 199 | // cookie params |
179 | 200 | 'cookie_secure' => $cookie_secure, // Only https (true | false) |
180 | 201 | 'cookie_samesite' => $cookie_samesite // (None | Lax | Strict) |
|
0 commit comments