示例#1
0
 Session\open(BASE_URL_DIRECTORY, SESSION_SAVE_PATH, 0);
 // Select the requested database either from post param database or from the
 // session variable. If it fails, logout to destroy session and
 // 'remember me' cookie
 if (!is_null(Request\value('database')) && !Model\Database\select(Request\value('database'))) {
     Model\User\logout();
     Response\redirect('?action=login');
 } elseif (!empty($_SESSION['database'])) {
     if (!Model\Database\select($_SESSION['database'])) {
         Model\User\logout();
         Response\redirect('?action=login');
     }
 }
 // These actions are considered to be safe even for unauthenticated users
 $safe_actions = array('login', 'bookmark-feed', 'select-db', 'logout', 'notfound');
 if (!Model\User\is_loggedin() && !in_array($action, $safe_actions)) {
     if (!Model\RememberMe\authenticate()) {
         Model\User\logout();
         Response\redirect('?action=login');
     }
 } elseif (Model\RememberMe\has_cookie()) {
     Model\RememberMe\refresh();
 }
 // Load translations
 $language = Model\Config\get('language') ?: 'en_US';
 Translator\load($language);
 // Set timezone
 date_default_timezone_set(Model\Config\get('timezone') ?: 'UTC');
 // HTTP secure headers
 Response\csp(array('media-src' => '*', 'img-src' => '*', 'frame-src' => Model\Config\get_iframe_whitelist(), 'referrer' => 'no-referrer'));
 Response\xframe();
示例#2
0
<?php

use PicoFarad\Router;
use PicoFarad\Response;
use PicoFarad\Request;
use PicoFarad\Template;
// Logout and destroy session
Router\get_action('logout', function () {
    Model\User\logout();
    Response\redirect('?action=login');
});
// Display form login
Router\get_action('login', function () {
    if (Model\User\is_loggedin()) {
        Response\redirect('?action=unread');
    }
    Response\html(Template\load('login', array('errors' => array(), 'values' => array('csrf' => Model\Config\generate_csrf()), 'databases' => Model\Database\get_list(), 'current_database' => Model\Database\select())));
});
// Check credentials and redirect to unread items
Router\post_action('login', function () {
    $values = Request\values();
    Model\Config\check_csrf_values($values);
    list($valid, $errors) = Model\User\validate_login($values);
    if ($valid) {
        Response\redirect('?action=unread');
    }
    Response\html(Template\load('login', array('errors' => $errors, 'values' => $values + array('csrf' => Model\Config\generate_csrf()), 'databases' => Model\Database\get_list(), 'current_database' => Model\Database\select())));
});