বৃহস্পতিবার, ১৯ মে, ২০১৬

লারাভেলের(laravel) মাধ্যমে মাল্টিপল(multiple) টেবিল অথেনটিকেশন(authentication) যেমন ইউজার আর আডমিন টেবিলের মাধ্যমে ইউজারকে যাচাই করে ইউজার হলে একরকম আর আডমিন হলে আরেকরকম পেজে রিডিরেক্ট করা যায় তা দেখব।

আমি লারাভেল৫.২ (laravel 5.2) এর জন্য মাল্টিপল টেবিল অথেনটিকেশনের কাজটি করছি ।
১ ।  প্রথমে লারাভেলের ফ্রেশ ইন্সটলেশন রেডি করি । যেহেতু ইউজার(user) টেবিল ইন্সটলেশনের সাথেই আসে , তাই আমাদেরকে অ্যাডমিন() টেবিল তৈরি করতে হবে । এখন আমরা আডমিন টেবিলের জন্য মাইগ্রেশন টেবিল তৈরি করব । তাই কমান্ড লাইনে লিখি
php artisan make:migration create_admins_table
২।  ইউজার টেবিলের মাইগ্রেশনের মত করে অ্যাডমিন টেবিলের মাইগ্রেশন তৈরি করি ।
৩।  তারপর টেবিলগুলা মাইগ্রেট করি php artisan migrate দিয়ে । এখন অ্যাডমিনের জন্য মডেল তৈরি করি php artisan make:model Admin । মডেলটি ইলোকুয়েণ্ট ক্লাসের  কিন্তু আমাদের কাজের জন্য মডেলটিকে অথেন্টিকেবল ক্লাসের হতে হবে । তাই আমরা অ্যাডমিন মডেলকে এইভাবে পরিবর্তন করি ।
<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class Admin extends Authenticatable
{
    protected $fillable = [
        'name', 'email', 'password',
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];
    protected $guard = "admins";
}
৪। এখন config/auth.php ফাইলটিকে পরিবর্তন করে এইরকম করি
<?php
return [
    'defaults' => [
        'guard'     => 'web',
        'passwords' => 'users',
    ],
    'guards' => [
        'web' => [
            'driver'   => 'session',
            'provider' => 'users',
        ],
        'api' => [
            'driver'   => 'token',
            'provider' => 'users',
        ],
        
        // For admin
        'admins' => [
            'driver'   => 'session',
            'provider' => 'admins'
        ]
    ],
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        
        // For admin
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class
        ]
    ],
    'passwords' => [
        'users' => [
            'provider' => 'users',
            'email' => 'auth.emails.password',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'admins' => [
            'provider' => 'admins',
            'email' => 'auth.emails.password',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],
];
৫। অ্যাডমিন মডেলে গার্ড ঠিক করে দিতে হবে ।
        protected $guard = "admins";
৬। এখন আমরা লারাভেলের ডিফ্লট বয়লারপ্লেট ব্যবহার করে অথেনটিকেশন তৈরি করব । ফলে
        php artisan make:auth
আমাদের জন্য দরকারি ফর্ম ও কন্টোলার তৈরি হয়ে যাবে ।
৭।এখন আমরা প্রজেক্ট রান করে লগইন আর রেজিস্টার করলে তা ইউজার টেবিলে জমা হবে । কারন config/auth.php তে ডিফ্লট হিসেবে আছে
'defaults' => [
    'guard'     => 'web',
    'passwords' => 'users',
],
এখন আমরা যদি ডিফ্লট অ্যারেকে পরিবর্তন করে users এর পরিবর্তে admins ব্যবহার করি তাহলে আমরা লগইন আর রেজিস্টার করলে তা অ্যাডমিন টেবিলে জমা হবে এবং চেক করবে ।
৮। ইউজার ডিফল্ট হিসেবে থাকলে অ্যাডমিনের কাজ করতে হলে Auth::guard('admins')->user(),
Auth::guard('admins')->attempt(['email' => '', 'password' => ''])
, Auth::guard('admins')->check()
Auth ফ্যাস্কেডে গার্ড ইউজ করতে হবে ।


 

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন

How it feels like reading a book in a kindle reader?

Recently I have a amazon kindle reader as gift from my little brother. Though I am in temptation to have one for 3 years. One of my friend ...