Pārlūkot izejas kodu

Changed redirect function

Sergio Brighenti 6 gadi atpakaļ
vecāks
revīzija
201affab45

+ 0 - 10
app/Controllers/Controller.php

@@ -62,14 +62,4 @@ abstract class Controller
 
 		return $totalSize;
 	}
-
-	/**
-	 * @param Response $response
-	 * @param string $path
-	 * @return Response
-	 */
-	function redirectTo(Response $response, string $path): Response
-	{
-		return $response->withRedirect($this->settings['base_url'] . $path);
-	}
 }

+ 2 - 2
app/Controllers/DashboardController.php

@@ -27,7 +27,7 @@ class DashboardController extends Controller
 			removeDirectory('install');
 		}
 
-		return $this->redirectTo($response,'/home');
+		return redirect($response, '/home');
 	}
 
 	/**
@@ -128,6 +128,6 @@ class DashboardController extends Controller
 	public function applyTheme(Request $request, Response $response): Response
 	{
 		file_put_contents('static/bootstrap/css/bootstrap.min.css', file_get_contents($request->getParam('css')));
-		return $this->redirectTo($response,'/system')->withAddedHeader('Cache-Control', 'no-cache, must-revalidate');
+		return redirect($response, '/system')->withAddedHeader('Cache-Control', 'no-cache, must-revalidate');
 	}
 }

+ 5 - 5
app/Controllers/LoginController.php

@@ -19,7 +19,7 @@ class LoginController extends Controller
 	public function show(Request $request, Response $response): Response
 	{
 		if (Session::get('logged', false)) {
-			return $this->redirectTo($response, '/home');
+			return redirect($response, '/home');
 		}
 		return $this->view->render($response, 'auth/login.twig');
 	}
@@ -36,12 +36,12 @@ class LoginController extends Controller
 
 		if (!$result || !password_verify($request->getParam('password'), $result->password)) {
 			Session::alert('Wrong credentials', 'danger');
-			return $this->redirectTo($response, '/login');
+			return redirect($response, '/login');
 		}
 
 		if (!$result->active) {
 			Session::alert('Your account is disabled.', 'danger');
-			return $this->redirectTo($response, '/login');
+			return redirect($response, '/login');
 		}
 
 		Session::set('logged', true);
@@ -57,7 +57,7 @@ class LoginController extends Controller
 			return $response->withRedirect(Session::get('redirectTo'));
 		}
 
-		return $this->redirectTo($response,'/home');
+		return redirect($response,'/home');
 	}
 
 	/**
@@ -70,7 +70,7 @@ class LoginController extends Controller
 		Session::clear();
 		Session::set('logged', false);
 		Session::alert('Goodbye!', 'warning');
-		return $this->redirectTo($response,'/login');
+		return redirect($response,'/login');
 	}
 
 }

+ 14 - 14
app/Controllers/UserController.php

@@ -58,22 +58,22 @@ class UserController extends Controller
 	{
 		if ($request->getParam('email') === null) {
 			Session::alert('The email is required.', 'danger');
-			return $this->redirectTo($response,'/user/create');
+			return redirect($response,'/user/create');
 		}
 
 		if ($request->getParam('username') === null) {
 			Session::alert('The username is required.', 'danger');
-			return $this->redirectTo($response,'/user/create');
+			return redirect($response,'/user/create');
 		}
 
 		if ($request->getParam('password') === null) {
 			Session::alert('The password is required.', 'danger');
-			return $this->redirectTo($response,'/user/create');
+			return redirect($response,'/user/create');
 		}
 
 		if ($this->database->query('SELECT COUNT(*) AS `count` FROM `users` WHERE `username` = ?', $request->getParam('username'))->fetch()->count > 0) {
 			Session::alert('The username already taken.', 'danger');
-			return $this->redirectTo($response,'/user/create');
+			return redirect($response,'/user/create');
 		}
 
 		do {
@@ -95,7 +95,7 @@ class UserController extends Controller
 		Session::alert("User '{$request->getParam('username')}' created!", 'success');
 		$this->logger->info('User ' . Session::get('username') . ' created a new user.', [array_diff($request->getParams(), ['password'])]);
 
-		return $this->redirectTo($response,'/users');
+		return redirect($response,'/users');
 	}
 
 	/**
@@ -136,22 +136,22 @@ class UserController extends Controller
 
 		if ($request->getParam('email') === null) {
 			Session::alert('The email is required.', 'danger');
-			return $this->redirectTo($response,'/user/' . $args['id'] . '/edit');
+			return redirect($response,'/user/' . $args['id'] . '/edit');
 		}
 
 		if ($request->getParam('username') === null) {
 			Session::alert('The username is required.', 'danger');
-			return $this->redirectTo($response,'/user/' . $args['id'] . '/edit');
+			return redirect($response,'/user/' . $args['id'] . '/edit');
 		}
 
 		if ($this->database->query('SELECT COUNT(*) AS `count` FROM `users` WHERE `username` = ? AND `username` <> ?', [$request->getParam('username'), $user->username])->fetch()->count > 0) {
 			Session::alert('The username already taken.', 'danger');
-			return $this->redirectTo($response,'/user/' . $args['id'] . '/edit');
+			return redirect($response,'/user/' . $args['id'] . '/edit');
 		}
 
 		if ($user->id === Session::get('user_id') && $request->getParam('is_admin') === null) {
 			Session::alert('You cannot demote yourself.', 'danger');
-			return $this->redirectTo($response,'/user/' . $args['id'] . '/edit');
+			return redirect($response,'/user/' . $args['id'] . '/edit');
 		}
 
 		if ($request->getParam('password') !== null && !empty($request->getParam('password'))) {
@@ -176,7 +176,7 @@ class UserController extends Controller
 		Session::alert("User '{$request->getParam('username')}' updated!", 'success');
 		$this->logger->info('User ' . Session::get('username') . " updated $user->id.", [$user, array_diff($request->getParams(), ['password'])]);
 
-		return $this->redirectTo($response,'/users');
+		return redirect($response,'/users');
 
 	}
 
@@ -197,7 +197,7 @@ class UserController extends Controller
 
 		if ($user->id === Session::get('user_id')) {
 			Session::alert('You cannot delete yourself.', 'danger');
-			return $this->redirectTo($response,'/users');
+			return redirect($response,'/users');
 		}
 
 		$this->database->query('DELETE FROM `users` WHERE `id` = ?', $user->id);
@@ -205,7 +205,7 @@ class UserController extends Controller
 		Session::alert('User deleted.', 'success');
 		$this->logger->info('User ' . Session::get('username') . " deleted $user->id.");
 
-		return $this->redirectTo($response,'/users');
+		return redirect($response,'/users');
 	}
 
 	/**
@@ -255,7 +255,7 @@ class UserController extends Controller
 
 		if ($request->getParam('email') === null) {
 			Session::alert('The email is required.', 'danger');
-			return $this->redirectTo($response,'/profile');
+			return redirect($response,'/profile');
 		}
 
 		if ($request->getParam('password') !== null && !empty($request->getParam('password'))) {
@@ -274,7 +274,7 @@ class UserController extends Controller
 		Session::alert('Profile updated successfully!', 'success');
 		$this->logger->info('User ' . Session::get('username') . " updated profile of $user->id.");
 
-		return $this->redirectTo($response,'/profile');
+		return redirect($response,'/profile');
 	}
 
 	/**

+ 2 - 2
app/Middleware/AuthMiddleware.php

@@ -27,14 +27,14 @@ class AuthMiddleware
 	{
 		if (!Session::get('logged', false)) {
 			Session::set('redirectTo', (isset($_SERVER['HTTPS']) ? 'https' : 'http') . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
-			return $response->withRedirect($this->container->settings['base_url'] . '/login');
+			return redirect($response, '/login');
 		}
 
 		if (!$this->container->database->query('SELECT `id`, `active` FROM `users` WHERE `id` = ? LIMIT 1', [Session::get('user_id')])->fetch()->active) {
 			Session::alert('Your account is not active anymore.', 'danger');
 			Session::set('logged', false);
 			Session::set('redirectTo', (isset($_SERVER['HTTPS']) ? 'https' : 'http') . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
-			return $response->withRedirect($this->container->settings['base_url'] . '/login');
+			return redirect($response, '/login');
 		}
 
 		return $next($request, $response);

+ 30 - 1
app/helpers.php

@@ -48,4 +48,33 @@ if (!function_exists('cleanDirectory')) {
 			}
 		}
 	}
-}
+}
+
+if (!function_exists('redirect')) {
+	/**
+	 * Set the redirect response
+	 * @param \Slim\Http\Response $response
+	 * @param string $path
+	 * @param null $status
+	 * @return \Slim\Http\Response
+	 */
+	function redirect(\Slim\Http\Response $response, string $path, $status = null)
+	{
+		return $response->withRedirect(urlFor($path), $status);
+	}
+}
+
+if (!function_exists('urlFor')) {
+	/**
+	 * Generate the app url given a path
+	 * @param string $path
+	 * @return string
+	 */
+	function urlFor(string $path)
+	{
+		global $app;
+		$baseUrl = $app->getContainer()->get('settings')['base_url'];
+		return $baseUrl . $path;
+	}
+}
+