negar_a 1 گزارش دادن ارسال شده در اسفند 98 با سلام . مبحث آموزش لاراول رو تا قسمت 24 دیدم . خیلی خوب بود . ممنون. فقط با منطق عضویت کاربر و مدیر مشکل دارم . در هنگام ثبت کاربر و مدیر جدید ، شما پیش فرض role = 2 یعنی کاربر قرار میدید و در db بصورت دستی ، مدیر رو role =1 ادیت کردید. سوال : ایا نباید فرم ثبت نام کاربر و مدیر جداگانه باشه . و همچنین فرم لاگین این دو تفکیک بشه ؟ چون بصورت منطقی نباید فرم لاگین مدیریت در دسترس همه باشه . همچنین میخوام فرم ثبت نام این دو رو هم جدا کنم . برای کاربران سایت مشخصه در داخل سایت فرم ثبت نام رو ساختید . برای کاربرانی که نقش مدیریت دارند این فرم رو کجا قرار بدیم تا برای بار اول ثبت نام کنند ؟ من احساس میکنم سه قسمت لازم داریم : front back و یک فرم هم مخصوص ثبت نام کاربران با نقش مدیریت . ممنون میشم در مورد پیاده سازی این توضیح بدید و اینکه به چه شکل جدا کنم . چون نیاز به دو auth داریم . نقل قول Share this post Link to post Share on other sites
ابوالفضل طالبی 441 گزارش دادن ارسال شده در اسفند 98 شما میتونید برای ثبت نام دو route تعریف کنید و هر کدام متدهای ثبت نام خودش را داشته باشد اما route مورد نظر برای ثبت نام ادمین ها نباید به راحتی قابل دسترسی توسط کاربران باشه اما پیشنهاد من این هست که در همان ابتدا و از طریق همان دیتابیس یک نفر ادمین اصلی شده و سپس در بخش مدیریت هر کاربری که مایل بودید افزایش دسترسی بدید و مدیرش کنید 1 نقل قول Share this post Link to post Share on other sites
negar_a 1 گزارش دادن ارسال شده در اسفند 98 پس بنظرتون نیاز به دو جدول جدای user و admin نداریم . user همان کاربرهای ثبت نامی سایت . admin مدیران سایت. و نیازی به ایجاد دو پوشه ی auth جداگانه نیست ؟ نقل قول Share this post Link to post Share on other sites
ابوالفضل طالبی 441 گزارش دادن ارسال شده در اسفند 98 به هیچ وجه نیازی نیست ، اصولی هم نیست شما تنها با یک فیلد نقش هر کاربری را مشخص کنید 2 نقل قول Share this post Link to post Share on other sites
negar_a 1 گزارش دادن ارسال شده در اسفند 98 در 15 دقیقه قبل، ابوالفضل طالبی گفته است : به هیچ وجه نیازی نیست ، اصولی هم نیست شما تنها با یک فیلد نقش هر کاربری را مشخص کنید ممنونم ازتون. پاسختون برای ایجاد دو جدول بود درسته ؟ اما نیاز به دو پوشه ی auth داریم؟ یک auth در پوشه ی ادمین و یک auth برای کاربران سایت ؟ تا رجیسترها و لاگین ها تداخل پیدا نکنند . درسته ؟ نقل قول Share this post Link to post Share on other sites
negar_a 1 گزارش دادن ارسال شده در اسفند 98 من یک پوشه auth در پوشه ی ادمین در کنترلر گزاشتم . ولی نمیتونه اجرا کنه و خطای target class not exist میده . نحوه ی نوشتن و منطق کارم صحیحه ؟ Route::group(['namespace' => 'Admin' , 'prefix' => 'admin'],function (){ .................... ................... Route::group(['namespace' => 'Auth'],function (){ Route::Get('register', 'RegisterController@showRegistrationForm')->name('register'); Route::Post('register', 'RegisterController@register'); }); }); نقل قول Share this post Link to post Share on other sites
ابوالفضل طالبی 441 گزارش دادن ارسال شده در اسفند 98 ببینید کلا نوشتن دو تا رجیستر و لاگین جدا منطقی نیست و اصولی هم نیست همانطور که قبلا هم گفتم: در 23 ساعت قبل، ابوالفضل طالبی گفته است : در همان ابتدا و از طریق همان دیتابیس یک نفر ادمین اصلی شده و سپس در بخش مدیریت هر کاربری که مایل بودید افزایش دسترسی بدید و مدیرش کنید تمام سیستم های مدیریت محتوا مثل وردپرس یا جوملا هم نگاه کنید همینطور هست و هیچکدام صفحه ی ثبت نام جداگانه ای برای ادمین و یوزر ندارند و کمتر برنامه نویسی ممکنه اینکار رو انجام بده اما برای برخی نوع سایت ها مثل market place ها یک تفاوت کوچک وجود دارد و آن هم این است که فیلدهای فرم ثبت نام برای فروشنده و کاربر ممکن است متفاوت باشد اما در عمل فقط یک متد ثبت نام برای همه وجود دارد به عنوان مثال شما تو بعضی سایت ها میبینید که دو تا گزینه برای ثبت نام هست به این صورت : ثبت نام - میخواهم فروشنده شوم اگر کاربری گزینه ی میخواهم فروشنده شوم کلیک کنه فیلدهای بیشتری برای ثبت نام ظاهر میشه در حالی که گزینه ی ثبت نام معمولی فیلدهای کمتری داره ولی باز هم عملیات ثبت نام فقط و فقط توسط یک متد انجام میشه 1 نقل قول Share this post Link to post Share on other sites
negar_a 1 گزارش دادن ارسال شده در اسفند 98 نقل قول شما میتونید برای ثبت نام دو route تعریف کنید و هر کدام متدهای ثبت نام خودش را داشته باشد اما route مورد نظر برای ثبت نام ادمین ها نباید به راحتی قابل دسترسی توسط کاربران باشه من متوجه شدم که نباید بصورت جداگانه جدول طراحی کرد . فقط سوالم در مورد این قسمت از صحبت شماست که نقل قول کردم . برای پیاده سازی چیزی که میفرمایید باید دو auth جداگانه بسازیم ؟ فقط میخوام فرم لاگین ادمین و کاربر رو جدا کنم . نقل قول Share this post Link to post Share on other sites
ابوالفضل طالبی 441 گزارش دادن ارسال شده در اسفند 98 بله اما کل روند auth نیاز نیست دو تا بشه فقط یه کنترلر اضافه بنویسید کافی هست برای بخش ثبت نام ادمین ها یک route که به صورت پیشفرض برای ثبت نام کاربر هست مربوط به کاربران میشه هیچ یک route هم خودتون مشابه RegisterController ایجاد کنید و متد create مینویسید داخلش مخصوص ثبت نام ادمین ها یک Middleware هم میسازید که موقع لاگین شدن چک کنه ادمین هست یا یوزر و بر اساس نقش به صفحه ای که میخاید redirect کنید 1 نقل قول Share this post Link to post Share on other sites
negar_a 1 گزارش دادن ارسال شده در اسفند 98 ممنونم . و یک سوال دیگه . پس مبحث multi auth برای چه مواقعی استفاده میشه ؟ مثلا اگر یک فروشگاه اینترنتی داشته باشیم . که مدیران سایت مسوول ثبت محصولات و ... هستند و کاربران سایت ، ثبت اطلاعات خود و خرید محصول رو انجام میدن ، باز باید از روش شما استفاده کرد ؟ نقل قول Share this post Link to post Share on other sites
ابوالفضل طالبی 441 گزارش دادن ارسال شده در اسفند 98 بحث multi auth همان چیزی است که در آموزش ویدیویی آموزش دادم و با middle ware ها و برررسی فیلد role بر اساس نقش کاربر ، هدایتش میکنیم به صفحه ای که میخایم و یا دسترسی ها رو محدود میکنیم چیزی که شما میگید ساختن صفحه ی رجیستر و لاگین جداگانه است برای ادمین و یوزر 1 نقل قول Share this post Link to post Share on other sites
negar_a 1 گزارش دادن ارسال شده در اسفند 98 من طبق گفته شما یک صفحه ی لاگین مشترک برای ادمین و یوزر ساختم . میخوام اگر ادمین بود ، بعد از لاگین به صفحه ی admin panel ریدایرکت بشه و اگه کاربر بود به صفحه ی home از سایت ریدایرکت بشه . چون یک logincontroller داریم این کد اجرا میشه . protected $redirectTo = '/home'; در middleware هم این کد منطقی نیست و جواب نمیده . public function handle($request, Closure $next) { if(auth()->check() && auth()->user()->level == 'admin'){ return redirect('panel'); } if(auth()->check() && auth()->user()->level == 'user'){ return redirect('home'); } } نقل قول Share this post Link to post Share on other sites
Special_One 57 گزارش دادن ارسال شده در اسفند 98 سلام وقت بخیر شما برای اینکار نیاز به یادگیری php دارید با یک شرط ساده میتونید کاربران با نقش های مختلف رو به صفحات جداگانه منتقل کرد مثال if(auth()->check() && auth()->user()->role == '1'){ return redirect(route('loginModir')); } if(auth()->check() && auth()->user()->level == '2'){ return redirect(route('loginNevisande')); } if(auth()->check() && auth()->user()->level == '3'){ return redirect(route('loginKarbar')); } 1 نقل قول Share this post Link to post Share on other sites
negar_a 1 گزارش دادن ارسال شده در اسفند 98 با این کد به نتیجه رسیدم . در میدلور checkRole public function handle($request, Closure $next) { if(auth()->check() && auth()->user()->level != 'admin'){ return redirect('home'); } return $next($request); } در logincontroller protected $redirectTo = 'admin/panel'; نقل قول Share this post Link to post Share on other sites
negar_a 1 گزارش دادن ارسال شده در اسفند 98 در 9 ساعت قبل، Special_One گفته است : سلام وقت بخیر شما برای اینکار نیاز به یادگیری php دارید با یک شرط ساده میتونید کاربران با نقش های مختلف رو به صفحات جداگانه منتقل کرد مثال if(auth()->check() && auth()->user()->role == '1'){ return redirect(route('loginModir')); } if(auth()->check() && auth()->user()->level == '2'){ return redirect(route('loginNevisande')); } if(auth()->check() && auth()->user()->level == '3'){ return redirect(route('loginKarbar')); } شما این کد رو در میدلور chekcRole امتحان کردید ؟ جواب گرفتید ؟ چون من به این شکل نوشتم جواب نداد نقل قول Share this post Link to post Share on other sites
saber 143 گزارش دادن ارسال شده در اسفند 98 در 17 ساعت قبل، negar_a گفته است : شما این کد رو در میدلور chekcRole امتحان کردید ؟ جواب گرفتید ؟ چون من به این شکل نوشتم جواب نداد لاراول یه متد به اسم authenticated داره که میتونید این متد رو در کنترلر LoginController اورراید کنید و براحتی ورودی کاربران رو طبق نقشی که دارن کنترل کنید. کدش به شکل زیر میشه protected function authenticated(Request $request, $user) { if ($user->role=='admin'){ $this->redirectTo = '/adminRoute'; }else{ $this->redirectTo = '/userRote'; } } 1 نقل قول Share this post Link to post Share on other sites
Special_One 57 گزارش دادن ارسال شده در اسفند 98 در در ۱۳۹۸/۱۲/۲۱ در 09:31، negar_a گفته است : شما این کد رو در میدلور chekcRole امتحان کردید ؟ جواب گرفتید ؟ چون من به این شکل نوشتم جواب نداد ببینید اگر middleware بعد از ساختن در kernel اضافه نکنید نمیتونید استفاده کنید 1 نقل قول Share this post Link to post Share on other sites