рд▓рд╛рд░рд╡реЗрд▓ рдкрд░ рд░рд┐рдореЛрдЯ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреВрдбреВ рдмрдирд╛рдПрдВ

рд╕рд▓рд╛рдо, рдЦрд╝рдмреНрд░реЛрд╡рд╕реНрдХред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рд╣рдорд╛рд░реЗ рдирд┐рдпрдорд┐рдд рдкрд╛рдардХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдЯреНрдЯрд░ рд╕рд╛рдордЧреНрд░реА рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓реЗрдЦ рдкрд░ рдЖрдкрдХреА рд░рд╛рдп рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХ рдХрдЯреНрдЯрд░ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рд╣рдо рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд╛рд░рд╡реЗрд▓ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ ред




рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдЖрдЬ, рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдРрд╕реЗ "рджреВрд░рд╕реНрде" рд╕рдордп рдкрд░, рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреВрдбреВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд▓рд╛рд░рд╡реЗрд▓ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣реИ - рдореИрдВ рдЙрдирдХреЗ рдЯреВрдбреВ рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореЗрд░реА рдХрд╣рд╛рдиреА рдХрд╛ рдереЛрдХ рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рднреВрдорд┐рдХрд╛ рдмрдирд╛рдиреЗ рдФрд░ рдПрдХ рдФрд░ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдХреНрд▓реЛрди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред рдЯреНрд░реЗрд▓реЛ рдмрд╣реБрдд рдЕрд╕рдВрдЧрдд рд▓рдЧрддреЗ рд╣реИрдВ ред

рдиреАрдВрд╡ рдмрдирд╛рдПрдВ




рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╣рдо рдЕрдЧрд▓реЗ рдЧрд╛рдЗрдб рдХреЛ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВрдЧреЗ ред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдФрд░ рдореЙрдбрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд▓рд╛рдпрди рдФрд░ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 5.1 рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ 7 рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд▓рд╛рд░рд╡реЗрд▓ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдпрд╣ рдХреЗрд╡рд▓ 3 рдорд╛рд░реНрдЪ рдХреЛ рддрд╛рдЬрд╛ рдерд╛), рддреЛ рдЖрдкрдХреЛ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ app/Http/routes.php, рд▓реЗрдХрд┐рди routes/web.php(рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 6 рдорд╣реАрдиреЗ рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ) ), рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд╛рд░рд╛ рдЕрдВрддрд░ рдпрд╣реАрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:



рдореИрдВрдиреЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реЗ рдмрд▓рдорд╛ рддрдХ рд▓реЗрдЖрдЙрдЯ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рднреА рдмрджрд▓ рджреАред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдпрд╣ рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдмрд╛рдд, рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреНрд▓реЗрдб рдкрдВрдЬреАрдХрд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдХреЛрдб рдЖрдзрд╛рд░ рдерд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреВрд╕рд░реА рдУрд░, рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ)ред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рдпрд╣рд╛рдВ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдирдИ рд╢рд╛рдЦрд╛ рдореЗрдВ рдЖрдк рддреИрдпрд╛рд░ рдЖрд╡реЗрджрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЖрдк рдЗрд╕реЗ рдирд┐рдореНрди рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдХреНрд░рд┐рдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдЧреАрддрдХрд╛рд░ рдФрд░ рд▓рд╛рд░реНрд╡рд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ:

composer install
//   .env,    .env example,     
php artisan key:generate //  
php artisan serve // 

рд╣рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ

рдмреЙрдХреНрд╕ рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг 6 рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдмрджрд▓ рдЧрдП рд╣реИрдВред рдЕрдм рддреНрд╡рд░рд┐рдд рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЬрд▓реНрджреА рд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдмреНрд▓реЗрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

composer install laravel/ui
php artisan ui vue --auth
 

рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдИ рдирдИ рдлрд╛рдЗрд▓реЗрдВ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП: рд░рд┐рд╕реЛрд░реНрд╕

рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдСрдерд░ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ , рдЬрд┐рд╕рдореЗрдВ рдмреНрд▓реЗрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреА рдЬреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдВрдЧреАред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдмреНрд▓реЗрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдереЗ , рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдврд╛рдВрдЪреЗ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмрд▓рдЧрдо рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рдЬ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдмрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ, рдореИрдВ рдмрдирд╛рдпрд╛ рд╢рд╛рдорд┐рд▓ рдлрд╝реЛрд▓реНрдбрд░ , рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рд╕рд╣рд╛рдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рд░рдЦрд╛ - рд╣реИрдбрд░ рдФрд░ рдПрдирдПрд╡реА ред рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рдирд╣реАрдВ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╣реЗрдбрд░ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдмрд▓реНрдорд╛ рдХрдиреЗрдХреНрд╢рди рд╡рд╛рд▓рд╛ рд╕рд┐рд░ рдерд╛, рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдереЗ:nav.blade.php

