slim starter
v1.0
슬림 프레임 워크 4 인증 시스템 빌드가있는 스켈레톤 MVC 응용 프로그램.
composer create-project " hezecom/slim-starter v1.0 " [my-app] Database (Required for auth to work)
database 에 있습니다 파일 .env.example을 .env로 복사하십시오
DB_DRIVER=mysql
DB_HOST=localhost
DB_DATABASE=slimapp
DB_USERNAME=root
DB_PASSWORD=
DB_PORT=3306
# Email setting Driver = (smtp | sendmail | mail)
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=username
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS='[email protected]'
MAIL_FROM_NAME='Example'
아래의 라우팅 예
<?php
$ app -> get ( ' / ' , ' HomeController:index ' )-> setName ( ' home ' );
$ app -> group ( '' , function ( $ route ) {
$ route -> get ( ' /register ' , AuthController::class . ' :createRegister ' )-> setName ( ' register ' );
$ route -> post ( ' /register ' , AuthController::class . ' :register ' );
$ route -> get ( ' /login ' , AuthController::class . ' :createLogin ' )-> setName ( ' login ' );
$ route -> post ( ' /login ' , AuthController::class . ' :login ' );
$ route -> get ( ' /verify-email ' , AuthController::class. ' :verifyEmail ' )-> setName ( ' verify.email ' );
$ route -> get ( ' /verify-email-resend ' ,AuthController::class. ' :verifyEmailResend ' )-> setName ( ' verify.email.resend ' );
$ route -> get ( ' /forgot-password ' , PasswordController::class . ' :createForgotPassword ' )-> setName ( ' forgot.password ' );
$ route -> post ( ' /forgot-password ' , PasswordController::class . ' :forgotPassword ' );
$ route -> get ( ' /reset-password ' , PasswordController::class. ' :resetPassword ' )-> setName ( ' reset.password ' );
$ route -> get ( ' /update-password ' , PasswordController::class. ' :createUpdatePassword ' )-> setName ( ' update.password ' );
$ route -> post ( ' /update-password ' , PasswordController::class. ' :updatePassword ' );
})-> add ( new GuestMiddleware ( $ container ));컨트롤러 예제 단순화
<?php
namespace App Controllers ;
class HomeController extends Controller
{
public function index ( Request $ request , Response $ response )
{
return view ( $ response , ' index.twig ' );
}
}Laravel Framework에서 사용하는 Eloquent ORM을 사용합니다. 현재 MySQL, Postgres, SQL Server 및 SQLITE를 지원합니다. 참조 - 일루미 네이트/데이터베이스
<?php
namespace App Models ;
use Illuminate Database Eloquent Model ;
class User extends Model
{
protected $ table = ' users ' ;
protected $ fillable = [
' email ' ,
' username ' ,
' password ' ,
];
} <?php
namespace App Middleware ;
use Psr Http Message ServerRequestInterface as Request ;
use Psr Http Server RequestHandlerInterface as RequestHandler ;
class AuthMiddleware extends Middleware
{
public function __invoke ( Request $ request , RequestHandler $ handler )
{
if (! $ this -> container -> get ( ' auth ' )-> isLogin ()) {
return redirect ()-> route ( ' login ' )-> with ( ' error ' , ' Access denied, you need to login. ' );
}
$ response = $ handler -> handle ( $ request );
return $ response ;
}
}PHP 용으로 만든 가장 멋진 검증 엔진을 사용하십시오. 참조 - 존중/검증
<?php
namespace App Controllers Auth ;
use App Controllers Controller ;
use Respect Validation Validator as v ;
class AuthController extends Controller
{
public function register ( Request $ request , Response $ response )
{
$ validation = $ this -> validator -> validate ( $ request , [
' email ' => v:: noWhitespace ()-> notEmpty ()-> email (),
' username ' => v:: noWhitespace ()-> notEmpty ()-> alnum (),
' password ' => v:: notEmpty ()-> stringType ()-> length ( 8 ),
]);
if ( $ validation -> failed ()) {
redirect ()-> route ( ' register ' );
}
// more coding here
}
}참조 슬림 공식 문서 - 슬림 프레임 워크
| -- slim-born
| -- app
| -- Auth
| -- Controllers
| -- Middleware
| -- Models
| -- Lib
| -- bootstrap
| -- app.php
| -- database.php
| -- helper.php
| -- logs
| -- public
| -- resources
| -- route
....$ phpunit모든 기부금을 환영합니다! 기여하고 싶다면 먼저 문제를 만들어 기능, 문제 또는 질문에 대해 논의 할 수 있습니다.
이 프로젝트는 MIT 라이센스의 조건에 따라 라이센스가 부여됩니다.