PDA

View Full Version : چند auth مختلف



navid3d_69
سه شنبه 21 مرداد 1393, 11:48 صبح
سلام من یه سیستم دارم وبلاگ دهی هست


می خوام با لاراول بنویسم
برای قسمت auth ما 3 تا بخش جدا داریم میشه جوری این auth رو دستی نوشت یا مال خود لاراول رو تغییر دارد


یکی برای ادمین یکی برای وبلاگ ها و یکی برای یوزر های عادی


یا اینکه میشه 3 تا از این کلاس خود auth درست کرد و برای جا های مختلف استفاده کرد؟


اگر داکیومنتی مرتبط می شناسین میشه لینکش رو ارسال کنین ممنون میشم

2undercover
چهارشنبه 22 مرداد 1393, 09:33 صبح
http://laravel.io/forum/02-15-2014-multiple-user-types-with-different-tables-for-each-group

javantarh
چهارشنبه 22 مرداد 1393, 13:02 عصر
من این مشکل رو تا دیروز داشنم و حال نوشتن کلاس و تغییر کد جدید نداشتم یکم فکر کردم و نتیجه رو توی سایت لاراول هم گذاشتم کاملا هم تایید شد .

شما یک ستون به اسم permision اضافه کن و بعد از اون وفتی داری کلاس لاگین کاربر رو مینویسی یک سشن با permision اون کاربر بساز و بعد از اون توی روت از فیلتر ها استفاده کن که اگر سشن ایجاد شده مثلا user نبود به این دایرکتوری راهی نداشته باشه .



if (Auth::attempt($userdata)) {

// validation successful! // redirect them to the secure section or whatever // return Redirect::to('secure'); // for now we'll just echo success (even though echoing in a controller is bad)

$userPermision = User::where('email', '=', Input::get('email'))->first();

Session::put('permision', $userPermision->permision);


return Redirect::route('dashboard');

}

navid3d_69
چهارشنبه 22 مرداد 1393, 14:29 عصر
با این روشی که شما میگین نمیشه چون سیستم پیچیده تر هست

ببینین من 3 دسته کاربر دارم

یکی ادمین که فعلا میگیم کلا چند ادمین با دسترسی کامل و قسمت دسترسی نداره ولی بعدا اضافه میشه

یکی کاربر معمولی که مثلا تیکت می زنن و ....

یکی مدیران وبلاگ و نویسنده های وبلاگ که این ها دسترسی های متفاوت دارن و یکی از مشکلات ایجاست که دسترسی مدیران بصورت گروه نباید باشه باید هر مدیر بصورت جدا دسترسی هاش معلوم باشه
و اینکه یک نویسنده می تونه توی تعداد نا محدودی وبللگ نویسنده و اینکه یک مدیر وبلاگ میتونه هر چند ولاگ می خواهد بسازد

این سیستم با mvc نوشته شده بود بصورت ساده ولی می خوام روی لاراول پیاده سازی کنم و می خوام از کلاس auth خود لاراول استفاده کنیم یا کلاس هایی مثل اون

2undercover
چهارشنبه 22 مرداد 1393, 15:18 عصر
https://github.com/ollieread/multiauth

navid3d_69
چهارشنبه 22 مرداد 1393, 15:29 عصر
ممنون این رو دیدم فعلا بهترین چیزی که مشکل من رو حل می کنه همین multiauth هست ولی دنبالم اینم ببینم راه دیگه هم هست اگر پیدا نکنم با همین کار می کنم

farzadyazdan
پنج شنبه 23 مرداد 1393, 23:42 عصر
سلام
دوست عزیز به این روش Multi-tenant گفته میشه که در اون شما یک application دارید که وقتی هر کاربر لاگین میکنه فقط به اطلاعاتی که خودش ایجاد کرده دسترسی داشته باشه پیشنهاد میکنم این مقاله (http://culttt.com/2014/03/31/multi-tenancy-laravel-4/)رو مطالعه کنید
در ضمن نویسنده مقاله یک application هم ساخته که از این روش در اون استفاده کرده که میتونید از github دانلود کنید

rahahost
یک شنبه 09 شهریور 1393, 18:14 عصر
ممنون این رو دیدم فعلا بهترین چیزی که مشکل من رو حل می کنه همین multiauth هست ولی دنبالم اینم ببینم راه دیگه هم هست اگر پیدا نکنم با همین کار می کنم

سلام .

یکی از دوستان قبلا یه روش گفته بود( خودمم توش مونده بودم ) که با یه روشی حلش کردم .

شما درون تیبل کاربران یه دونه فیلد با هر اسمی که دلت میخواد ایجاد کن ( مثلا role ) که درونش مقدار هایی مثله Admin , moderator , user و... رو میگیره .

حالا یه فیلتر بساز ، مثلا به این شکل ( البته من یه کار اضافی هم کردم : کاربری که فعال نیست رو هم بهش اجازه دسترسی ندادم ) :




Route::filter('RoleAdminModerator', function()
{

if (Auth::check() === false)
{
return Redirect::to('login');
}

if(Auth::check())
{
$active = Auth::user()->active;
$role = Auth::user()->role;
if($active == 1)
{
if($role != "admin")
{
return 'شما اجازه دسترسی به این بخش را ندارید .';
}
}
else
{
return 'حساب کاربری شما فعال نیست ، لطفا با مدیریت تماس بگیرید .';
}
}


});



حالا درون کنترلرهات این فیلتر رو درون __construct() قرار بده :





public function __construct()
{
$this->beforeFilter('RoleAdminModerator', array('on' => 'get'));
}



حالا برای هر کنترلر میتونی از همین استفاده کنی :)

afee1990
سه شنبه 18 شهریور 1393, 14:32 عصر
کلن کار پکیج Auth اعتبارسنجی کاربره و براش مهم نیست که کاربر قراره چه نقشی داشته باشه. حالا شما فقط می‌تونی با ایجاد یه فیلد توی جدول userات و یا ایجاد ساختار User-Role-Permission که شامل 6 تا جدول میشه این قضیه رو پیاده‌سازی کنی. و این فیلترها هستن که میتونن اجازه یا عدم دسترسی به یک بخشو توش پیاده کرد. برای حل مشکلت می تونی از پکیج Zizaco/Entrust استفاده کنی که تا حد قابل توجهی مشکلتو حل می‌کنه.