3 declare(strict_types
=1);
5 namespace Shaarli\Front\Controller\Admin
;
7 use Shaarli\Front\Controller\Visitor\ShaarliVisitorController
;
8 use Shaarli\Front\Exception\WrongTokenException
;
9 use Shaarli\Security\SessionManager
;
10 use Slim\Http\Request
;
13 * Class ShaarliAdminController
15 * All admin controllers (for logged in users) MUST extend this abstract class.
16 * It makes sure that the user is properly logged in, and otherwise throw an exception
17 * which will redirect to the login page.
19 * @package Shaarli\Front\Controller\Admin
21 abstract class ShaarliAdminController
extends ShaarliVisitorController
24 * Any persistent action to the config or data store must check the XSRF token validity.
26 protected function checkToken(Request
$request): bool
28 if (!$this->container
->sessionManager
->checkToken($request->getParam('token'))) {
29 throw new WrongTokenException();
36 * Save a SUCCESS message in user session, which will be displayed on any template page.
38 protected function saveSuccessMessage(string $message): void
40 $this->saveMessage(SessionManager
::KEY_SUCCESS_MESSAGES
, $message);
44 * Save a WARNING message in user session, which will be displayed on any template page.
46 protected function saveWarningMessage(string $message): void
48 $this->saveMessage(SessionManager
::KEY_WARNING_MESSAGES
, $message);
52 * Save an ERROR message in user session, which will be displayed on any template page.
54 protected function saveErrorMessage(string $message): void
56 $this->saveMessage(SessionManager
::KEY_ERROR_MESSAGES
, $message);
60 * Use the sessionManager to save the provided message using the proper type.
62 * @param string $type successed/warnings/errors
64 protected function saveMessage(string $type, string $message): void
66 $messages = $this->container
->sessionManager
->getSessionParameter($type) ?? [];
67 $messages[] = $message;
69 $this->container
->sessionManager
->setSessionParameter($type, $messages);