jasongrimes / silex-simpleuser
为Silex提供简单数据库支持的用户提供程序,附带相关服务和控制器。
2.0.1
2014-11-01 20:19 UTC
Requires
- php: >=5.3.0
- doctrine/dbal: ~2.4
- jasongrimes/paginator: ~1.0
- silex/silex: ~1.0
- swiftmailer/swiftmailer: ~5.3
- symfony/security: ~2.3
- symfony/twig-bridge: ~2.3
Requires (Dev)
- ext-pdo_sqlite: *
- phpunit/phpunit: ~4.2
README
一个简单、可扩展的Silex 安全服务的数据库支持用户提供程序。
SimpleUser是设置Silex PHP微框架中用户帐户(身份验证、授权和用户管理)的简单方法。它为Silex提供即插即用的服务,实现了安全组件缺失的用户管理部分。它包括基本的用户模型、数据库支持的用户管理器、用户管理的控制器和视图以及各种辅助功能。
演示
升级
如果您是从1.x升级,则需要更新数据库以适应2.0版本。提供了一些工具来简化此数据库迁移过程。有关详细信息,请参阅sql/MIGRATION.md。
快速启动示例配置
此配置应能直接使用,快速启动。有关更多信息,请参阅下文。
使用composer安装。此命令将自动安装最新稳定版本
composer require jasongrimes/silex-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' => $app->share(function($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
来使新帐户成为管理员。 (在您有一个管理员帐户后,它可以通过Web界面将管理员角色授予其他人。)
配置选项
所有这些选项都是可选的。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',
),
);