Questa guida spiega come installare il framework PHP Laravel ed il pacchetto JWT-Auth.

Come creare un progetto con Laravel

 

Che cos’è Laravel?

Laravel è un framework open source di tipo MVC scritto in PHP per lo sviluppo di applicazioni web, creato nel 2011 da Taylor Otwell basato su Symfony. Laravel è distribuito con licenza MIT e mantiene tutto il codice disponibile su GitHub

Tools per l’installazione

Per installare laravel possiamo scaricarlo manualmente da GitHub oppure possiamo utilizzare composer, esso è uno strumento per creare progetti e gestire le relative dipendenze di un progetto.

Download Composer

Requisiti

  • PHP >= 5.6.4
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Tokenizer PHP Extension
  • Mbstring PHP Extension
  • XML PHP Extension

Se si è su un server debian-based gli ultimi due requisiti software che solitamente non sono installati insieme al meta-pacchetto AMP, ovvero mbstring ed xml, possono essere installati tramite il seguente comando:

sudo apt install php-xml php-mbstring

Installazione

Per installare Laravel, una volta installato composer, possiamo eseguire tramite console questo comando:

composer create-project –prefer-dist laravel/laravel yourPrj

oppure:

laravel new yourPrj

Troubleshooting: comando laravel non riconosciuto #1 #2

Una volta creato il progetto assegniamo i seguenti permessi:

chmod 777 -R storage/
chmod 777 -R storage/logs/
chmod 777 -R storage/framework/cache
chmod 777 -R storage/framework/views
chmod 777 -R storage/framework/sessions
chmod 777 -R bootstrap/cache

Configuriamo le credenziali per la connessione al database creando un database dedicato a Laravel:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nome_database
DB_USERNAME=username
DB_PASSWORD=password

Assicuriamoci che nel file .env la stringa APP_KEY non sia vuota, altrimenti eseguiamo:

php artisan key:generate

Come creare un progetto con Laravel

Per testare se Laravel è stato installato correttamente andiamo su  http://localhost/yourPrj/public/index.php la schermata che dovrebbe apparire è la seguente

Come creare un progetto con Laravel

Configurare jwt-Auth

JWT sta per JSON Web Token. JWT servirà per creare l’autenticazione e la connessione front-end e back-end. Inoltre, tramite JWT è possibile creare login/register API.
Questo pacchetto jwt-auth è stato fatto da Tymon ed è reperibile su GitHub.

Per installare jwt-auth usiamo composer ed installiamo il pacchetto “tymon/jwt-auth”:

composer require “tymon/jwt-auth”
composer update

Come creare un progetto con Laravel

Questi comandi andranno a modificare il file composer.json (attributo require).

Scaricato jwt-auth bisogna:

  • Aggungere il seguente provider file config/app.php (riga 138-139)

Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class

Come creare un progetto con Laravel Come creare un progetto con Laravel

 

  • Aggiungere (sempre nel file config/app.php) i seguenti alias (riga 196-198):

‘JWTAuth’ => Tymon\JWTAuth\Facades\JWTAuth::class,
‘JWTFactory’ => Tymon\JWTAuth\Facades\JWTFactory::class

Come creare un progetto con Laravel

 

  • Generare il file config/jwt.php tramite il seguente comando:

php artisan vendor:publish –provider=”Tymon\JWTAuth\Providers\JWTAuthServiceProvider”

Come creare un progetto con Laravel

 

  • Generare la secret key per il file config/jwt.php con:

php artisan jwt:generate

Come creare un progetto con Laravel

 

  • Creare un middleware per “proteggere” le API

php artisan make:middleware authJWT

Il comando sopra creerà un file app/Http/Middleware/authJWT.php, da riempire con il seguente codice:

namespace App\Http\Middleware;
use Closure;
use JWTAuth;
use Exception;
class authJWT
{
    public function handle($request, Closure $next)
    {
        try {
            $user = JWTAuth::toUser($request->input('token'));
        } catch (Exception $e) {
            if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException){
                return response()->json(['error'=>'Token is Invalid']);
            }else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException){
                return response()->json(['error'=>'Token is Expired']);
            }else{
                return response()->json(['error'=>'Something is wrong']);
            }
        }
        return $next($request);
    }
}
Come creare un progetto con Laravel

 

  • Aggiungere il middleware nel file app/Http/Kernel.php all’interno di $routeMiddleware (riga 49-50) incollando la seguente stringa:

‘jwt-auth’ => \App\Http\Middleware\authJWT::class,

Come creare un progetto con Laravel

 

  • Creare il nuovo controller tramite il comando:php artisan make:controller authController

php artisan make:controller authController

Come creare un progetto con Laravel

 

  • Riempirlo con il seguente codice:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use Hash;
use JWTAuth;
class authController extends Controller
{
   
    public function register(Request $request)
    {        
        $input = $request->all();
        $input['password'] = Hash::make($input['password']);
        User::create($input);
        return response()->json(['result'=>true]);
    }
   
    public function login(Request $request)
    {
        $input = $request->all();
        if (!$token = JWTAuth::attempt($input)) {
            return response()->json(['result' => 'wrong email or password.']);
        }
            return response()->json(['result' => $token]);
    }
   
    public function get_user_details(Request $request)
    {
        $input = $request->all();
        $user = JWTAuth::toUser($input['token']);
        return response()->json(['result' => $user]);
    }
   
}
  • Configurare le route, quindi aggiungere nel file routes/web.php le seguenti righe di codice:
Route::group(['middleware' => ['api'],'prefix' => 'api'], function () {
    Route::post('register', 'authController@register');
    Route::post('login', 'authController@login');
    Route::group(['middleware' => 'jwt-auth'], function () {
        Route::post('get_user_details', 'authController@get_user_details');
    });
});
Come creare un progetto con Laravel

 

  • Commentare nel file /app/kernel.php la stringa:

\App\Http\Middleware\VerifyCsrfToken::class,

Come creare un progetto con Laravel

 

Si ringrazia Tkd-Alex per la guida. Per qualsiasi cosa commentate qui sotto!

About Helias

Giovanissimo programmatore e web designer. Leggi tutto...