Промежуточное ПО настроек профиля - PullRequest
0 голосов
/ 11 октября 2018

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

middleware:

 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 Ответ

0 голосов
/ 11 октября 2018

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

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

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

return response()->json(['error' => 'unauthorized'], 401);
...