-
-
Save simensen/b316e8facd40114391b8 to your computer and use it in GitHub Desktop.
Remember token into cookie with middlewar
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$app->get('/', function ($request, $response, $args) use ($app) { | |
$activeId = $_SESSION[$this->config->get('auth.session')]; | |
$activeUser = $this->user->where('id', $activeId)->first(); | |
$cookie = $this->FigRequestCookies->get($request, $this->config->get('auth.remember')); | |
echo '<pre>'; | |
print_r($cookie); | |
echo '</pre>'; | |
return $this->view->render($response, 'home.php', [ | |
'activeUser' => $activeUser | |
]); | |
})->setName('home')->add('checkUser:run')->add('Cookie:run'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use Carbon\Carbon, | |
Dflydev\FigCookies\Cookie, | |
Dflydev\FigCookies\SetCookie; | |
$app->get('/login', function ($request, $response, $args) use ($log) { | |
return $this->view->render($response, 'auth/login.php'); | |
})->setName('user.login'); | |
$app->post('/login', function ($request, $response, $args) use ($log) { | |
$email = $request->getParsedBody()['email']; | |
$password = $request->getParsedBody()['password']; | |
$remember = $request->getParsedBody()['remember']; | |
// $log->addInfo($remember); | |
$user = $this->user | |
->where('email', $email) | |
->first(); | |
if ($user && $this->hash->passwordCheck($password, $user->password) && $user->active) { | |
$_SESSION[$this->config->get('auth.session')] = $user->id; | |
if ($remember === 'on') { | |
$rememberIdentifier = $this->randomlib->generateString(128); | |
$rememberToken = $this->randomlib->generateString(128); | |
$log->addInfo($rememberIdentifier); | |
$log->addInfo($rememberToken); | |
$user->updateRememberCredentials( | |
$rememberIdentifier, $this->hash->hash($rememberToken) | |
); | |
$modify = function (SetCookie $setCookie) use ($rememberIdentifier, $rememberToken) { | |
return $setCookie | |
->withValue("{$rememberIdentifier}___{$rememberToken}") | |
// ->withExpires() // do whatever to get one week into the future | |
; | |
} | |
$response = FigResponseCookies::modify($response, 'auth.remember', $modify); | |
} | |
return $response->withRedirect($this->router->pathFor('home')); | |
} elseif (!$user->active) { | |
$this->flash->addMessage('global', 'OOPS PLEASE DO NOT PANIC'); | |
$this->flash | |
->addMessage('global', 'This account is not active yet. Please confirm your account by clicking on the confirm link in your registration email or contact the system admin.'); | |
return $response | |
->withStatus(403) | |
->withHeader('Location', $this->router->pathFor('user.login')); | |
} else { | |
$this->flash->addMessage('global', 'YOU SHALL NOT PASS'); | |
$this->flash->addMessage('global', 'Wrong Username or Password'); | |
return $response->withStatus(401)->withHeader('Location', $this->router->pathFor('user.login')); | |
} | |
})->setName('user.login.post')->add('Cookie:run'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$app->get('/uitloggen', function ($req, $res, $args) use ($app) { | |
unset($_SESSION[$this->config->get('auth.session')]); | |
if ($app->getCookie($this->config->get('auth.remember'))) { | |
$app->auth->removeRememberCredentials(); | |
$request = FigRequestCookies::remove($request, $this->config->get('auth.remember')); | |
$response = FigResponseCookies::remove($response, $this->config->get('auth.remember')); | |
} | |
return $res->withRedirect($this->router->pathFor('user.login')); | |
})->setName('user.uitloggen')->add('Cookie:run'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use Slim\App, | |
Slim\Container, | |
Slim\Views\Twig, | |
Slim\Views\TwigExtension, | |
Slim\Flash\Messages, | |
Marbakkerdev\User\User, | |
Marbakkerdev\hash\Hash, | |
RandomLib\Factory as RandomLib, | |
Dflydev\FigCookies\FigRequestCookies, | |
Dflydev\FigCookies\FigResponseCookies, | |
Noodlehaus\Config; | |
session_cache_limiter(false); | |
session_start(); | |
ini_set('display_erros', 'on'); | |
define('INC_ROOT', dirname(__DIR__)); | |
require INC_ROOT.'/vendor/autoload.php'; | |
function ($request, $response, $next) { | |
$response->getBody()->write('BEFORE'); | |
$response = $next($request, $response); | |
$response->getBody()->write('AFTER'); | |
return $response; | |
}; | |
$whoops = new Whoops\Run(); | |
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler); | |
$whoops->register(); | |
use Monolog\Logger; | |
use Monolog\Handler\BrowserConsoleHandler; | |
$log = new Logger('name'); | |
$log->pushHandler(new BrowserConsoleHandler); | |
$container = new Container; | |
$app = new App($container); | |
$app->add(new \Zeuxisoo\Whoops\Provider\Slim\WhoopsMiddleware); | |
$container['view'] = function ($c) { | |
$view = new Twig(INC_ROOT.'/app/views'); | |
$view->addExtension(new TwigExtension( | |
$c['router'], $c['request']->getUri() | |
)); | |
$view->getEnvironment()->addGlobal('flash', $c['flash']); | |
return $view; | |
}; | |
$container['whoops'] = $app->extend('whoops', function ($whoops) { | |
$whoops->pushHandler(new DeleteWholeProjectHandler()); | |
return $whoops; | |
}); | |
$container['config'] = function($c) { | |
return new Config(INC_ROOT."/app/config/".file_get_contents(INC_ROOT.'/mode.php').'.php'); | |
}; | |
$container['user'] = function ($c) { | |
return new User; | |
}; | |
$container['randomlib'] = function ($c) { | |
$factory = new RandomLib; | |
return $factory->getMediumStrengthGenerator(); | |
}; | |
$container['flash'] = function ($c) { | |
return new Messages(); | |
}; | |
$container['hash'] = function ($c) use ($app) { | |
return new Hash($c['config']); | |
}; | |
$container['Cookie'] = function ($c) { | |
return new Marbakkerdev\Middleware\Cookie($c); | |
}; | |
$container['FigRequestCookies'] = function ($c) { | |
return new FigRequestCookies(); | |
}; | |
$container['FigResponseCookies'] = function ($c) { | |
return new FigResponseCookies(); | |
}; | |
require 'database.php'; | |
require 'routes.php'; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment