davec49 / silex2-simpleuser
为 Silex 2.0 提供的一个简单的数据库用户提供程序,与 jasongrimes/SimpleUser 相关的服务和控制台分叉。
Requires
- php: >=5.6.0
- doctrine/dbal: ~2.4
- jasongrimes/paginator: ~1.0
- silex/silex: ~2.0
- swiftmailer/swiftmailer: ~5.3
- symfony/security: ~2.8|^3.0
- symfony/twig-bridge: ~2.8|^3.0
Requires (Dev)
- phpunit/phpunit: ~5.4
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', ), );