PHP LUMEN AUTHENTICATION

PHP LUMEN AUTHENTICATION

1.      Membuat Table users

Untuk membuat table users, mari kita ikuti langkah-langkah berikut ini:

1)      Membuat database migration dengan menjalankan command dibawah ini pada terminal: php artisan make:migration _table_user_ --create=users

2)      Buka file database/migrations/ 2021_01_30_064001__table_user_.php, dan ubah menjadi seperti dibawah ini

<?php

 

use Illuminate\Database\Migrations\Migration;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Support\Facades\Schema;

 

class TableUser extends Migration

{

    /**

     * Run the migrations.

     *

     * @return void

     */

    public function up()

    {

        Schema::create('users'function (Blueprint $table) {

            $table->bigIncrements('id');

            $table->string("email")->unique();

            $table->string("password");

            $table->string("token")->nullable();

            $table->timestamps();

        });

    }

 

    /**

     * Reverse the migrations.

     *

     * @return void

     */

    public function down()

    {

        Schema::dropIfExists('users');

    }

}

2.      Membuat Model User

Untuk membuat model user, ikuti langkah dibawah ini:

1)      Buat model dengan nama User di folder app. Namun biasanya lumen sudah membuatkan satu model dengan nama User.php. Silahkan ubah kodenya menjad kode seperti di bawah ini :

<?php

 

namespace App;

 

use Illuminate\Auth\Authenticatable;

use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;

use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;

use Illuminate\Database\Eloquent\Model;

use Laravel\Lumen\Auth\Authorizable;

 

class User extends Model implements AuthenticatableContractAuthorizableContract

{

    use AuthenticatableAuthorizable;

 

    protected $fillable = [

        'email''password''token'

    ];

 

    protected $hidden = [

        'password',

    ];

}

 

3.      Endpoint

Saat ini kita sudah mengimplementasikan endpoint yang akan kita gunakan, yakni seperti ini: 

Method (HTTP Verbs)

Endpoint

Description

POST

/auth/register

Untuk mendaftarkan user

POST

/auth/login

Untuk login

DELETE

/auth/logout

Untuk logout

4.      Membuat Controller

buat controller dengan nama AuthController yang terletak di folder app/Http/Controller dan buat 3 method yaitu login() dan register(), serta generateRandomString().

<?php

 

namespace App\Http\Controllers;

 

use App\User;

use Illuminate\Support\Facades\Hash;

use Illuminate\Http\Request;

 

 

class AuthController extends Controller

{

 

    public function register(Request $request)

    {

    }

 

    public function login(Request $request)

    {

    }

 

    function generateRandomString($length = 80)

    {

        $karakkter = '012345678dssd9abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

        $panjang_karakter = strlen($karakkter);

        $str = '';

        for ($i = 0$i < $length$i++) {

            $str .= $karakkter[rand(0$panjang_karakter - 1)];

        }

        return $str;

    }

}

 

5.      Membuat Fungsi Register

1)      Berhubung kita akan membuat fitur register dan login menggunakan REST API maka kita bikin 2 routing : routes/web.php

$router->post("/register""AuthController@register");

$router->post("/login""AuthController@login");

2)      Pembuatan fitur register berada pada controller AuthController dengan method register(). Berikut ini kode nya :

<?php

 

namespace App\Http\Controllers;

 

use App\User;

use Illuminate\Support\Facades\Hash;

use Illuminate\Http\Request;

 

 

class AuthController extends Controller

{

 

    public function register(Request $request)

    {

        $this->validate($request, [

            'email' => 'required|unique:users|max:255',

            'password' => 'required|min:6'

        ]);

 

        $email = $request->input("email");

        $password = $request->input("password");

 

        $hashPwd = Hash::make($password);

 

        $data = [

            "email" => $email,

            "password" => $hashPwd

        ];

 

 

 

        if (User::create($data)) {

            $out = [

                "message" => "register_success",

                "code"    => 201,

            ];

        } else {

            $out = [

                "message" => "vailed_regiser",

                "code"   => 404,

            ];

        }

 

        return response()->json($out$out['code']);

    }

 

