سلام وقت بخیر
در ابتدا چک میکنم که آیا چنین کاربری به چنین دوره ای دسترسی دارد یا خیر!
$order = Orders::where(['workshop_id' => $workshop_id , 'user_id' => Auth::user()->id])->firstOrFail();
$is_accessible = $order->order_status;
بعد از اون باید چک کنم فایلی که درخواست دانلودش داده شده متعلق به این دوره هست یا خیر!
$topic = Topic::where(['workshop_id' => $workshop_id , 'file_id' => $file_id])->firstOrFail();
در نهایت اگر هر دو شرط بالا برقرار بود اجازه دانلود داده شود.
if ($is_accessible && $topic) {
$file_item = File::find($file_id);
return response()->download( $file_item->file_url );
}else{
dd('شما دسترسی به این فایل ندارید');
}
طبق این روش نیاز هست دو پارامتر به روتر داده شود یکی fileid و دیگری workshopid که متاسفانه به ارور 404 برخورد میکنم.
Route::get('/download/{workshop_id}/{file_id}', 'Admin\FilesController@download')->name('download');
<a href="{{ Route('download' , [$Workshop->id,$val->id]) }}" class="btn btn-downlowd">دانلود</a>
دلیل ارور 404 چیست؟
پیشنهاد شما برای احرازهویت دانلود چیست؟ راهکار های بهتر خودتون رو لطفا به اشتراک بزارید.
متشکرم
متد firstOrFail()
دنبال اولین نتیجه می گردد اگر پیدا نکرد به شما اررور از تایپ Illuminate\Database\Eloquent\ModelNotFoundException
که اگر کنترل نشود از طرف لاراول اررور 404 نمایش داده می شود.
@msdabbagh
@websaz
احسنت حل شد! اما چرا؟
این روش من همچیش به نظرم خوبه به جز اینکه با Adm نمیشه دانلود کرد.
متد firstOrFail()
دنبال اولین نتیجه می گردد اگر پیدا نکرد به شما اررور از تایپ Illuminate\Database\Eloquent\ModelNotFoundException
که اگر کنترل نشود از طرف لاراول اررور 404 نمایش داده می شود.
@msdabbagh
الان در اینجا یا order پیدا نمی شود یا topic که می توانید با استفاده از dd این رو تست بگیرید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