Conversie codeigniter 4
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controllers;
|
||||
|
||||
use CodeIgniter\Controller;
|
||||
use CodeIgniter\HTTP\CLIRequest;
|
||||
use CodeIgniter\HTTP\IncomingRequest;
|
||||
use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use App\Libraries\Beheer\Session\RetrieveUserSession;
|
||||
|
||||
/**
|
||||
* Class BaseController
|
||||
*
|
||||
* BaseController provides a convenient place for loading components
|
||||
* and performing functions that are needed by all your controllers.
|
||||
* Extend this class in any new controllers.
|
||||
*/
|
||||
abstract class BaseController extends Controller
|
||||
{
|
||||
/**
|
||||
* Instance of the main Request object.
|
||||
*
|
||||
* @var CLIRequest|IncomingRequest
|
||||
*/
|
||||
protected $request;
|
||||
|
||||
/**
|
||||
* An array of helpers to be loaded automatically upon
|
||||
* class instantiation.
|
||||
*
|
||||
* @var list<string>
|
||||
*/
|
||||
protected $helpers = ['common'];
|
||||
|
||||
/**
|
||||
* Session instance
|
||||
*/
|
||||
protected $session;
|
||||
|
||||
/**
|
||||
* Current authenticated user
|
||||
*/
|
||||
public $user;
|
||||
|
||||
/**
|
||||
* Authentication status
|
||||
*/
|
||||
public $authenticated = false;
|
||||
|
||||
/**
|
||||
* Application version
|
||||
*/
|
||||
public $version = '1.00.81';
|
||||
|
||||
/**
|
||||
* User Model instance
|
||||
*/
|
||||
protected $userModel;
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||
{
|
||||
// Do Not Edit This Line
|
||||
parent::initController($request, $response, $logger);
|
||||
|
||||
// Preload any models, libraries, etc, here.
|
||||
$this->session = \Config\Services::session();
|
||||
|
||||
// Make version available to all views
|
||||
$renderer = \Config\Services::renderer();
|
||||
$renderer->setVar('version', $this->version);
|
||||
|
||||
// Initialize user session handler
|
||||
$this->handleSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle session and authentication
|
||||
*/
|
||||
protected function handleSession(): void
|
||||
{
|
||||
// Garbage collection for old sessions
|
||||
$this->garbageCiSessions();
|
||||
|
||||
// Set secure site in production
|
||||
$this->setSecureSite();
|
||||
|
||||
// Retrieve user session
|
||||
$retrieveSession = new RetrieveUserSession($this->session);
|
||||
$retrieveSession->handle();
|
||||
|
||||
// Get the authenticated flag and user ID from constants
|
||||
$this->authenticated = defined('AUTHENTICATED') ? AUTHENTICATED : false;
|
||||
|
||||
if ($this->authenticated && defined('USERID') && USERID) {
|
||||
$this->user = \User::find(USERID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Garbage collection for old CI sessions
|
||||
*/
|
||||
protected function garbageCiSessions(): void
|
||||
{
|
||||
$number = random_int(0, 100);
|
||||
|
||||
if ($number !== 17) {
|
||||
return;
|
||||
}
|
||||
|
||||
$db = \Config\Database::connect();
|
||||
$db->query("DELETE FROM ci_sessions WHERE TIMESTAMPDIFF(MINUTE, FROM_UNIXTIME(timestamp), NOW()) > 60");
|
||||
}
|
||||
|
||||
/**
|
||||
* Force HTTPS in production
|
||||
*/
|
||||
protected function setSecureSite(): void
|
||||
{
|
||||
if (($_ENV['ENVIRONMENT'] ?? 'development') !== 'production') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] !== "on") {
|
||||
header("Location: " . ($_ENV['APP_URL'] ?? ''));
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean input value (replaces CI3's clean_input method)
|
||||
*/
|
||||
protected function cleanInput(string $key): string
|
||||
{
|
||||
$value = $this->request->getPost($key) ?? $this->request->getGet($key) ?? '';
|
||||
return str_replace('null', '', $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return JSON response (replaces CI3's json method)
|
||||
*/
|
||||
protected function json($data): ResponseInterface
|
||||
{
|
||||
return $this->response
|
||||
->setContentType('application/json')
|
||||
->setJSON($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if user is authorized (placeholder for subclass implementation)
|
||||
*/
|
||||
public function unAuthorized(): void
|
||||
{
|
||||
// Override in subclasses if needed
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user