havenshen / slim-born
Slim Framework 3 骨架应用程序具有身份验证功能。
2.0
2020-07-22 04:33 UTC
Requires
- illuminate/database: ^5.2
- php-di/php-di: ^6.2
- respect/validation: ^1.0
- slim/csrf: ^1.0.0
- slim/flash: ^0.1.0
- slim/psr7: ^1.1
- slim/slim: 4.*
- slim/twig-view: ^3.0
- vlucas/phpdotenv: ^2.4
Requires (Dev)
- phpunit/phpunit: ^6.5
- symfony/var-dumper: ^5.1
README
Slim Framework 3 或 4 骨架应用程序具有基于 MVC 构造的身份验证功能。
用户身份验证已经实现,需要安装和使用。
安装
对于 Slim 3
composer create-project "havenshen/slim-born v1.0.6" [my-app]
对于 Slim 4
composer create-project "havenshen/slim-born 2.0" [my-app]
.env
将 .env.example 文件复制到 .env
DB_DRIVER=mysql
DB_HOST=localhost
DB_DATABASE=slimborn
DB_USERNAME=root
DB_PASSWORD=
DB_PORT=3306
路由器
这是一个 Slim Framework 路由器。参考 - Slim 路由器
<?php $app->get('/', 'HomeController:index')->setName('home'); $app->group('', function () { $this->get('/auth/signup', 'AuthController:getSignUp')->setName('auth.signup'); $this->post('/auth/signup', 'AuthController:postSignUp'); $this->get('/auth/signin', 'AuthController:getSignIn')->setName('auth.signin'); $this->post('/auth/signin', 'AuthController:postSignIn'); })->add(new GuestMiddleware($container));
控制器
使用 Slim Framework Twig 视图。参考 - Twig-View
<?php namespace App\Controllers; class HomeController extends Controller { public function index($request, $response) { return $this->view->render($response, 'home.twig'); } }
模型
使用 Laravel PHP 框架 Eloquent。参考 - illuminate/database
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $table = 'users'; protected $fillable = [ 'email', 'name', 'password', ]; public function setPassword($password) { $this->update([ 'password' => password_hash($password, PASSWORD_DEFAULT) ]); } }
中间件
<?php namespace App\Middleware; class AuthMiddleware extends Middleware { public function __invoke($request, $response, $next) { if(! $this->container->auth->check()) { $this->container->flash->addMessage('error', 'Please sign in before doing that'); return $response->withRedirect($this->container->router->pathFor('auth.signin')); } $response = $next($request, $response); return $response; } }
验证
使用最出色的 PHP 验证引擎。参考 - Respect/Validation
<?php namespace App\Controllers\Auth; use App\Models\User; use App\Controllers\Controller; use Respect\Validation\Validator as v; class AuthController extends Controller { public function postSignUp($request, $response) { $validation = $this->validator->validate($request, [ 'email' => v::noWhitespace()->notEmpty()->email()->emailAvailable(), 'name' => v::noWhitespace()->notEmpty()->alpha(), 'password' => v::noWhitespace()->notEmpty(), ]); if ($validation->failed()) { return $response->withRedirect($this->router->pathFor('auth.signup')); } // todo someting } }
更多基本功能
参考 slim 官方文档 - Slim 框架
使用包
- illuminate/database - 它也作为 Laravel PHP 框架的数据库层。
- Respect/Validation - 最出色的 PHP 验证引擎。
- slimphp/Slim - 创建 Slim 框架。
- slimphp/Slim-Csrf - 创建 Slim 框架。
- slimphp/Twig-View - 创建 Slim 框架。
- slimphp/Slim-Flash - 创建 Slim 框架。
外观
目录结构
|-- slim-born |-- app |-- Auth |-- Controllers |-- Middleware |-- Models |-- Validation |-- Routes.php |-- bootstrap |-- app.php |-- public |-- resources ....
测试
$ phpunit
贡献
欢迎提交任何小的改进,目标是使它尽可能简单(但实用)。
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。