Как я могу обновить сообщение в laravel, используя formData? - PullRequest
0 голосов
/ 23 марта 2020

, поэтому я работаю в социальной сети, и я хочу, чтобы после того, как сообщение было готово, можно было его редактировать, но у меня появляется ошибка:

message: "This action is unauthorized."

мне кажется чем-то простым, Я получаю информацию в компоненте, отправляю ее через вызов ax ios, который проходит по определенному мною маршруту, и он просто идет к контроллеру и оттуда к сервису, но я должен что-то упустить, чего я не знаю, что это. Любая подсказка очень ценится, так как я немного схожу с ума ...

это будет функция в компоненте:

 editPost() {
      let formData = new FormData();
      let headers = { headers: { "Content-Type": "multipart/form-data" } };
      let updatedPost = this.post_to_update;
      formData.append("post", updatedPost.description);
      formData.append("file", this.file);
      formData.append("video_link", updatedPost.video_link);
      axios
        .post("/posts/update/" + updatedPost.id, formData, headers)
        .then(response => {
          updatedPost.attach_file = response.data.attach_file;
          updatedPost.id = response.data.id;
          serverBus.$emit("post_edited", updatedPost);
        });

      this.file = "";
      this.post_to_update = {
        id: "",
        index: null,
        description: "",
        attach_file: "",
        video_link: "",
        name: this.profile_info.name,
        surname_1: this.profile_info.surname_1,
        surname_2: this.profile_info.surname_2,
        nick: this.profile_info.nick,
        picture: this.profile_info.picture,
        id_rol: this.profile_info.id_rol,
        time_ago: "0 minutes",
        code: this.profile_info.code
      };
      $("#EditModal").modal("hide");
    },

это веб. php:

########################################################################################################################
# Post Routes
########################################################################################################################
Route::post('/posts/recommend', 'PostController@recommend')
    ->name('recommendPost');

Route::post('/posts/update/{id}', 'PostController@update');

Route::post('/posts/report', 'PostController@report')
    ->name('reportPost');

Route::get('/posts/{post}/comments', 'PostController@retrieveComments')
    ->where('post', '[0-9]+')
    ->name('commentsByPost');

Route::resource('/posts', 'PostController')
    ->only(['index', 'store', 'update', 'destroy']);

Route::get('/reportedPosts', 'PostController@reportedPosts');

Контроллер:

    public function update(StorePostRequest $request, $post_id)
    {
        return $this->postService->updatePost($request, $post_id);
    }

и сервис:

    public function updatePost(StorePostRequest $request, $post_id)
    {
        $post_to_update = Post::where('id', $post_id)->first();
        $post_to_update->description  = $request->post;
        $post_to_update->attach_file  = $request->file ? $filename = sha1(time()) : null;
        $post_to_update->file_name    = $request->file ? $request->file->getClientOriginalName() : null;
        $post_to_update->file_type    = $request->file ? $request->file->getClientOriginalExtension() : null;
        $post_to_update->save();
        if ($request->file) {
            Storage::disk('s3')->putFileAs('storage/user_uploads/post_files/' . $post_to_update->id, $request->file, $filename, 'public');
            Storage::disk('local')->putFileAs('public/user_uploads/post_files/' . $post_to_update->id, $request->file, $filename, 'public');
        }
        return $post_to_update;
    }

1 Ответ

0 голосов
/ 23 марта 2020

Я думаю, что StorePostRequest class вызывает блокировку авторизации пользователя.

Попробуйте добавить следующие строки в StorePostRequest, чтобы пройти проверку авторизации.

public function authorize()
{
     return true;   //Default false;
}
...