Skip to content

Instantly share code, notes, and snippets.

@simensen
Forked from mbakker96/Cookie.php
Last active December 4, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simensen/b316e8facd40114391b8 to your computer and use it in GitHub Desktop.
Save simensen/b316e8facd40114391b8 to your computer and use it in GitHub Desktop.
Remember token into cookie with middlewar
<?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');
<?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');
<?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');
<?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