گیت (Gate)یک قابلیتی است برای اعتبار سنجی دسترسی که با ان میتوان چک کرد که ایا این کاربر اجازه دارد
این کار را انجام بدهد یا نه
گیت در فارسی به معنای دروازه است
گیت ها را میتوان در فایل AuthServiceProvider که مسیر ان App->Providers میباشد و در ان فایل دو متد وجود دارد که ما گیت های خود را در متد boot تعریف میکنیم
برای استفاده از گیت باید فساد ان را اد کنیم تا بتونیم استفاده کنیم
در جای name، نام گیت مورد نظر خود را مانند edit-user می نویسیم .با فراخوانی گیت مورد نظر تابع ناشناس اجرا وباید یک مقدار true یا false را برگرداند
توجه کنید گیت ها فقط در صورتی کار میکنن که کاربر لوگین شده باشد
و اینکه در پارامتر اول کاربر لوگین شده به صورت پیش فرض فرستاده می شود و ما می توانیم از ان استفاده کنیم
در Gate یک متدی به نام allows وجود دارد که با استفاده از ان می توان چک کرد که کاربر اجازه این کار را دارد یا نه
خب همان طور که گفته بودم گیت ها مقدار true یا false پس از if برای تست استفاده میکنیم
در عکس بالا اگه کاربر دسترسی داشته باشه به این بخش کد های درونif و اگه نداشته باشه صفحه 403 نشون داده میشه
خب بالا گفته بودم که خود گیت توی اولین پارامتر کاربر لوگین شده رومیفرسته حالا ما برای اینکه یک پارامتر دلخواه ارسال کنیم و بتونیم ازش استفاده کنیم از روش زیر استفاده میکنم
مثل عکس بالا پارامتر دوم رو توی تابع ناشناس اضافه میکنیم و حالا برای اینکه به اون مقداری رو ارسال کنیم
مثل عکس زیر یک پارامتر به متد allows اضافه میکنیم
حالا برای اینکه یک پارامتر دیگه هم بفرسیتم نمی تونیم از روش بالا استفاده کنیم باید پارامتر هارو توی یه ارایه بفرستیم مثل عکس زیر
و دریافت ان هم به شکل زیر هست
حالا میخایم به صورت مثال یک گیت بسازیم وچک کنیم کاربری که لوگین کرده اجازه داره این پست رو تغییر بده یا نه
خوب اول یک گیت تعریف میکنیم با اسم edit-post و دو پارامتر دریافت میکنیم اولیش کاربر لوگین شده و دومی اطلاعات پست و حالا داخل تابع ناشناسه چک میکنیم که ایا این پست برای این کاربر هست یا نه
و حالا میایم از گیتی ک ساختیم استفاده میکنیم
خب میرسیم به روش هایی که میتونیم از گیت استفاده استفاده کنیم
روش بالا من متد allwos رو گفتم و یک متد داریم برعکس اون به اسم denies روش استفاده اش هم مثل allows
روش بعدی authorize هست که فقط در کنترلر ها می شه ازش استفاده کرد
در صورتی که کاربر دسترسی نداشته باشه ارور403 نشون داده میشه
روش بعدی can هست که با استفاده از auth اون رو استفاده میکنیم و اینکه این روش مثل روش allows فقط true و false بر میگردونه
همچنین از can می تونیم توی blade هم استفاده کنیم
درضمن can هم مثل allows برعکس میشه با @cannot
فعلا :)