havenshen/slim-born

Slim Framework 3 骨架应用程序具有身份验证功能。

安装次数: 1,705

依赖关系: 0

建议者: 0

安全性: 0

星标: 195

关注者: 22

分支: 38

公开问题: 0

类型:项目

2.0 2020-07-22 04:33 UTC

This package is auto-updated.

Last update: 2024-09-10 10:07:24 UTC


README

Scrutinizer Code Quality Build Status Code Coverage Build Status Latest Stable Version Latest Unstable Version Latest Stable Version Total Downloads License FOSSA Status

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 框架

使用包

外观

slimborn look feel

目录结构

|-- slim-born
	|-- app
		|-- Auth
		|-- Controllers
		|-- Middleware
		|-- Models
		|-- Validation
		|-- Routes.php
	|-- bootstrap
		|-- app.php
	|-- public
	|-- resources
	....

测试

$ phpunit

贡献

欢迎提交任何小的改进,目标是使它尽可能简单(但实用)。

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件

FOSSA Status