Mujt Aba نشر 5 يوليو 2021 أرسل تقرير نشر 5 يوليو 2021 كيف يمكنني إضافة مستخدم وأجعله مديراً ثم يضيف (يسجل) المدير المستخدمين لقاعدة البيانات وبعدها كل مستخدم يستطيع تسجيل الدخول لصفحته بالعملومات التي انشئها المدير. بإختصار اي لا احعل عملية التسجيل عند المستخدم بل عند الإدارة. بإستخدام laravel 2 اقتباس
1 محمد أبو عواد نشر 5 يوليو 2021 أرسل تقرير نشر 5 يوليو 2021 بداية نحتاج الى الغاء عملية التسجيل والرابط الموجه لصفحة التسجيل, اذا كنت تستخدم حزمة laravel/ui يمكنك فعل ذلك من خلال الامر التالي في ملف web.php Auth::routes(['register' => false]); أما اذا كنت تستخدم jetstream يمكنك الغاء عملية التسجيل من خلال الذهاب الى ملف fortify.php الموجود ضمن المسار الآتي config/fortify.php ثم تقوم بعمل تعليق لهذا السطر Features::registration( بعد ذلك يمكننا انشاء حساب في قاعدة البيانات بشكل يدوي ونجعله مديرا اما باستخدام المساعد Tinker الذي يأتي بشكل تلقائي مع لارافيل أو يمكننا ذلك من خلال قاعدة البيانات بشكل يدوي, والآن يحتاج المدير الى لوحة تحكم يمكنه من خلالها التحكم في كافة أمور الموقع مثل اضافة وتعديل وحذف المستخدمين وغيرها من الأمور حيث يجب علينا تصميمها وبرمجتها , الآن اذا اراد مستخدم جديد التسجيل في الموقع يجب عليه أن يتواصل مع ادارة الموقع لكي توفر له حساب يتسطيع الدخول من خلاله, بعد ان يتم التواصل وانشاء الحساب سوف ترسل له ادارة الموقع معلومات الحساب ويستطيع الدخول من خلالها 1 اقتباس
1 بلال زيادة نشر 5 يوليو 2021 أرسل تقرير نشر 5 يوليو 2021 يمكنك إنشاء حقل باسم isAdmin و قيمته تكون أما 0 أي عضو , 1 أدمن , مدير, في جدول users $table->integer('isAdmin')->default(0); ومن ثم إنشاء Seeder لإضافة يوزر افتراضي للموقع عن طريق تنفيذ الأمر التالي php artisan make:seeder UserSeeder ثم تقوم بفتح هذا الملف من خلال المسار التالي database\seeds ومن ثم تقوم بإضافة بيانات اختبارية أو اليوزر الذي تود إنشائه عن تثبيت المشروع الخاص بك داخل ملف UserSeeder $user = \App\User::create([ 'name' => 'user', 'email' => 'user@user.com', 'password' => Hash::make('123123123'), 'phone' => '', 'isAdmin' => 1, ]); وتعطيه قيمة حقل isAdmin = 1 , ومن ثم تقوم بإنشاء ملف Controller لإضافة مستخدمين عن طريق الأمر التالي php artisan make:controller Admin\UsersController --resource ومن ثم بداخل هذا الملف نقوم بكتابة أكواد إضافة مستخدمين و تعديل مستخدم و حذف مستخدم فيمكن إضافة مستحدمين عن طريق الكود التالي /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $countries = Country::all(); return view('admin.users.create', compact('countries')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); $users = new User(); $users->name = $request->name; $users->email = $request->email; $users->phone = $request->phone; $users->password = \Hash::make($request->password); if($request->hasFile('image')){ $img = time() . '.' . $request->file('image')->getClientOriginalExtension(); $users->image = $img; $request->image->move(public_path('assets/users_img'), $img); } $users->save(); \Session::flash('alert-success', trans('lang.success_add')); return redirect()->route('users.index'); } وكامل الملف يكون <?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\User; use Illuminate\Support\Facades\Hash; use Str; class UsersController extends Controller { /** * Create a new controller instance. * * @return void */ public function __construct() { } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(UsersDataTable $users) { return view('admin.users.index'); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { return view('admin.users.create'); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); $users = new User(); $users->name = $request->name; $users->email = $request->email; $users->phone = $request->phone; $users->password = \Hash::make($request->password); if($request->hasFile('image')){ $img = time() . '.' . $request->file('image')->getClientOriginalExtension(); $users->image = $img; $request->image->move(public_path('assets/users_img'), $img); } $users->save(); \Session::flash('alert-success', trans('lang.success_add')); return redirect()->route('users.index'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show(Request $request, $id) { $user = User::find($id); if(! $request->ajax()){ return view('admin.users.show', compact('user')); }else{ return view('admin.users.modal.show', compact('user')); } } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $user = User::find($id); $users = User::all(); return view('admin.users.edit', compact('user', 'users')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email,' . $id], ]); $users = User::find($id); $users->name = $request->name; $users->email = $request->email; $users->phone = $request->phone; if($request->hasFile('image')){ $img = time() . '.' . $request->file('image')->getClientOriginalExtension(); $users->image = $img; $request->image->move(public_path('assets/users_img'), $img); } $users->save(); \Session::flash('alert-success', trans('lang.success_update')); return redirect()->route('users.index'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $user = User::find($id)->delete(); \Session::flash('alert-success', trans('lang.success_delete')); return redirect()->route('users.index'); } } ثم تقوم بإنشاء middleware للتحكم بالأعضاء للسماح لهم بالدخول إلى الملف أو لا عن طريق الأمر التالي php artisan make:middleware IsAdmin ثم نتوجه إلى المسار التالي لفتح الملف IsAdmin.php app\Http\Middleware ونقوم بوضع شرط معين إذا كان العضو الذي يريد الدخول إلى الصفحة قيمة الحقل isAdmin تساوي 1 يمكنه الدخول إلى هذه الصفحة public function handle($request, Closure $next) { if (auth()->guard('web')->user()->isAdmin == 1) { return $next($request); } else { return redirect('/404'); } //return $next($request); } فيكون كامل الملف <?php namespace App\Http\Middleware; use Closure; class IsAdmin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (auth()->guard('web')->user()->isAdmin == 1) { return $next($request); } else { return redirect('/404'); } //return $next($request); } } ثم نقوم بإضافة هذا Middleware الذي قمنا بإنشائه إلى ملف Kernel.php داخل المسار التالي app\Http إلى مصفوفة $routeMiddleware = []; بهذه الطريقة 'admin' => \App\Http\Middleware\IsAdmin::class, ثم نقوم بفتح ملف web.php و إضافة المسار إلى هذا الملف ويكون المسار Route::group(['middleware' => ['auth:admins'], 'prefix' => 'admin'], function(){ Route::resource('users', 'Admin\UsersController'); }); 1 اقتباس
السؤال
Mujt Aba
كيف يمكنني إضافة مستخدم وأجعله مديراً ثم يضيف (يسجل) المدير المستخدمين لقاعدة البيانات وبعدها كل مستخدم يستطيع تسجيل الدخول لصفحته بالعملومات التي انشئها المدير.
بإختصار اي لا احعل عملية التسجيل عند المستخدم بل عند الإدارة.
بإستخدام laravel
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.