Added redirects and middleware classes for login
This commit is contained in:
		@@ -51,4 +51,9 @@ class Authorization
 | 
			
		||||
    {
 | 
			
		||||
        return $this->getUserID() !== null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function logout()
 | 
			
		||||
    {
 | 
			
		||||
        unset($_SESSION['userid']);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										34
									
								
								src/Application/Auth/Middleware.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/Application/Auth/Middleware.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Informatica Eindproject D4p
 | 
			
		||||
 *  6in3, Stedelijk Gymnasium Nijmegen
 | 
			
		||||
 *  Docent: Hans de Wolf
 | 
			
		||||
 *
 | 
			
		||||
 *  ==================
 | 
			
		||||
 *
 | 
			
		||||
 *  Daniel Boutros,
 | 
			
		||||
 *  Christiaan Goossens,
 | 
			
		||||
 *  Jelmer Hinssen
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
namespace Inforbank\Application\Auth;
 | 
			
		||||
 | 
			
		||||
use Inforbank\Application;
 | 
			
		||||
use Inforbank\Application\Helper\Redirect;
 | 
			
		||||
 | 
			
		||||
class Middleware
 | 
			
		||||
{
 | 
			
		||||
    public function __invoke($request, $response, $next)
 | 
			
		||||
    {
 | 
			
		||||
        $container = Application::getContainer();
 | 
			
		||||
 | 
			
		||||
        // Check for an existing session
 | 
			
		||||
        if ($container->auth->isUserAuthenticated()) {
 | 
			
		||||
            return $next($request, $response);
 | 
			
		||||
        } else {
 | 
			
		||||
            // Redirect to the login page
 | 
			
		||||
            return Redirect::create($response, '/login');
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										35
									
								
								src/Application/Helper/Redirect.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/Application/Helper/Redirect.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Informatica Eindproject D4p
 | 
			
		||||
 *  6in3, Stedelijk Gymnasium Nijmegen
 | 
			
		||||
 *  Docent: Hans de Wolf
 | 
			
		||||
 *
 | 
			
		||||
 *  ==================
 | 
			
		||||
 *
 | 
			
		||||
 *  Daniel Boutros,
 | 
			
		||||
 *  Christiaan Goossens,
 | 
			
		||||
 *  Jelmer Hinssen
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
namespace Inforbank\Application\Helper;
 | 
			
		||||
 | 
			
		||||
class Redirect
 | 
			
		||||
{
 | 
			
		||||
    public static function create($response, $path)
 | 
			
		||||
    {
 | 
			
		||||
        $response = $response->withStatus(302);
 | 
			
		||||
        $response = $response->withHeader('Location', Redirect::getBasepath() . $path);
 | 
			
		||||
        return $response;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static function getBasepath()
 | 
			
		||||
    {
 | 
			
		||||
        if (isset($_SERVER['HTTPS'])) {
 | 
			
		||||
            $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http";
 | 
			
		||||
        } else {
 | 
			
		||||
            $protocol = 'http';
 | 
			
		||||
        }
 | 
			
		||||
        return $protocol . "://" . $_SERVER['HTTP_HOST'];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -15,6 +15,7 @@
 | 
			
		||||
namespace Inforbank\Application;
 | 
			
		||||
 | 
			
		||||
use \Slim\App;
 | 
			
		||||
use Inforbank\Application\Helper\Redirect;
 | 
			
		||||
 | 
			
		||||
class Login
 | 
			
		||||
{
 | 
			
		||||
@@ -24,6 +25,7 @@ class Login
 | 
			
		||||
            // Render index view
 | 
			
		||||
            return $this->renderer->render($response, 'login.phtml', $args);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        $app->post('/login', function ($request, $response, $args) {
 | 
			
		||||
            // Render index view
 | 
			
		||||
            $post = $request->getParsedBody();
 | 
			
		||||
@@ -32,15 +34,18 @@ class Login
 | 
			
		||||
                $resp = $this->auth->login($post['rekeningnr'], $post['pascode']);
 | 
			
		||||
 | 
			
		||||
                if ($resp) {
 | 
			
		||||
                    echo "HIER EEN REDIRECT GRAAG";
 | 
			
		||||
                    return Redirect::create($response, '/');
 | 
			
		||||
                } else {
 | 
			
		||||
                    echo "ERR PASS!";
 | 
			
		||||
                    return Redirect::create($response, '/login?error');
 | 
			
		||||
                }
 | 
			
		||||
            } catch (\Exception $e) {
 | 
			
		||||
                echo "ERR REK!";
 | 
			
		||||
                return Redirect::create($response, '/login?error');
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
            die();
 | 
			
		||||
        $app->get('/logout', function ($request, $response, $args) {
 | 
			
		||||
            $this->auth->logout();
 | 
			
		||||
            return Redirect::create($response, '/login');
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -32,9 +32,9 @@ class Main
 | 
			
		||||
    public function __construct(App $app)
 | 
			
		||||
    {
 | 
			
		||||
        // Add the default view routes
 | 
			
		||||
        $app->get('/[{name}]', function ($request, $response, $args) {
 | 
			
		||||
        $app->get('/', function ($request, $response, $args) {
 | 
			
		||||
            // Render index view
 | 
			
		||||
            return $this->renderer->render($response, 'index.phtml', $args);
 | 
			
		||||
        });
 | 
			
		||||
        })->add(new Auth\Middleware());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user