davec49/silex2-simpleuser

为 Silex 2.0 提供的一个简单的数据库用户提供程序,与 jasongrimes/SimpleUser 相关的服务和控制台分叉。

v2.2 2018-01-07 02:06 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:52:24 UTC


README

这是 Jason Grimes Simple User 的一个版本,已修改以与 Silex 2.0 一起使用,而不是 SIlex 1.3。源代码和单元测试都已修改,单元测试运行成功。

Silex 的简单用户提供程序

构建状态 总下载量 最新稳定版本 最新不稳定版本

Silex 安全服务的简单、可扩展、数据库支持的用户提供程序。

SimpleUser 是在 Silex PHP 微框架中设置用户帐户(身份验证、授权和用户管理)的一种简单方法。它为 Silex 提供了即插即用的服务,实现了安全组件缺失的用户管理部分。它包括基本用户模型、数据库支持的用户管理器、用户管理的控制器和视图,以及各种支持功能。

示例

在线演示

演示源代码

升级

如果你是从 1.x 升级,你需要更新数据库以适应 2.0 版本。提供了工具来使这种数据库迁移相对轻松。有关详细信息,请参阅 sql/MIGRATION.md。

快速开始示例配置

此配置应能快速运行。有关更多信息,请参阅以下内容。

使用 composer 安装。此命令将自动安装最新稳定版本

对于 Silex 1.3

composer require jasongrimes/silex-simpleuser

对于 Silex 2.0

composer require davec49/silex2-simpleuser

设置你的 Silex 应用程序,如下所示

<?php

use Silex\Application;
use Silex\Provider;

//
// Application setup
//

$app = new Application();
$app->register(new Provider\DoctrineServiceProvider());
$app->register(new Provider\SecurityServiceProvider());
$app->register(new Provider\RememberMeServiceProvider());
$app->register(new Provider\SessionServiceProvider());
$app->register(new Provider\ServiceControllerServiceProvider());
$app->register(new Provider\UrlGeneratorServiceProvider());
$app->register(new Provider\TwigServiceProvider());
$app->register(new Provider\SwiftmailerServiceProvider());

// Register the SimpleUser service provider.
$simpleUserProvider = new SimpleUser\UserServiceProvider();
$app->register($simpleUserProvider);

// ...

//
// Controllers
//

// Mount the user controller routes:
$app->mount('/user', $simpleUserProvider);

/*
// Other routes and controllers...
$app->get('/', function () use ($app) {
    return $app['twig']->render('index.twig', array());
});
*/

// ...

//
// Configuration
//

// SimpleUser options. See config reference below for details.
$app['user.options'] = array();

// Security config. See http://silex.sensiolabs.org/doc/providers/security.html for details.
$app['security.firewalls'] = array(
    /* // Ensure that the login page is accessible to all, if you set anonymous => false below.
    'login' => array(
        'pattern' => '^/user/login$',
    ), */
    'secured_area' => array(
        'pattern' => '^.*$',
        'anonymous' => true,
        'remember_me' => array(),
        'form' => array(
            'login_path' => '/user/login',
            'check_path' => '/user/login_check',
        ),
        'logout' => array(
            'logout_path' => '/user/logout',
        ),
        'users' => function() use $app { return $app['user.manager']; }),
    ),
);

// Mailer config. See http://silex.sensiolabs.org/doc/providers/swiftmailer.html
$app['swiftmailer.options'] = array();

// Database config. See http://silex.sensiolabs.org/doc/providers/doctrine.html
$app['db.options'] = array(
    'driver'   => 'pdo_mysql',
    'host' => 'localhost',
    'dbname' => 'mydbname',
    'user' => 'mydbuser',
    'password' => 'mydbpassword',
);

return $app;

创建用户数据库

mysql -uUSER -pPASSWORD MYDBNAME < vendor/jasongrimes/silex-simpleuser/sql/mysql.sql

注意:如果你是从 SimpleUser 1.x 升级,请参阅 sql/MIGRATION.md 中的说明,以迁移数据库而不会丢失现有数据。

现在,你应该可以在 /user/register URL 创建帐户。通过直接在数据库中编辑记录并将 users.roles 列设置为 ROLE_USER、ROLE_ADMIN 来将新帐户设置为管理员。(在有一个管理员帐户后,它可以通过网页界面将管理员角色授予其他人。)

配置选项

所有这些选项都是可选的。SimpleUser 可以完全不进行任何配置即可运行,或者您可以自定义以下选项之一或多个。下面显示了默认值。

$app['user.options'] = array(

    // Specify custom view templates here.
    'templates' => array(
        'layout' => '@user/layout.twig',
        'register' => '@user/register.twig',
        'register-confirmation-sent' => '@user/register-confirmation-sent.twig',
        'login' => '@user/login.twig',
        'login-confirmation-needed' => '@user/login-confirmation-needed.twig',
        'forgot-password' => '@user/forgot-password.twig',
        'reset-password' => '@user/reset-password.twig',
        'view' => '@user/view.twig',
        'edit' => '@user/edit.twig',
        'list' => '@user/list.twig',
    ),

    // Configure the user mailer for sending password reset and email confirmation messages.
    'mailer' => array(
        'enabled' => true, // When false, email notifications are not sent (they're silently discarded).
        'fromEmail' => array(
            'address' => 'do-not-reply@' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : gethostname()),
            'name' => null,
        ),
    ),

    'emailConfirmation' => array(
        'required' => false, // Whether to require email confirmation before enabling new accounts.
        'template' => '@user/email/confirm-email.twig',
    ),

    'passwordReset' => array(
        'template' => '@user/email/reset-password.twig',
        'tokenTTL' => 86400, // How many seconds the reset token is valid for. Default: 1 day.
    ),

    // Set this to use a custom User class.
    'userClass' => 'SimpleUser\User',

    // Whether to require that users have a username (default: false).
    // By default, users sign in with their email address instead.
    'isUsernameRequired' => false,

    // A list of custom fields to support in the edit controller.
    'editCustomFields' => array(),

    // Override table names, if necessary.
    'userTableName' => 'users',
    'userCustomFieldsTableName' => 'user_custom_fields',

    //Override Column names, if necessary
    'userColumns' = array(
        'id' => 'id',
        'email' => 'email',
        'password' => 'password',
        'salt' => 'salt',
        'roles' => 'roles',
        'name' => 'name',
        'time_created' => 'time_created',
        'username' => 'username',
        'isEnabled' => 'isEnabled',
        'confirmationToken' => 'confirmationToken',
        'timePasswordResetRequested' => 'timePasswordResetRequested',
        //Custom Fields
        'user_id' => 'user_id',
        'attribute' => 'attribute',
        'value' => 'value',
    ),
);