authentication login and registration خطوات تنفيذ عمليات تسجيل الدخول والتسجيل في Laravel 9
Laravel 9 Authentication login and registration
install laravel 9 application
في البداية اذا لم يكن لارافيل مثبتا فعلينا تثبيتة عن طريق الامر الاتي
composer create-project laravel/laravel:^9.* auth
بعد تثبيت مشروع لارافيل تحت اسم auth
يجب الدخول علي فولدر المشروع بالامر التالي
cd auth
setup Database
بعد تثبيت تطبيق Laravel 9، نحتاج أولاً إلى إنشاء اتصال بقاعدة بيانات MySQL. لذلك، يتعين علينا فتح ملف .env وتحت هذا الملف، نحتاج إلى إضافة تكوين قاعدة بيانات MySQL مثل اسم قاعدة بيانات MySQL واسم مستخدم قاعدة بيانات MySQL وتفاصيل كلمة المرور. بمجرد تحديد هذه التفاصيل، سيتم إجراء اتصال بقاعدة بيانات MySQL في إطار عمل Laravel 9. يمكنك العثور أدناه على تفاصيل تكوين قاعدة بيانات MySQL.
env.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=auth
DB_USERNAME=root
DB_PASSWORD=
بعد ذلك التاكد من ان حقول جدول ال users بهذا الشكل
و الآن أصبحت جاهزة للترحيل، ما عليك سوى تشغيل الأمر التالي
php artisan migrate
ويتم الانشاء بهذا الشكل بعد الموافقة علي قاعدة بيانات جديدة باسم auth
setup Model
لدينا بالفعل model باسم User
يمكن الوصول الية لو اتبعنا الرابط App\Models\User.php
كل ما علينا فعلة هو التاكد من الشكل التالي له
Setup Registration Controller
php artisan make:controller RegisterController
الآن، لقد قمت بالفعل بإنشاء RegistrerController والذي يمكنك العثور عليه لو اتبعت الرابط App\Http\Controllers\RegisterController.php الآن افتحه وتاكد من لصق الكود التالي أدناه:
validated());
auth()->login($user);
return redirect('/')->with('success', "Account successfully registered.");
}
}
Setup Registration Request
php artisan make:request RegisterRequest
الآن، لقد قمت بالفعل بإنشاء RegisterRequest والذي يمكنك العثور عليه لو اتبعت الرابط App\Http\Requests\RegisterRequest.php الآن افتحه وتاكد من لصق الكود التالي أدناه:
'required|email:rfc,dns|unique:users,email',
'username' => 'required|unique:users,username',
'password' => 'required|min:8',
'password_confirmation' => 'required|same:password'
];
}
}
Setup Login Controller
php artisan make:controller LoginController
الآن، لقد قمت بالفعل بإنشاء LoginController والذي يمكنك العثور عليه لو اتبعت الرابط App\Http\Controllers\LoginController.php الآن افتحه وتاكد من لصق الكود التالي أدناه:
getCredentials();
if(!Auth::validate($credentials)):
return redirect()->to('login')
->withErrors(trans('auth.failed'));
endif;
$user = Auth::getProvider()->retrieveByCredentials($credentials);
Auth::login($user);
return $this->authenticated($request, $user);
}
/**
* Handle response after user authenticated
*
* @param Request $request
* @param Auth $user
*
* @return \Illuminate\Http\Response
*/
protected function authenticated(Request $request, $user)
{
return redirect()->intended();
}
}
Setup Login Request
php artisan make:request LoginRequest
الآن، لقد قمت بالفعل بإنشاء LoginRequest والذي يمكنك العثور عليه لو اتبعت الرابط App\Http\Requests\LoginRequest.php الآن افتحه وتاكد من لصق الكود التالي أدناه:
'required',
'password' => 'required'
];
}
/**
* Get the needed authorization credentials from the request.
*
* @return array
* @throws \Illuminate\Contracts\Container\BindingResolutionException
*/
public function getCredentials()
{
// The form field for providing username or password
// have name of "username", however, in order to support
// logging users in with both (username and email)
// we have to check if user has entered one or another
$username = $this->get('username');
if ($this->isEmail($username)) {
return [
'email' => $username,
'password' => $this->get('password')
];
}
return $this->only('username', 'password');
}
/**
* Validate if provided parameter is valid email.
*
* @param $param
* @return bool
* @throws \Illuminate\Contracts\Container\BindingResolutionException
*/
private function isEmail($param)
{
$factory = $this->container->make(ValidationFactory::class);
return ! $factory->make(
['username' => $param],
['username' => 'email']
)->fails();
}
}
Setup Logout Controller
php artisan make:controller LogoutController
الآن، لقد قمت بالفعل بإنشاء LogoutController والذي يمكنك العثور عليه لو اتبعت الرابط App\Http\Controllers\LogoutController.php الآن افتحه وتاكد من لصق الكود التالي أدناه:
Setup Home Controller
php artisan make:controller HomeController
الآن، لقد قمت بالفعل بإنشاء HomeController والذي يمكنك العثور عليه لو اتبعت الرابط App\Http\Controllers\HomeController.php الآن افتحه وتاكد من لصق الكود التالي أدناه:
Setup Routes
بعد ذلك، سنقوم بإعداد مساراتنا التي يمكننا العثور عليها عند اتباع الرابط routes/web.php حيث أننا قمنا بالفعل بإعداد وحدات التحكم والمدققين للمشروع
'App\Http\Controllers'], function()
{
/**
* Home Routes
*/
Route::get('/', 'HomeController@index')->name('home.index');
Route::group(['middleware' => ['guest']], function() {
/**
* Register Routes
*/
Route::get('/register', 'RegisterController@show')->name('register.show');
Route::post('/register', 'RegisterController@register')->name('register.perform');
/**
* Login Routes
*/
Route::get('/login', 'LoginController@show')->name('login.show');
Route::post('/login', 'LoginController@login')->name('login.perform');
});
Route::group(['middleware' => ['auth']], function() {
/**
* Logout Routes
*/
Route::get('/logout', 'LogoutController@perform')->name('logout.perform');
});
});
لانشاء صفحات العرض يجب في البداية إنشاء مجلد (layouts) داخل المجلد /resources/views وملف auth-master.blade.php بداخلة ليصبح المسار الناتج هو resources/views/layouts/auth-master.blade.php
auth-master.blade.php
Signin Template · Bootstrap v5.1
@yield('content')
ايضا داخل مجلد (layouts) داخل المجلد /resources/views ننشيء ملف app-master.blade.php بداخلة ليصبح المسار الناتج هو
resources/views/layouts/app-master.blade.php
app-master.blade.php
Fixed top navbar example · Bootstrap v5.1
@include('layouts.partials.navbar')
@yield('content')
ثم ننشيء مجلد (partials) داخل المجلد resources/views/layouts و بداخلة ننشيء ملف ليصبح المسار الناتج هو
resources/views/layouts/partials/navbar.blade.php
navbar.blade.php
بعد ذلك ننشيء ملف جديد ليصبح المسار الناتج هو
resources/views/layouts/partials/messages.blade.php
messages.blade.php
@if(isset ($errors) && count($errors) > 0)
@foreach($errors->all() as $error)
- {{ $error }}
@endforeach
@endif
@if(Session::get('success', false))
@if (is_array($data))
@foreach ($data as $msg)
{{ $msg }}
@endforeach
@else
{{ $data }}
@endif
@endif
ثم ننشيء مجلد (auth) داخل المجلد resources/views و بداخلة ننشيء ملف ليصبح المسار الناتج هو
resources/views/auth/register.blade.php
register.blade.php
@extends('layouts.auth-master')
@section('content')
@endsection
ثم ننشيء ملف ليصبح المسار الناتج هو
resources/views/auth/login.blade.php
login.blade.php
@extends('layouts.auth-master')
@section('content')
@endsection
ثم ننشيء مجلد (partials )داخل مجلد (auth) داخل المجلد resources/views و بداخلة ننشيء ملف ليصبح المسار الناتج هو
resources/views/auth/partials/copy.blade.php
copy.blade.php
© {{date('Y')}}
ثم ننشيء مجلد (home ) داخل المجلد resources/views و بداخلة ننشيء ملف ليصبح المسار الناتج هو
resources/views/home/index.blade.php
index.blade.php
@extends('layouts.app-master')
@section('content')
@auth
Dashboard
Only authenticated users can access this section.
View more tutorials here »
@endauth
@guest
Homepage
Your viewing the home page. Please login to view the restricted data.
@endguest
@endsection
bootstrap
ثم نقوم بتنزيل ملفات bootstrap ولصقها في فولدر public/bootstrap
ووضع الروابط التالية في ملف app-master , auth-master
finish
ثم أعد تشغيل خادم التطبيق الخاص بك باستخدام الكود أدناه:
php artisan serve
تفضل بزيارة http://127.0.0.1:8000 على متصفحك لعرض مدونتك الجديدة.
Sharing to
Hi, of course this piece of writing is really nice and I have
learned lot of things from it concerning blogging. thanks.
It’s a shame you don’t have a donate button!
I’d certainly donate to this outstanding blog! I suppose for now i’ll settle
for book-marking and adding your RSS feed to my Google account.
I look forward to brand new updates and will talk about
this website with my Facebook group. Chat soon!
Thank you sir
When I initially commented I clicked the “Notify me when new comments are added” checkbox and now each
time a comment is added I get several emails with the same comment.
Is there any way you can remove people from that service?
Appreciate it!
هل يمكن تفسير اكثر عن الامر
I like the helpful info you provide to your articles.
I will bookmark your blog and take a look at once more right here regularly.
I am relatively sure I’ll learn many new stuff proper right here!
Best of luck for the next!
thank you for your support
Hi
I propose for sale handmade drawings transformed
into NFT, mostly beautiful unique and original mandalas.
Also some photos.
Feel free to contact me.
Thanks
Today, I went to the beach front with my children. I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She placed
the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear.
She never wants to go back! LoL I know this is totally off topic but I had to tell someone!
thank you