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

У меня есть страница профиля пользователя и страница профиля / настроек пользователя проблема в том, что я сделал промежуточное программное обеспечение для страницы настроек, чтобы запретить любому пользователю auth входить на страницу настроек других пользователей или обновлять их, если ID OR SLUG НЕ СООТВЕТСТВУЕТ пользователю auth, но я использую 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.info(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.

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

$request->input('slug')?
nice_dev 11.10.2018 18:53

@ vivek_23 вместо id я использовал slug

tuhiraye 11.10.2018 18:56

Я имел в виду заменить условие if этим и проверить снова - if ($request->input('slug') != auth()->user()->slug) {. Кроме того, если это API, который вы пытаетесь создать, вы должны возвращать ответ JSON вместо перенаправления в промежуточном программном обеспечении.

nice_dev 11.10.2018 18:59

@ vivek_23, как я могу обработать ответ от промежуточного программного обеспечения в моем vueApp?

tuhiraye 11.10.2018 19:10

Для этого вам также нужно будет показать свой контроллер.

nice_dev 11.10.2018 19:11

@ vivek_23 я редактировал вопрос проверьте пожалуйста

tuhiraye 11.10.2018 19:16

axios вызывает запрос на размещение /api/profile/${this.id}, каков пример результирующего URL?

Rob Biermann 11.10.2018 19:24

У вас должен быть правильный формат JSON для отправки в качестве ответа.

nice_dev 11.10.2018 21:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
142
1

Ответы 1

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

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

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

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

ну, я исправил, чтобы поставить .. все еще получаю ошибку 500

tuhiraye 11.10.2018 19:46

Другие вопросы по теме