اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته 

ممكن توضيح مثال بسيط كيفية تتم عملية تسجيل دخول 

عن طريق إطار عمل لارافيل  وجدت في يوتيوب شرح لي كلاس يسمي Auth لم أفهم شي منه وكيفية يتم تفريق بين مستخدم عادي او ادمن 

Recommended Posts

  • 0
نشر

لارافيل يوفر نظام مصادقة مدمجا مبنيا على كلاس Auth فهو يسهل عملية التحقق من صحة بيانات تسجيل الدخول للمستخدمين.

توجد طريقتين يجب أن نقوم بتعريفهما في ملف routes/web.php، هما:

  • GET /login: تعرض نموذج تسجيل الدخول.
  • POST /login: تتحقق من بيانات تسجيل الدخول المرسلة وتعيد توجيه المستخدم بناء على صحتها.

ثم نقوم باستخدام أمر artisan لإنشاء نموذج تسجيل الدخول من خلال:

php artisan make:form Login

أين سيقوم هذا الأمر بإنشاء ملف app/Http/Requests/LoginRequest.php، والذي يحتوي على قواعد التحقق من صحة بيانات تسجيل الدخول.

في وحدة تحكم LoginController، نستخدم طريقة Auth::attempt للتحقق من صحة اسم المستخدم وكلمة المرور المدخلين ففي حال نجحت عملية التحقق، سيتم تسجيل دخول المستخدم تلقائيا.

يمكنك قراءة هذه المقالات للتعمق أكثر:

الاستيثاق في لارافل

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته .

أولا، في Laravel، يتم استخدام نظام المصادقة (Authentication) المدمج لإدارة عمليات تسجيل الدخول والتحقق من الهوية.

يجب عليك اولا ان تقوم بكتابة المسارات الخاصة بتسجيل الدخول والتسجيل وتسجيل الخروج في ملف التوجيه (routes/web.php). على سبيل المثال:

use App\Http\Controllers\LoginController;
Route::get('login', [LoginController::class,'create'])->name('login');
Route::post('login', [LoginController::class,'login']);
Route::post('logout', [LoginController::class,'logout'])->name('logout');

ويجب انشاء متحكم فى المسار الذى قمنا بكتابته Auth\LoginController وانشاء الدوال التى قمنا بتمريرها ايضا.

الآن، يمكننا أن ننشئ الدالة login() داخل LoginController. حيث تقوم هذه الدالة بالتحقق من بيانات تسجيل الدخول التى يتم ارساله من المستخدم وإذا كانت صحيحة، يتم تسجيل الدخول باستخدام Auth facade المدمجة في Laravel. على سبيل المثال:

use Illuminate\Support\Facades\Auth;

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');
    
    if (Auth::attempt($credentials)) {
        // هنا نقوم بكتابة اى شئ نريده فى حالة قام المستخدم بعمل تسجيل دخول صحيح
        return redirect()->intended('dashboard');
    }
    
    return redirect()->back()->withErrors(['email' => 'These credentials do not match our records.']);
}

تقوم دالة attempt() بمحاولة تسجيل الدخول باستخدام البيانات المقدمة. إذا نجحت عملية التسجيل، يتم توجيه المستخدم إلى المسار المعين في هذه الحالة 'dashboard' ، وإذا فشلت، يتم توجيه المستخدم إلى الصفحة السابقة الطلب عليها مع رسالة خطأ.

اما بالنسبة للمستخدم والادمن فيمكنك اضافة حقل فى قاعدة البيانات يسمى is_admin وجعل قيمته ب 1 اذا كان ادمن و 0 اذا لم يكن ادمن.

ويمكنك قراءة هذا المقالة لتفهم جيدا عن الاستيثاق جيدا .

وايضا هذا الرابط لموسوعة حاسوب ويمكنك قراءة المزيد حول لارافيل هناك.

  • 0
نشر
بتاريخ On 5‏/5‏/2024 at 12:56 قال ايمن ميلاد:

ممكن شرح only داخل request 

داخل php في كل صفحة استدعي 

Include('config.php');

كيف يكون باستخدام لارافيل 

نعتمد على وظيفة only() داخل طلب HTTP للحصول على مجموعة محددة من بيانات الإدخال من الطلب.

وتستقبل only() قائمة بأسماء الحقول كوسائط، وتُرجع only() مصفوفة جديدة تحتوي فقط على البيانات المحددة في تلك الحقول.

وذلك لتنظيف بيانات الإدخال قبل معالجتها أو لتحديد البيانات التي يجب تخزينها في قاعدة البيانات أو لتمرير بيانات محددة إلى وظائف أو تطبيقات أخرى.

$request = Illuminate\Http\Request::createFromGlobals();

$name = $request->only('name')['name'];

$data = $request->only(['name', 'email']);

وفي Laravel، يتم توفير مثيل Request تلقائيًا لكل وحدة تحكم، ويتيح لك الوصول بسهولة إلى بيانات الطلب، بما في ذلك $request->all() للحصول على جميع بيانات النموذج في الطلب.

و $request->input('name') للحصول على قيمة حقل محدد أو $request->only(['name', 'email']) للحصول على قيم متعددة الحقول.

واستخدم only() لتنظيف بيانات الإدخال قبل معالجتها مع تحديد فقط البيانات التي تحتاجها فعلاً، وتجنب استخدامها للحصول على جميع بيانات النموذج، حيث يؤدي ذلك إلى مشاكل بالأداء.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...