aboutsummaryrefslogtreecommitdiffhomepage
path: root/application/front
diff options
context:
space:
mode:
authorArthurHoaro <arthur@hoa.ro>2020-06-13 13:08:01 +0200
committerArthurHoaro <arthur@hoa.ro>2020-07-23 21:19:21 +0200
commit9c75f877935fa6adec951a4d8d32b328aaab314f (patch)
tree1cdd09ddfc00c6cebb92bb2b90381a06fd31246d /application/front
parent818b3193ffabec57501e3bdfa997206e3c0671ef (diff)
downloadShaarli-9c75f877935fa6adec951a4d8d32b328aaab314f.tar.gz
Shaarli-9c75f877935fa6adec951a4d8d32b328aaab314f.tar.zst
Shaarli-9c75f877935fa6adec951a4d8d32b328aaab314f.zip
Use multi-level routes for existing controllers instead of 1 level everywhere
Also prefix most admin routes with /admin/
Diffstat (limited to 'application/front')
-rw-r--r--application/front/ShaarliMiddleware.php6
-rw-r--r--application/front/controller/admin/ConfigureController.php6
-rw-r--r--application/front/controller/admin/LogoutController.php4
-rw-r--r--application/front/controller/admin/ManageTagController.php10
-rw-r--r--application/front/controller/admin/PasswordController.php4
-rw-r--r--application/front/controller/admin/PostBookmarkController.php17
-rw-r--r--application/front/controller/visitor/LoginController.php2
-rw-r--r--application/front/controller/visitor/ShaarliVisitorController.php13
-rw-r--r--application/front/controller/visitor/TagController.php8
9 files changed, 44 insertions, 26 deletions
diff --git a/application/front/ShaarliMiddleware.php b/application/front/ShaarliMiddleware.php
index 47aa61bb..7ad610c7 100644
--- a/application/front/ShaarliMiddleware.php
+++ b/application/front/ShaarliMiddleware.php
@@ -38,9 +38,9 @@ class ShaarliMiddleware
38 */ 38 */
39 public function __invoke(Request $request, Response $response, callable $next) 39 public function __invoke(Request $request, Response $response, callable $next)
40 { 40 {
41 try { 41 $this->container->basePath = rtrim($request->getUri()->getBasePath(), '/');
42 $this->container->basePath = rtrim($request->getUri()->getBasePath(), '/');
43 42
43 try {
44 $response = $next($request, $response); 44 $response = $next($request, $response);
45 } catch (ShaarliFrontException $e) { 45 } catch (ShaarliFrontException $e) {
46 $this->container->pageBuilder->assign('message', $e->getMessage()); 46 $this->container->pageBuilder->assign('message', $e->getMessage());
@@ -54,7 +54,7 @@ class ShaarliMiddleware
54 $response = $response->withStatus($e->getCode()); 54 $response = $response->withStatus($e->getCode());
55 $response = $response->write($this->container->pageBuilder->render('error')); 55 $response = $response->write($this->container->pageBuilder->render('error'));
56 } catch (UnauthorizedException $e) { 56 } catch (UnauthorizedException $e) {
57 return $response->withRedirect($request->getUri()->getBasePath() . '/login'); 57 return $response->withRedirect($this->container->basePath . '/login');
58 } 58 }
59 59
60 return $response; 60 return $response;
diff --git a/application/front/controller/admin/ConfigureController.php b/application/front/controller/admin/ConfigureController.php
index 5a482d8e..44971c43 100644
--- a/application/front/controller/admin/ConfigureController.php
+++ b/application/front/controller/admin/ConfigureController.php
@@ -19,7 +19,7 @@ use Throwable;
19class ConfigureController extends ShaarliAdminController 19class ConfigureController extends ShaarliAdminController
20{ 20{
21 /** 21 /**
22 * GET /configure - Displays the configuration page 22 * GET /admin/configure - Displays the configuration page
23 */ 23 */
24 public function index(Request $request, Response $response): Response 24 public function index(Request $request, Response $response): Response
25 { 25 {
@@ -56,7 +56,7 @@ class ConfigureController extends ShaarliAdminController
56 } 56 }
57 57
58 /** 58 /**
59 * POST /configure - Update Shaarli's configuration 59 * POST /admin/configure - Update Shaarli's configuration
60 */ 60 */
61 public function save(Request $request, Response $response): Response 61 public function save(Request $request, Response $response): Response
62 { 62 {
@@ -115,6 +115,6 @@ class ConfigureController extends ShaarliAdminController
115 115
116 $this->saveSuccessMessage(t('Configuration was saved.')); 116 $this->saveSuccessMessage(t('Configuration was saved.'));
117 117
118 return $response->withRedirect('./configure'); 118 return $this->redirect($response, '/admin/configure');
119 } 119 }
120} 120}
diff --git a/application/front/controller/admin/LogoutController.php b/application/front/controller/admin/LogoutController.php
index 41e81984..c5984814 100644
--- a/application/front/controller/admin/LogoutController.php
+++ b/application/front/controller/admin/LogoutController.php
@@ -22,8 +22,8 @@ class LogoutController extends ShaarliAdminController
22 $this->container->sessionManager->logout(); 22 $this->container->sessionManager->logout();
23 23
24 // TODO: switch to a simple Cookie manager allowing to check the session, and create mocks. 24 // TODO: switch to a simple Cookie manager allowing to check the session, and create mocks.
25 setcookie(LoginManager::$STAY_SIGNED_IN_COOKIE, 'false', 0, $this->container->webPath); 25 setcookie(LoginManager::$STAY_SIGNED_IN_COOKIE, 'false', 0, $this->container->basePath . '/');
26 26
27 return $response->withRedirect('./'); 27 return $this->redirect($response, '/');
28 } 28 }
29} 29}
diff --git a/application/front/controller/admin/ManageTagController.php b/application/front/controller/admin/ManageTagController.php
index e015e613..7dab288a 100644
--- a/application/front/controller/admin/ManageTagController.php
+++ b/application/front/controller/admin/ManageTagController.php
@@ -16,7 +16,7 @@ use Slim\Http\Response;
16class ManageTagController extends ShaarliAdminController 16class ManageTagController extends ShaarliAdminController
17{ 17{
18 /** 18 /**
19 * GET /manage-tags - Displays the manage tags page 19 * GET /admin/tags - Displays the manage tags page
20 */ 20 */
21 public function index(Request $request, Response $response): Response 21 public function index(Request $request, Response $response): Response
22 { 22 {
@@ -32,7 +32,7 @@ class ManageTagController extends ShaarliAdminController
32 } 32 }
33 33
34 /** 34 /**
35 * POST /manage-tags - Update or delete provided tag 35 * POST /admin/tags - Update or delete provided tag
36 */ 36 */
37 public function save(Request $request, Response $response): Response 37 public function save(Request $request, Response $response): Response
38 { 38 {
@@ -46,7 +46,7 @@ class ManageTagController extends ShaarliAdminController
46 if (0 === strlen($fromTag) || false === $isDelete && 0 === strlen($toTag)) { 46 if (0 === strlen($fromTag) || false === $isDelete && 0 === strlen($toTag)) {
47 $this->saveWarningMessage(t('Invalid tags provided.')); 47 $this->saveWarningMessage(t('Invalid tags provided.'));
48 48
49 return $response->withRedirect('./manage-tags'); 49 return $this->redirect($response, '/admin/tags');
50 } 50 }
51 51
52 // TODO: move this to bookmark service 52 // TODO: move this to bookmark service
@@ -80,8 +80,8 @@ class ManageTagController extends ShaarliAdminController
80 80
81 $this->saveSuccessMessage($alert); 81 $this->saveSuccessMessage($alert);
82 82
83 $redirect = true === $isDelete ? './manage-tags' : './?searchtags='. urlencode($toTag); 83 $redirect = true === $isDelete ? '/admin/tags' : '/?searchtags='. urlencode($toTag);
84 84
85 return $response->withRedirect($redirect); 85 return $this->redirect($response, $redirect);
86 } 86 }
87} 87}
diff --git a/application/front/controller/admin/PasswordController.php b/application/front/controller/admin/PasswordController.php
index 6e8f0bcb..bcce01a6 100644
--- a/application/front/controller/admin/PasswordController.php
+++ b/application/front/controller/admin/PasswordController.php
@@ -29,7 +29,7 @@ class PasswordController extends ShaarliAdminController
29 } 29 }
30 30
31 /** 31 /**
32 * GET /password - Displays the change password template 32 * GET /admin/password - Displays the change password template
33 */ 33 */
34 public function index(Request $request, Response $response): Response 34 public function index(Request $request, Response $response): Response
35 { 35 {
@@ -37,7 +37,7 @@ class PasswordController extends ShaarliAdminController
37 } 37 }
38 38
39 /** 39 /**
40 * POST /password - Change admin password - existing and new passwords need to be provided. 40 * POST /admin/password - Change admin password - existing and new passwords need to be provided.
41 */ 41 */
42 public function change(Request $request, Response $response): Response 42 public function change(Request $request, Response $response): Response
43 { 43 {
diff --git a/application/front/controller/admin/PostBookmarkController.php b/application/front/controller/admin/PostBookmarkController.php
index dbe570e2..f3ee5dea 100644
--- a/application/front/controller/admin/PostBookmarkController.php
+++ b/application/front/controller/admin/PostBookmarkController.php
@@ -19,7 +19,7 @@ use Slim\Http\Response;
19class PostBookmarkController extends ShaarliAdminController 19class PostBookmarkController extends ShaarliAdminController
20{ 20{
21 /** 21 /**
22 * GET /add-shaare - Displays the form used to create a new bookmark from an URL 22 * GET /admin/add-shaare - Displays the form used to create a new bookmark from an URL
23 */ 23 */
24 public function addShaare(Request $request, Response $response): Response 24 public function addShaare(Request $request, Response $response): Response
25 { 25 {
@@ -32,7 +32,7 @@ class PostBookmarkController extends ShaarliAdminController
32 } 32 }
33 33
34 /** 34 /**
35 * GET /shaare - Displays the bookmark form for creation. 35 * GET /admin/shaare - Displays the bookmark form for creation.
36 * Note that if the URL is found in existing bookmarks, then it will be in edit mode. 36 * Note that if the URL is found in existing bookmarks, then it will be in edit mode.
37 */ 37 */
38 public function displayCreateForm(Request $request, Response $response): Response 38 public function displayCreateForm(Request $request, Response $response): Response
@@ -93,7 +93,7 @@ class PostBookmarkController extends ShaarliAdminController
93 } 93 }
94 94
95 /** 95 /**
96 * GET /shaare-{id} - Displays the bookmark form in edition mode. 96 * GET /admin/shaare/{id} - Displays the bookmark form in edition mode.
97 */ 97 */
98 public function displayEditForm(Request $request, Response $response, array $args): Response 98 public function displayEditForm(Request $request, Response $response, array $args): Response
99 { 99 {
@@ -106,7 +106,7 @@ class PostBookmarkController extends ShaarliAdminController
106 } catch (BookmarkNotFoundException $e) { 106 } catch (BookmarkNotFoundException $e) {
107 $this->saveErrorMessage(t('Bookmark not found')); 107 $this->saveErrorMessage(t('Bookmark not found'));
108 108
109 return $response->withRedirect('./'); 109 return $this->redirect($response, '/');
110 } 110 }
111 111
112 $formatter = $this->container->formatterFactory->getFormatter('raw'); 112 $formatter = $this->container->formatterFactory->getFormatter('raw');
@@ -116,7 +116,7 @@ class PostBookmarkController extends ShaarliAdminController
116 } 116 }
117 117
118 /** 118 /**
119 * POST /shaare 119 * POST /admin/shaare
120 */ 120 */
121 public function save(Request $request, Response $response): Response 121 public function save(Request $request, Response $response): Response
122 { 122 {
@@ -170,11 +170,14 @@ class PostBookmarkController extends ShaarliAdminController
170 ); 170 );
171 } 171 }
172 172
173 /**
174 * GET /admin/shaare/delete
175 */
173 public function deleteBookmark(Request $request, Response $response): Response 176 public function deleteBookmark(Request $request, Response $response): Response
174 { 177 {
175 $this->checkToken($request); 178 $this->checkToken($request);
176 179
177 $ids = escape(trim($request->getParam('lf_linkdate'))); 180 $ids = escape(trim($request->getParam('id')));
178 if (strpos($ids, ' ') !== false) { 181 if (strpos($ids, ' ') !== false) {
179 // multiple, space-separated ids provided 182 // multiple, space-separated ids provided
180 $ids = array_values(array_filter(preg_split('/\s+/', $ids), 'strlen')); 183 $ids = array_values(array_filter(preg_split('/\s+/', $ids), 'strlen'));
@@ -207,7 +210,7 @@ class PostBookmarkController extends ShaarliAdminController
207 } 210 }
208 211
209 // Don't redirect to where we were previously because the datastore has changed. 212 // Don't redirect to where we were previously because the datastore has changed.
210 return $response->withRedirect('./'); 213 return $this->redirect($response, '/');
211 } 214 }
212 215
213 protected function displayForm(array $link, bool $isNew, Request $request, Response $response): Response 216 protected function displayForm(array $link, bool $isNew, Request $request, Response $response): Response
diff --git a/application/front/controller/visitor/LoginController.php b/application/front/controller/visitor/LoginController.php
index 4de2f55d..0db1f463 100644
--- a/application/front/controller/visitor/LoginController.php
+++ b/application/front/controller/visitor/LoginController.php
@@ -23,7 +23,7 @@ class LoginController extends ShaarliVisitorController
23 if ($this->container->loginManager->isLoggedIn() 23 if ($this->container->loginManager->isLoggedIn()
24 || $this->container->conf->get('security.open_shaarli', false) 24 || $this->container->conf->get('security.open_shaarli', false)
25 ) { 25 ) {
26 return $response->withRedirect('./'); 26 return $this->redirect($response, '/');
27 } 27 }
28 28
29 $userCanLogin = $this->container->loginManager->canLogin($request->getServerParams()); 29 $userCanLogin = $this->container->loginManager->canLogin($request->getServerParams());
diff --git a/application/front/controller/visitor/ShaarliVisitorController.php b/application/front/controller/visitor/ShaarliVisitorController.php
index b90b1e8f..b494a8e6 100644
--- a/application/front/controller/visitor/ShaarliVisitorController.php
+++ b/application/front/controller/visitor/ShaarliVisitorController.php
@@ -105,6 +105,19 @@ abstract class ShaarliVisitorController
105 } 105 }
106 106
107 /** 107 /**
108 * Simple helper which prepend the base path to redirect path.
109 *
110 * @param Response $response
111 * @param string $path Absolute path, e.g.: `/`, or `/admin/shaare/123` regardless of install directory
112 *
113 * @return Response updated
114 */
115 protected function redirect(Response $response, string $path): Response
116 {
117 return $response->withRedirect($this->container->basePath . $path);
118 }
119
120 /**
108 * Generates a redirection to the previous page, based on the HTTP_REFERER. 121 * Generates a redirection to the previous page, based on the HTTP_REFERER.
109 * It fails back to the home page. 122 * It fails back to the home page.
110 * 123 *
diff --git a/application/front/controller/visitor/TagController.php b/application/front/controller/visitor/TagController.php
index a0bc1d1b..c176f43f 100644
--- a/application/front/controller/visitor/TagController.php
+++ b/application/front/controller/visitor/TagController.php
@@ -11,6 +11,8 @@ use Slim\Http\Response;
11 * Class TagController 11 * Class TagController
12 * 12 *
13 * Slim controller handle tags. 13 * Slim controller handle tags.
14 *
15 * TODO: check redirections with new helper
14 */ 16 */
15class TagController extends ShaarliVisitorController 17class TagController extends ShaarliVisitorController
16{ 18{
@@ -27,10 +29,10 @@ class TagController extends ShaarliVisitorController
27 // In case browser does not send HTTP_REFERER, we search a single tag 29 // In case browser does not send HTTP_REFERER, we search a single tag
28 if (null === $referer) { 30 if (null === $referer) {
29 if (null !== $newTag) { 31 if (null !== $newTag) {
30 return $response->withRedirect('./?searchtags='. urlencode($newTag)); 32 return $this->redirect($response, '/?searchtags='. urlencode($newTag));
31 } 33 }
32 34
33 return $response->withRedirect('./'); 35 return $this->redirect($response, '/');
34 } 36 }
35 37
36 $currentUrl = parse_url($referer); 38 $currentUrl = parse_url($referer);
@@ -81,7 +83,7 @@ class TagController extends ShaarliVisitorController
81 83
82 // If the referrer is not provided, we can update the search, so we failback on the bookmark list 84 // If the referrer is not provided, we can update the search, so we failback on the bookmark list
83 if (empty($referer)) { 85 if (empty($referer)) {
84 return $response->withRedirect('./'); 86 return $this->redirect($response, '/');
85 } 87 }
86 88
87 $tagToRemove = $args['tag'] ?? null; 89 $tagToRemove = $args['tag'] ?? null;