<nav class="navbar has-background-black-ter" role="navigation" aria-label="main navigation">
  <div class="navbar-brand">
    <a class="navbar-item has-text-white is-size-4" href="/">
      TODO
    </a>
    <a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false">
      <span aria-hidden="true"></span>
      <span aria-hidden="true"></span>
      <span aria-hidden="true"></span>
    </a>
  </div>
  <div class="navbar-menu">
    <div class="navbar-start">
      @if (Auth::check())
      <button type="button" class="button is-primary">
        <!--   ,  ->   -->
        {{{ Auth::user()->name}}}
      </button>
      @else
      <!--    -->
      <a class="navbar-item has-text-danger" href="{{route('register')}}"></a>
      <a class="navbar-item has-text-danger" href="{{route('login')}}"></a>
      @endif
      @if (Auth::check())
      <!--  ,       -->
      <!--      -->

      <a class="navbar-item has-text-danger" href="{{url('/logout') }}" onclick="event.preventDefault();
                  document.getElementById('logout-form').submit();">
         </a>
      <form id="logout-form" action="{{ url('/logout') }}" method="POST" style="display: none;">
        {{ csrf_field() }}
      </form>

      @endif
      </ul>
    </div>

    <div class="navbar-end">
      <!-- navbar items -->
    </div>
  </div>
</nav>
 

рд╣рдо рдЕрдкрдиреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ


рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред рддрдм рдкрд╛рдардХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдм, рдорд╛рди рд▓реАрдЬрд┐рдП, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ (рдХрд╣рдирд╛, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдмрдВрдзрдХ) рд╣реЛрдЧрд╛ рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдФрд░ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдЯреАрдо рдЬреЛ рдЗрди рдХрдорд╛рдВрдбреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣ рдерд╛ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХред

рдареАрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рджреЛ рд╕рдореВрд╣ рд╣реЛрдВрдЧреЗ рдФрд░ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ рдХрд┐ рдХреЗрд╡рд▓ рдЕрдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдмреЛрд░реНрдб рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рд╕реБрдкрд░ рдкреНрд░рд╡реЗрд╢ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдПрдБ рд╢реБрд░реВ рдХрд░реЗрдВред

рдереЛрдбрд╝рд╛ рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджреЛ рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛: рдПрдХ рдЬрд┐рд╕ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рд╕рдВрдкрд╛рджрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдп рд╣реЛрдВрдЧреЗ, рдФрд░ рджреВрд╕рд░рд╛, рдЬреЛ рдХреЗрд╡рд▓ рд╕реБрдкрд░ рдПрдбрдорд┐рди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдЯреАрдо рдХреЛ рдЙрдкрд▓рдмреНрдз рдкреЗрдЬ рдХрд╛ рдирд╛рдо рддрдп рдХрд┐рдпрд╛ welcome.blade.php:

@include('includes.header')

<body>
    @include('includes.nav')
    <div class="columns is-centered">
        <div class="column is-half">
            <div class="panel">
                <div class="panel-heading">
                     
                </div>

                <div class="panel-body">
                    @foreach ($tasks as $task)
                    <a class="panel-block">
                        <button class="button is-rounded">
                            <span>{{ $task->name }}</span>
                        </button>
                        @endforeach
                </div>
            </div>
        </div>
    </div>
<body>
</html>

рдпрд╣ рдкреГрд╖реНрда рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ web.php рдореЗрдВ рдПрдХ рдирдпрд╛ рдкрде рдЬреЛрдбрд╝реВрдВрдЧрд╛:

Route::get('/', function () {
    return view('welcome', [
        'tasks' => Task::orderBy('created_at', 'asc')->get(),
    ]);
});

рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдорд╛рди рд╕реВрдЪреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ task.blade.phpред рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рдиреАрдЪреЗ рд░рдЦреВрдВрдЧрд╛:

task.blade.php
@extends('layouts.app')

@section('content')
<div class="columns is-centered">
    <div class="column is-half">
        <div class="panel">
            <div class="panel-heading">
                 
            </div>
            <div class="panel-block">
                @include('common.errors')
                <!--     -->
                <form action="{{ url('task')}}" method="POST">
                    {{ csrf_field() }}

                    <div class="field">
                        <label for="task-name" class="label is-medium"></label>
                        <input type=" text" name="name" id="task-name" class="input is-medium"
                            value="{{ old('task') }}">
                    </div>

                    <div class="field">
                        <button type="submit" class="button is-success">
                            <span class="icon">
                                <i class="fa fa-btn fa-plus">
                            </span></i>
                            <span> </span>
                        </button>
                    </div>
                </form>
            </div>
        </div>

        <!-- Current Tasks -->
        @if (count($tasks) > 0)
        <div class="panel">
            <div class="panel-heading">
                 
            </div>

            <div class="panel-body">
                {{-- <table class="table table-striped task-table">
                    <thead>
                        <th></th>
                        <th> </th>
                    </thead>
                    <tbody> --}}
                @foreach ($tasks as $task)
                <a class="panel-block">
                    <button class="button is-rounded">
                    <span>{{ $task->name }}</span>
                </button>
                    <form action="{{ url('task/'.$task->id) }}" method="POST">
                        {{ csrf_field() }}
                        {{ method_field('DELETE') }}
                        <button type="submit" class="button is-danger">
                            <span class="icon is-small"> <i class="fa fa-btn fa-trash"></i></span>
                            <span>  </span>
                        </button>
                    </form>
                </a>
                @endforeach
            </div>
        </div>
        @endif
    </div>