    public function login(Request $request)

    {

       

    }

 

    function generateRandomString($length = 80)

    {

        $karakkter = '012345678dssd9abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

        $panjang_karakter = strlen($karakkter);

        $str = '';

        for ($i = 0$i < $length$i++) {

            $str .= $karakkter[rand(0$panjang_karakter - 1)];

        }

        return $str;

    }

}

 

6.      Membuat Fungsi Login

Untuk membuat fungsi login, mari ikuti langkah-langkah dibawah ini.

1)      Buka file bootstrap/app.php, ubah menjadi seperti dibawah ini. Cari block ‘Register Middleware.

 Register Middleware

|--------------------------------------------------------------------------

|

| Next, we will register the middleware with the application. These can

| be global middleware that run before and after each request into a

| route or middleware that'll be assigned to some specific routes.

|

*/

 

// $app->middleware([

//     App\Http\Middleware\ExampleMiddleware::class

// ]);

 

$app->routeMiddleware([

    'login' => App\Http\Middleware\LoginMiddleware::class,

]);

2)      Buat file config/auth.php, dengan code seperti dibawah ini :

<?php

 

namespace App\Http\Controllers;

 

use App\User;

use Illuminate\Support\Facades\Hash;

use Illuminate\Http\Request;

 

 

class AuthController extends Controller

{

 

    public function register(Request $request)

    {

        $this->validate($request, [

            'email' => 'required|unique:users|max:255',

            'password' => 'required|min:6'

        ]);

 

        $email = $request->input("email");

        $password = $request->input("password");

 

        $hashPwd = Hash::make($password);

 

        $data = [

            "email" => $email,

            "password" => $hashPwd

        ];

 

 

 

        if (User::create($data)) {

            $out = [

                "message" => "register_success",

                "code"    => 201,

            ];

        } else {

            $out = [

                "message" => "vailed_regiser",

                "code"   => 404,

            ];

        }

 

        return response()->json($out$out['code']);

    }

 

    public function login(Request $request)

    {

        $this->validate($request, [

            'email' => 'required',

            'password' => 'required|min:6'

        ]);

 

        $email = $request->input("email");

        $password = $request->input("password");

 

        $user = User::where("email"$email)->first();

 

        if (!$user) {

            $out = [

                "message" => "login_vailed",

                "code"    => 401,

                "result"  => [

                    "token" => null,

                ]

            ];

            return response()->json($out$out['code']);

        }

 

        if (Hash::check($password$user->password)) {

            $newtoken  = $this->generateRandomString();

 

            $user->update([

                'token' => $newtoken

            ]);

 

            $out = [

                "message" => "login_success",

                "code"    => 200,

                "result"  => [

                    "token" => $newtoken,

                ]

            ];

        } else {

            $out = [

                "message" => "login_vailed",

                "code"    => 401,

                "result"  => [

                    "token" => null,

                ]

            ];

        }

 

        return response()->json($out$out['code']);

    }

 

    function generateRandomString($length = 80)

    {

        $karakkter = '012345678dssd9abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

        $panjang_karakter = strlen($karakkter);

        $str = '';

        for ($i = 0$i < $length$i++) {

            $str .= $karakkter[rand(0$panjang_karakter - 1)];

        }

        return $str;

    }

}

3)      Tambahkan routes pada web.php

$router->post("/register""AuthController@register");

$router->post("/login""AuthController@login");

 

$router->get("/user""UserController@index");

7.      Uji Coba Register dan Login

1)      Register

       2)    Login



Komentar

Postingan populer dari blog ini

KONSEP, KELEBIHAN, KEKURANGAN CONTAINERIZATION BERSERTA TEKNOLOGI DAN STUDI KASUS CONTAINERIZATION

Mengapa Harus Belajar Cloud Computing ?

Setting Up VM and Domain