Промежуточное ПО настроек профиля

У меня есть страница профиля пользователя и страница профиля пользователя / настроек, проблема в том, что я сделал промежуточное программное обеспечение для страницы настроек, чтобы любой авторизованный пользователь не заходил на страницу настроек других пользователей или не обновлял их, если только для аутентифицированного пользователя не подходит ID или SLUG. Я использую Vue всякий раз, когда я использую маршруты API для извлечения или обновления данных, которые он говорит, неавторизованные 401 или 500.

промежуточное ПО:

 public function handle($request, Closure $next)
    {
         if ($request->slug != auth()->user()->slug) {
            return redirect()->to('/');
        }
        return $next($request);
    }

API-маршрут:

Route::get('/profile/{slug}','ProfilePrivateController@show')->middleware('editProfile');;

VueJs:

 update(){
            axios.put(`/api/profile/${this.id}`,{
                email : this.email,
                username : this.name,
                password : this.password,
                education_level : this.education_level,
                fb_url : this.fb_url,
                twitter_url : this.twitter_url,
                field : this.field
            })
            .then(res=>console.log(res))
        }

Контроллер:

 public function show($slug)
    {
         $user = User::findBySlugOrFail($slug);

         return response()->json($user);
    }


    public function update(Request $request, $slug)
    {
        $user = User::findBySlug($slug);

        $user->update([
            'email'=>$request->email,
            'education_level'=>$request->education_level,
            'field'=>$request->field,
            'school'=>$request->school,
            'fb_url'=>$request->fb_url,
            'twitter_url'=>$request->twitter_url,

        ]);
        if($request->has('password')){
            $user->save([
                'password'=>$request->password
            ]);
        }

        return response()->json('user updated',200);



    }

Я хочу позволить пользователю обновлять свои настройки и одновременно защищать API.

Я действительно потерян в этой точке Любая помощь приветствуется!

1 ответ

У вас есть запрос GET для маршрута API, но вы используете запрос PUT в Vue.

обновление Route::get в Route::put должен решить проблему.

Кроме того, поскольку это AJAX-запрос, вы должны возвращать JSON-ответ, чтобы его можно было легко использовать. Вы можете вернуть что-то похожее на:

return response()->json(['error' => 'unauthorized'], 401);
Другие вопросы по тегам