I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

ازاي تبني نظام تسجيل دخول (Authentication) في لارافيل من الصفر؟

ازاي تبني نظام تسجيل دخول (Authentication) في لارافيل من الصفر؟ كتير مننا كمبرمجين بيعتمدوا بشكل كلي على حزم جاهزة زي Laravel Breeze أو Jetstream، وده شيء عظيم

ازاي تبني نظام تسجيل دخول (Authentication) في لارافيل من الصفر؟
Reading Count: 221

ازاي تبني نظام تسجيل دخول (Authentication) في لارافيل من الصفر؟

كتير مننا كمبرمجين بيعتمدوا بشكل كلي على حزم جاهزة زي Laravel Breeze أو Jetstream، وده شيء عظيم وبيوفر وقت. لكن، هل سألت نفسك قبل كدة: "هو ايه اللي بيحصل تحت الكبوت؟" لو حبيت تعمل نظام صلاحيات (Authorization) مخصص أو تحكم كامل في الـ Session، هتلاقي نفسك واقف في حتة ضلمة لو مش فاهم الأساسيات. النهاردة هنشرح إزاي تبني نظام دخول من الصفر في لارافيل (Laravel) بدون أي إضافات خارجية، عشان تكون فاهم كل سطر كود بتكتبه.

ليه محتاج تبني نظام Authentication يدوي؟

مش دايماً الحزم الجاهزة بتناسب متطلبات العميل. أحياناً بتحتاج دورة حياة (Lifecycle) معينة للمستخدم، أو ربط مع قاعدة بيانات خارجية، أو نظام تحقق (Verification) مخصص. فهمك للـ Authentication الأساسي هيخليك مبرمج أقوى بكتير، وهيعلمك إزاي لارافيل بيتعامل مع التوكينز (Tokens) والسيشن (Session).

الخطوة الأولى: تهيئة قاعدة البيانات والنموذج

أول حاجة محتاجينها هي جدول المستخدمين. لارافيل بييجي بجدول users جاهز، لكن خلينا نفترض إنك هتنشئ النظام يدوي. تأكد إن موديل الـ User بيعمل extend لكلاس Authenticatable عشان يقدر يتعامل مع نظام الدخول.


namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    protected $fillable = ['name', 'email', 'password'];
    protected $hidden = ['password', 'remember_token'];
}

في الـ Controller بتاعك، هنستخدم الـ Auth Facade. الميثود الأهم هنا هي attempt، واللي بتقوم بوظيفتين: التأكد من صحة البيانات، وإنشاء السيشن (Session) للمستخدم في حال كانت البيانات صحيحة.


public function login(Request $request)
{
    $credentials = $request->validate([
        'email' => ['required', 'email'],
        'password' => ['required'],
    ]);

    if (Auth::attempt($credentials)) {
        $request->session()->regenerate();
        return redirect()->intended('dashboard');
    }

    return back()->withErrors([
        'email' => 'البيانات دي مش مطابقة للسجلات عندنا.',
    ]);
}

الخطوة الثالثة: حماية المسارات (Middleware)

مش كفاية إننا نعمل تسجيل دخول، لازم نحمي الصفحات اللي المستخدم مش لازم يشوفها وهو "مش مسجل". هنا بيجي دور الـ Middleware. لارافيل بيوفر auth middleware جاهز، لكن فهم إزاي هو بيشتغل (إنه بيعمل Redirect للـ login route لو المستخدم مش مسجل) شيء جوهري.

تقدر تستخدمه في ملف الـ routes/web.php كدة:

Route::middleware(['auth'])->group(function () { Route::get('/dashboard', function () { return view('dashboard'); }); });

الخطوة الرابعة: التعامل مع الـ Logout

إنهاء الجلسة سهل جداً، كل اللي محتاجه إنك تنهي الـ Session وتمسح الـ Authentication state من الكوكيز (Cookies).


public function logout(Request $request)
{
    Auth::logout();
    $request->session()->invalidate();
    $request->session()->regenerateToken();
    return redirect('/');
}

نصيحة من أخ لمبرمج

يا بطل، الحزم الجاهزة (Packages) زي Breeze موجودة عشان تسرع شغلك، مش عشان تغنيك عن الفهم. جرب تبني نظام تسجيل دخول مرة واحدة بس بإيدك من الصفر، وهتلاقي نفسك بقيت بتشوف الكود بتاع لارافيل بنظرة تانية خالص. افهم إزاي الـ Guards بيشتغلوا، وازاي الـ Providers بيجيبوا البيانات، ولما تفهم دول، هتكون جاهز تتعامل مع أي تحدي أمني في مشاريعك الجاية.

بالتوفيق في رحلتك البرمجية، وخليك دايماً فضولي تجاه التفاصيل الصغيرة!


Share

Related posts

Apr 26, 2026 • 1 min read
Reading Count: 3
إزاي تكتب كود PHP نظيف (Clean Code) وتخلص من كابوس الـ Spaghetti Code

إزاي تكتب كود PHP نظيف (Clean Code) وتخلص من كابوس الـ Spaghetti Code أكيد مريت بالموقف ده قبل كدة،...

Apr 26, 2026 • 1 min read
Reading Count: 15
الفرق بين الكلاس المجرد (Abstract Class) والواجهة (Interface) في لغة PHP

الفرق بين الكلاس المجرد (Abstract Class) والواجهة (Interface) في لغة PHP أهلاً بيك يا صديقي المبرمج....

Apr 25, 2026 • 1 min read
Reading Count: 245
ليه لازم تنقل مشاريعك لـ PHP 8 فوراً؟ التغيير اللي هيخليك تحب البرمجة تاني

ليه لازم تنقل مشاريعك لـ PHP 8 فوراً؟ التغيير اللي هيخليك تحب البرمجة تاني لو كنت مبرمج بقالك فترة ب...