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

লারাভেলের(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 ফ্যাস্কেডে গার্ড ইউজ করতে হবে ।


 

শুক্রবার, ১৩ মে, ২০১৬

কেমন হত যদি mysql workbench অথবা xampp এ ডিজাইন করা ডাটাবেজ থেকে সরাসরি লারাভেল মডেল , মাইগ্রেশন তৈরি করা যেত ? কি জাদু মনে হচ্ছে ? হ্যা পিএইচপি কমিউনিটি এই জাদু দেখাতে পারে । আসুন আজকে সেই জাদু দেখা যাক ।

১।  প্রথমে লারাভেলের প্রজেক্টের একটি ফ্রেশ ইন্সটলেশন সম্পন্ন করুন । কিভাবে করবেন ? এই লেখাটি অনুসরণ করুন ।
২। এই বার .env ফাইলে যে ডাটাবেজের জন্য মাইগ্রাশন আর মডেল তৈরি করতে চান তার নাম , ইউজার নেম এবং পাসওয়ার্ড সেট করুন । 
৩। কি জাদু দেখবেন না ? হ্যা আর দেরি না এখন আমরা জাদু দেখব ।
৪। আপনার প্রজেক্টে কমান্ড লাইন ওপেন করে নিচের লাইনগুলি একের পর এক রান করুন ।
composer require --dev --no-update "xethron/migrations-generator:dev-l5"
composer require --dev --no-update "way/generators:dev-feature/laravel-five-stable"
composer require --dev --no-update "user11001/eloquent-model-generator": "~2.0"

composer config repositories.repo-name git "git@github.com:jamisonvalenta/Laravel-4-Generators.git"
composer update 
৫। এই বার কম্পোজার আপডেট করা শেষ হলে আপনি জাদু দেখার জন্য প্রায় তৈরি । আরেকটু কাজ বাকি ।

৬। আপনার প্রজেক্টের config/app.php ফাইলটি ওপেন করুন  আর নিচের লাইনগুলি প্রোভাইডার সেকশনে যোগ করুন ।
Way\Generators\GeneratorsServiceProvider::class,
Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class,
User11001\EloquentModelGenerator\EloquentModelGeneratorProvider::class,

৭। এখন কমান্ড লাইনে php artisan migrate:generate কমান্ডটি রান করুন । আপনার database/migrations ফোল্ডারে সবকটি টেবিলের জন্য মাইগ্রেশন দেখতে পাবেন ।
৮। আর php artisan models:generate কমান্ডটি লিখলে app ডিরেক্ট্রিতে সবকটি টেবিলের জন্য মডেল দেখতে পাবেন ।
৯। এই হল লারাভেল আর পিএইচপি কমিউনিটির জাদু । দুই মিনিটে মাইগ্রেশন আর মডেল তৈরি । 

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 ...