আমি লারাভেল৫.২ (laravel 5.2) এর জন্য মাল্টিপল টেবিল অথেনটিকেশনের কাজটি করছি ।
১ । প্রথমে লারাভেলের ফ্রেশ ইন্সটলেশন রেডি করি । যেহেতু ইউজার(user) টেবিল ইন্সটলেশনের সাথেই আসে , তাই আমাদেরকে অ্যাডমিন() টেবিল তৈরি করতে হবে । এখন আমরা আডমিন টেবিলের জন্য মাইগ্রেশন টেবিল তৈরি করব । তাই কমান্ড লাইনে লিখি
৩। তারপর টেবিলগুলা মাইগ্রেট করি php artisan migrate দিয়ে । এখন অ্যাডমিনের জন্য মডেল তৈরি করি php artisan make:model Admin । মডেলটি ইলোকুয়েণ্ট ক্লাসের কিন্তু আমাদের কাজের জন্য মডেলটিকে অথেন্টিকেবল ক্লাসের হতে হবে । তাই আমরা অ্যাডমিন মডেলকে এইভাবে পরিবর্তন করি ।
আমাদের জন্য দরকারি ফর্ম ও কন্টোলার তৈরি হয়ে যাবে ।
৭।এখন আমরা প্রজেক্ট রান করে লগইন আর রেজিস্টার করলে তা ইউজার টেবিলে জমা হবে । কারন config/auth.php তে ডিফ্লট হিসেবে আছে
৮। ইউজার ডিফল্ট হিসেবে থাকলে অ্যাডমিনের কাজ করতে হলে Auth::guard('admins')->user(),
Auth ফ্যাস্কেডে গার্ড ইউজ করতে হবে ।
১ । প্রথমে লারাভেলের ফ্রেশ ইন্সটলেশন রেডি করি । যেহেতু ইউজার(user) টেবিল ইন্সটলেশনের সাথেই আসে , তাই আমাদেরকে অ্যাডমিন() টেবিল তৈরি করতে হবে । এখন আমরা আডমিন টেবিলের জন্য মাইগ্রেশন টেবিল তৈরি করব । তাই কমান্ড লাইনে লিখি
php artisan make:migration create_admins_table২। ইউজার টেবিলের মাইগ্রেশনের মত করে অ্যাডমিন টেবিলের মাইগ্রেশন তৈরি করি ।
৩। তারপর টেবিলগুলা মাইগ্রেট করি php artisan migrate দিয়ে । এখন অ্যাডমিনের জন্য মডেল তৈরি করি php artisan make:model Admin । মডেলটি ইলোকুয়েণ্ট ক্লাসের কিন্তু আমাদের কাজের জন্য মডেলটিকে অথেন্টিকেবল ক্লাসের হতে হবে । তাই আমরা অ্যাডমিন মডেলকে এইভাবে পরিবর্তন করি ।
৪। এখন config/auth.php ফাইলটিকে পরিবর্তন করে এইরকম করি<?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";
}
৫। অ্যাডমিন মডেলে গার্ড ঠিক করে দিতে হবে ।<?phpreturn ['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 তে ডিফ্লট হিসেবে আছে
এখন আমরা যদি ডিফ্লট অ্যারেকে পরিবর্তন করে users এর পরিবর্তে admins ব্যবহার করি তাহলে আমরা লগইন আর রেজিস্টার করলে তা অ্যাডমিন টেবিলে জমা হবে এবং চেক করবে ।'defaults' => ['guard' => 'web','passwords' => 'users',],
৮। ইউজার ডিফল্ট হিসেবে থাকলে অ্যাডমিনের কাজ করতে হলে Auth::guard('admins')->user(),
Auth::guard('admins')->attempt(['email' => '', 'password' => ''])
, Auth::guard('admins')->check()Auth ফ্যাস্কেডে গার্ড ইউজ করতে হবে ।