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 Router

<?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 Framework

使用包

外观

slimborn look feel

目录结构

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

测试

$ phpunit

贡献

请随时提交任何小的改进,目标是保持尽可能简单(同时尽可能实用)。

许可

MIT许可证(MIT)。请参阅许可文件获取更多信息。

FOSSA Status