Size: a a a

2020 August 29

VU

Vlad Umrikhin in Laravel Pro
Добрый, при сохранение модели с полем хранящем Id другой таблицы, по хорошему же нужно делать проверку?
'library_id' => $request->library_id

Один из вариантов, до формирования массива, проверить существование, черед Library::find($request->library_id)...может есть красивый краткий способ?
источник

VU

Vlad Umrikhin in Laravel Pro
Уже понял кажется, сохранять нужно не объект, а вызвать связь от Library, она же вызовет 404, если неверный id
источник

EG

Egor Gruzdev in Laravel Pro
Vlad Umrikhin
Добрый, при сохранение модели с полем хранящем Id другой таблицы, по хорошему же нужно делать проверку?
'library_id' => $request->library_id

Один из вариантов, до формирования массива, проверить существование, черед Library::find($request->library_id)...может есть красивый краткий способ?
источник

VU

Vlad Umrikhin in Laravel Pro
Благодарю!
источник

IT

Igor Tarasov in Laravel Pro
А Auth::check() и Auth::id() можно считать эквивалентом для понимания, что пользователь авторизовался?  

Не понимаю зачем нужен Auth::check()
источник

EG

Egor Gruzdev in Laravel Pro
Igor Tarasov
А Auth::check() и Auth::id() можно считать эквивалентом для понимания, что пользователь авторизовался?  

Не понимаю зачем нужен Auth::check()
теоретически авторизация может быть и без сущности пользователя
источник

IT

Igor Tarasov in Laravel Pro
Egor Gruzdev
теоретически авторизация может быть и без сущности пользователя
Это как? Кто же тогда авторизован? Или имеете в виду, что другая сущность просто вместо пользователя?

У меня, кстати, случай, когда нужно быть уверенным, что форму заполняет именно пользователь. Запись не может создастся без created_by.
источник

EG

Egor Gruzdev in Laravel Pro
Igor Tarasov
Это как? Кто же тогда авторизован? Или имеете в виду, что другая сущность просто вместо пользователя?

У меня, кстати, случай, когда нужно быть уверенным, что форму заполняет именно пользователь. Запись не может создастся без created_by.
тогда тебе не Auth::id(), а $post->created_by = $request->user()->id
хоть по сути одно и тоже, но меньше магии
источник

IT

Igor Tarasov in Laravel Pro
Egor Gruzdev
тогда тебе не Auth::id(), а $post->created_by = $request->user()->id
хоть по сути одно и тоже, но меньше магии
По сути да. Но я это делаю ::create($request->all() + ['created_by' => Auth::id()]); Одно и тоже же.
источник

IT

Igor Tarasov in Laravel Pro
Egor Gruzdev
тогда тебе не Auth::id(), а $post->created_by = $request->user()->id
хоть по сути одно и тоже, но меньше магии
А в методе edit я проверку делаю, что документ редактирует тот, кто его создал
       if(Auth::id()!=$doc->created_by)
        abort(403, 'Unauthorized.');
источник

EG

Egor Gruzdev in Laravel Pro
Igor Tarasov
А в методе edit я проверку делаю, что документ редактирует тот, кто его создал
       if(Auth::id()!=$doc->created_by)
        abort(403, 'Unauthorized.');
для этого нужно использовать Policy, тогда проверку можно будет сделать на уровне маршрута
источник

IT

Igor Tarasov in Laravel Pro
Egor Gruzdev
для этого нужно использовать Policy, тогда проверку можно будет сделать на уровне маршрута
Показалось, что из-за двух строк кода городить Policy как-то перебор. Разве в этом случае есть разница?
источник

EG

Egor Gruzdev in Laravel Pro
Igor Tarasov
Показалось, что из-за двух строк кода городить Policy как-то перебор. Разве в этом случае есть разница?
Если без Policy то в FormRequest в методе authorize, т.е. если у тебя работает binding, то можно будет проверить:

return $this->route('post')->created_by === $this->user()->id
источник

IT

Igor Tarasov in Laravel Pro
Egor Gruzdev
Если без Policy то в FormRequest в методе authorize, т.е. если у тебя работает binding, то можно будет проверить:

return $this->route('post')->created_by === $this->user()->id
У меня и FormRequest нет. Зачем он мне?

Всё в Контроллере.

   /
    * Show the form for editing the specified resource.
    *
    * @param  \App\Doc  $doc
    * @return \Illuminate\Http\Response
    */
   public function edit(Doc $doc)
   {
       //
       if(Auth::id()!=$doc->created_by)
        abort(403, 'Unauthorized.');
       
       return view('docs.create',compact('doc'))->with('action', route('docs.update',$doc->fname)); //view('docs.edit',compact('doc'));
   }

   /
@param  \App\Doc  $doc
    * @return \Illuminate\Http\Response
    */
   public function edit(Doc $doc)
   {
       //
       if(Auth::id()!=$doc->created_by)
        abort(403, 'Unauthorized.');
       
       return view('docs.create',compact('doc'))->with('action', route('docs.update',$doc->fname)); //view('docs.edit',compact('doc'));
   }

   /
    * Update the specified resource in storage.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \App\Doc  $doc
    * @return \Illuminate\Http\Response
    */
   public function update(Request $request, Doc $doc)
   {
       //
       if(Auth::id()!=$doc->created_by)
        abort(403, 'Unauthorized.');
       
       $this->doc = $doc;
       $this->validateRequest($request);

       $doc->update($request->all());

       return redirect()->route('docs.index')
                       ->with('message','Document updated successfully');
   }
источник

AY

Artyom Yun in Laravel Pro
Алексей Гевондян
нуу, и тут вероятнее всего дело в том, что английский на уровне 5 класса школы остался - поэтому проблема с докой)
Айлтс 6.9
источник

EG

Egor Gruzdev in Laravel Pro
Igor Tarasov
У меня и FormRequest нет. Зачем он мне?

Всё в Контроллере.

   /
    * Show the form for editing the specified resource.
    *
    * @param  \App\Doc  $doc
    * @return \Illuminate\Http\Response
    */
   public function edit(Doc $doc)
   {
       //
       if(Auth::id()!=$doc->created_by)
        abort(403, 'Unauthorized.');
       
       return view('docs.create',compact('doc'))->with('action', route('docs.update',$doc->fname)); //view('docs.edit',compact('doc'));
   }

   /
@param  \App\Doc  $doc
    * @return \Illuminate\Http\Response
    */
   public function edit(Doc $doc)
   {
       //
       if(Auth::id()!=$doc->created_by)
        abort(403, 'Unauthorized.');
       
       return view('docs.create',compact('doc'))->with('action', route('docs.update',$doc->fname)); //view('docs.edit',compact('doc'));
   }

   /
    * Update the specified resource in storage.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \App\Doc  $doc
    * @return \Illuminate\Http\Response
    */
   public function update(Request $request, Doc $doc)
   {
       //
       if(Auth::id()!=$doc->created_by)
        abort(403, 'Unauthorized.');
       
       $this->doc = $doc;
       $this->validateRequest($request);

       $doc->update($request->all());

       return redirect()->route('docs.index')
                       ->with('message','Document updated successfully');
   }
ты жесток
источник

С

Степан in Laravel Pro
Egor Gruzdev
ты жесток
ох да
источник

IT

Igor Tarasov in Laravel Pro
Egor Gruzdev
ты жесток
Я только учусь. Ну правда не вижу смысла размазывать. Эти строки работают.
источник

AY

Artyom Yun in Laravel Pro
Дмитрий Кожанов
Не будет он ее читать
Я ее читаю
источник

AY

Artyom Yun in Laravel Pro
И книгу тоже
источник