📘 Module 4: Authentication (Login & Register)
1. Install Laravel Breeze (Simple Authentication)
Laravel Breeze යනු සරල, සම්පූර්ණ authentication system එකක් (Login, Register, Password Reset) ඉතා ඉක්මනින් අපේ project එකට එකතු කර ගැනීමට ඇති starter kit එකකි.
පළමුව, Breeze package එක Composer හරහා install කරගනිමු.
composer require laravel/breeze --dev
Install වූ පසු, Breeze අපේ project එකට setup කිරීමට පහත command එක run කරන්න.
php artisan breeze:install
මෙවිට ඔබෙන් stack එකක් තෝරන ලෙස අසයි. අපි Blade භාවිතා කරන නිසා, Blade with Alpine (or just Blade) තෝරා Enter යතුර ඔබන්න. Dark mode support වැනි දේ අවශ්ය නම් 'yes' ලෙස යොදන්න.
අවසාන වශයෙන්, අවශ්ය JavaScript packages install කර compile කිරීමට පහත commands run කරන්න.
npm install
npm run dev
දැන් php artisan migrate command එක run කරන්න. Breeze මගින් password reset වැනි දේට අදාළව නව tables සෑදෙන නිසා migrate කිරීම අවශ්ය වේ.
2. Setup Login, Registration, and Logout
Breeze install කිරීමෙන් පසුව, Login, Register, සහ Logout සඳහා අවශ්ය සියලුම routes, controllers, සහ views ස්වයංක්රීයව නිර්මාණය වේ.
ඔබගේ browser එකේ http://127.0.0.1:8000 වෙත ගිය විට, navigation bar එකේ දකුණුපස "Log in" සහ "Register" links පෙනෙනු ඇත.
Register link එක click කර නව ගිණුමක් සාදා, login වී බලන්න. Login වූ පසු, ඔබව /dashboard පිටුවට රැගෙන යනු ඇත. Logout වීමටද option එකක් ඔබට පෙනෙනු ඇත.
3. Roles: Admin (shop owner), Cashier (sales staff)
අපගේ POS පද්ධතියේ විවිධ user වර්ග දෙකක් ඇත: Admin (සියලු දේ කළ හැකි) සහ Cashier (Sales පමණක් කළ හැකි). මෙය වෙන් කිරීමට, users table එකට role නමින් නව column එකක් එකතු කරමු.
මේ සඳහා නව migration එකක් සාදමු.
php artisan make:migration add_role_to_users_table --table=users
දැන් database/migrations/ ෆෝල්ඩරයේ සෑදුණු නව migration file එක open කර up() function එකට පහත code එක ඇතුලත් කරන්න.
File: database/migrations/..._add_role_to_users_table.php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
// We add a 'role' column that can be 'admin' or 'cashier'.
// The default value will be 'cashier'.
$table->string('role')->default('cashier');
});
}
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('role');
});
}
};
දැන් migration එක run කර database එක update කරන්න.
php artisan migrate
දැන් users table එකේ role නමින් නව column එකක් ඇති අතර, අලුතින් register වන ඕනෑම user කෙනෙක් default වශයෙන් 'cashier' කෙනෙක් වනු ඇත. Admin user ව manually database එක හරහා වෙනස් කරගත හැක.
4. Sinhala Explanation of Authentication Workflow
Authentication (සත්යාපනය) යනු කුමක්ද?
Authentication කියන්නේ පද්ධතියකට ඇතුළු වීමට උත්සහ කරන user, තමන් කියන පුද්ගලයාමදැයි තහවුරු කරගැනීමේ ක්රියාවලියයි. සරලවම, "ඔබ කවුද?" කියා පද්ධතිය ප්රශ්න කර, එයට නිවැරදි පිළිතුරක් (සාක්ෂි) ලබා දීමයි.
උදාහරණයක්: ඔබ කාර්යාලයකට ඇතුළු වන විට, ආරක්ෂක නිලධාරියා (security guard) ඔබේ හැඳුනුම්පත (ID card) ඉල්ලා, එහි ඇති ඡායාරූපය සහ ඔබේ මුහුණ ගලපා බලනවා. ID එක හරි නම් පමණක් ඔබට ඇතුළු වීමට අවසර දෙනවා.
- මෙහි ඔබ (User) පද්ධතියට ඇතුළු වීමට උත්සහ කරනවා.
- ආරක්ෂක නිලධාරියා (System) ඔබේ අනන්යතාවය පරීක්ෂා කරනවා.
- ඔබේ හැඳුනුම්පත (Username/Password) යනු ඔබ, ඔබම බවට දෙන සාක්ෂියයි.
Laravel Breeze මගින් මේ සම්පූර්ණ ක්රියාවලියම (Register form, Login form, password check කිරීම, session එකක් පවත්වාගෙන යාම) අපිට ලේසියෙන්ම හදලා දෙනවා.
Authorization (අවසර දීම): Authentication වලට පසුව එන පියවර. මෙහිදී, "ඔබ කවුදැයි හඳුනාගත් පසු, ඔබට මේ පද්ධතිය තුල මොනවාද කිරීමට අවසර ඇත්තේ?" යන්න තීරණය කිරීමයි. (උදා: Admin ට product delete කරන්න පුළුවන්, නමුත් Cashier ට බෑ.)