</div>
@endsection



рдФрд░ рдпрд╣ рдЯреЗрдореНрдкрд▓реЗрдЯ, рдореВрд▓ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреА рддрд░рд╣, рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ app/layouts.blade.php:

@include('includes.header')

<body>
    @include('includes.nav')

    @yield('content')

</body>

</html>

рдареАрдХ! рд╣рдордиреЗ рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЕрдм рд╣рдо рдЕрдкрдирд╛ рдорд╛рд░реНрдЧ рдмрдирд╛рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ middlewaresред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

const ADMIN_TYPE = 'admin';
const TEAM_TYPE = 'team';
#       :

public function isAdmin(){        
    return $this->type === self::ADMIN_TYPE;
    //        
}

рдЕрдЧрд▓рд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ (рдбреЗрдЯрд╛рдмреЗрд╕ / рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░) рдХреЗ рдЕрдВрддрд┐рдо рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдирдП рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХреЙрд▓рдо рдЬреЛрдбрд╝реЗрдВ:

$table->string('type')->default('team');
//  ,         

рдЗрд╕рдХреЗ рдмрд╛рдж, app/Http/Controllers/Auth/RegisterController.phpрдХреНрд░рд┐рдПрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдереЛрдбрд╝рд╛-рдереЛрдбрд╝рд╛ рдХрд░рдХреЗ рджреЗрдЦреЗрдВ (рд╕рдВрд╕реНрдХрд░рдг 5 рдореЗрдВ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рджрд┐рдЦрддрд╛ рд╣реИ):

protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
            'type' => User::TEAM_TYPE,  
        ]);
    }


рдареАрдХ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╣реИ:

php artisan make:middleware IsAdmin

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рдлрд▓ рд╣реБрдП рд╣реЛрдВрдЧреЗред рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ HTTP/middlewareрдЖрдкрдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП isAdmin.php, рдЬрд┐рд╕рдореЗрдВ рд╣реИрдВрдбрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

public function handle($request, Closure $next)
    {
        if(auth()->user()->isAdmin()) {
            return $next($request);
        //   , .   -   
    }
        return redirect('/');
    }

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдореЗрдВ app/HTTP/KernelрдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреЗ рдЖрджреЗрд╢:

protected $routeMiddleware = [
    #  ,      
        is_admin' => \App\Http\Middleware\IsAdmin::class,
];

рд╣рдо рдбреИрд╢ рдкрде рдХреЛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ web.php, рдЬреЛ рдХреЗрд╡рд▓ рд╕реБрдкрд░ рдПрдбрдорд┐рди рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

Route::get('/dash', function () {
    return view('tasks', [
        'tasks' => Task::orderBy('created_at', 'asc')->get(),
    ]); 
})
->middleware('is_admin')    
->name('admin');

#       

Auth::routes();
Route::post('/logout', 'Auth\LoginController@logout')->name('logout');

рдпрд╣ рд╣рдорд╛рд░реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдирд┐рдпрдВрддреНрд░рдХ рдмрдирд╛рддрд╛ рд╣реИ:

php artisan make:controller AdminController

рд╕рдВрдкрд╛рджрди:

public function __construct()
    {
        $this->middleware('auth');
    }
    public function admin()
    {
        return view('admin');
    }
 

рдЖрджреЗрд╢ рд╕рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд░реНрдЬрд┐рдд рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдордд рднреВрд▓рдирд╛ рдореЗрдВ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП RouteServiceProvider.phpрдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП app/HTTP/Providers, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдШрд░ рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

public const HOME = '/';

рдЕрдм рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗрд╡рд▓ рдЯрд┐рдВрдХрд░ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рд╣рд╛рдпрдХ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

php artisan tinker
use App\User;
User::where('email', 'admin@mail.com')->update(['type' => 'admin']);
//    

рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдпрджрд┐ рдЖрдк рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рд▓рд┐рдВрдХ рдХреЛ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ ред рдмреЗрд╢рдХ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдЕрднреА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╕рд╛рдзрди рдкрд░ рдкрдВрдЬреАрдХреГрдд рд╕рднреА рд▓реЛрдЧ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдк рдкрд╣реБрдВрдЪ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ?

рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдореЗрд▓ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрдк рдореЗрд▓ рд╕рддреНрдпрд╛рдкрди рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреАрдо рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдЖрдк рдЙрд╕реА рддрд░рд╣ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреАрдо рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рди рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░рдВрдкрд░рд╛ рд╕реЗ, рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдЕрднреА рд▓рд╛рд░рд╡реЗрд▓ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ:

тЖТ рд▓рд╛рд░рд╡реЗрд▓ рдХреЗ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦ
тЖТ рд▓рд╛рд░рд╡реЗрд▓ рдореЗрдВ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордзреНрдпрдо рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ
тЖТ Laravel 7



┬л ┬╗ Forge/Envoyer.



All Articles