Нужно ли проверять авторизацию для каждого маршрута веб-приложения? - PullRequest
0 голосов
/ 21 февраля 2019

У меня вопрос по тестированию покрытия.Я разрабатываю базовое приложение CRUD, которое имеет определенные правила доступа.Аутентифицированные пользователи могут создавать / редактировать формы и разрешать другим пользователям редактировать или просматривать доступ к форме.Что мне интересно, так это то, что я должен написать функциональный тест для каждого возможного сценария авторизации, например:

  • Гость не может редактировать форму
  • Пользователь может редактировать свою форму
  • Пользователь не может редактировать форму других пользователей
  • Пользователь может редактировать форму других пользователей, у которых есть доступ «edit» к
  • Пользователь не может редактировать форму других пользователейу них есть «просмотр» доступа к

Затем их нужно будет написать для каждой функции, такой как удаление формы, просмотр ответов формы и т. д.

Все это нужнобыть включены, чтобы гарантировать, что авторизация применяется на нужном уровне для каждой функции?Или следует проверить только базовую функциональность (то есть пользователь может редактировать свою форму), а затем провести модульный тест для проверки промежуточного программного обеспечения авторизации и достаточно доверия?

Редактировать: я знаю, как добавить авторизациюМне нужно, я просто спрашиваю, стоит ли проверять это на каждом уровне.

1 Ответ

0 голосов
/ 21 февраля 2019

МОЙ ОТВЕТ ЗА

Я занимаюсь разработкой базового приложения CRUD

, если вы делаете несколько пользователей типы приложений реализуют роли и разрешения

можно найти здесь

https://laravel -news.com / two-best-role-permissions-packages

Или реализовать свой собственный

else

Вопрос 1:

Гость не может редактироватьформа

Route::middleware(['web', 'auth'])->group(function () 
{
    //authenticated user functions
    Route::get('testmiddleware',function(){return 'user is loggend in';});
    Route::get('/posts/{post}/edit',  'PostController@edit')->name('posts.edit');
    Route::put('/posts/{post}',  'PostController@update')->name('post.update');

});

Вопрос 2 и 3:

Пользователь может редактировать свою собственную форму AND Пользователь не может редактировать форму других пользователей

Например, рассмотрим, что у меня есть файл user_id в сообщении в таблице сообщений

public function edit($id,Post $Post)
    {
       $post = Post::findOrFail($id);        

        if ($post->user_id != auth()->user()->id) 
        {
            abort(401);
        }

        $viewShare = ['post'];
        return view('post.edit',compact($viewShare));
    }

Вопрос 4 и 5:

AПользователь может редактировать других пользователей, если у них есть доступ «edit» к

Пользователь не может редактировать других пользователей, если у него есть доступ «view» к

Я понятия не имею, но вы можете сделать это с помощью контроля доступа на основе ролей.

...