Slim Framework 4 Skeleton MVC -Anwendung mit Build im Authentifizierungssystem.
composer create-project " hezecom/slim-starter v1.0 " [my-app] Database (Required for auth to work)
database Datei kopieren .Env.Example nach .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'
Routing -Beispiel unten
<?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 ));Controller Beispiel vereinfachen
<?php
namespace App Controllers ;
class HomeController extends Controller
{
public function index ( Request $ request , Response $ response )
{
return view ( $ response , ' index.twig ' );
}
}Verwendet eloquent ORM, das von Laravel Framework verwendet wird. Derzeit unterstützt es MySQL, Postgres, SQL Server und SQLite. Referenz - Illuminate/Datenbank
<?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 ;
}
}Verwenden Sie die großartigste Validierungsmotor, die jemals für PHP erstellt wurde. Referenz - Respekt/Validierung
<?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
}
}Referenz schlanke offizielle Dokumente - Slim Framework
| -- slim-born
| -- app
| -- Auth
| -- Controllers
| -- Middleware
| -- Models
| -- Lib
| -- bootstrap
| -- app.php
| -- database.php
| -- helper.php
| -- logs
| -- public
| -- resources
| -- route
....$ phpunitAlle Beiträge sind willkommen! Wenn Sie einen Beitrag leisten möchten, erstellen Sie zuerst ein Problem, damit Ihre Funktion, Ihr Problem oder Ihre Frage besprochen werden können.
Dieses Projekt ist gemäß den Bedingungen der MIT -Lizenz lizenziert.