spatie permissions


Если тут без ошибок то идем дальше 

 

 

https://github.com/spatie/laravel-permission

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
php artisan migrate
php artisan make:model -m Models/Users/User

php artisan make:request Users/UserRequest
php artisan make:controller -r  Web/Users/UserController
php artisan make:controller --resource  Api/Users/UserController
php artisan make:policy  --model=User  Users/UserPolice

Политики надо регистрировать иначе работать не будут 

 

 

Скинуть в setions/users

 

webController

    public function index()
    {
//        $this->authorize('view', User::class);

        return view('sections.users.main', [
            'roles' => Role::query()->where('id', '>', 1)->get()
        ]);
    }

 apiContoller

 

<?php

namespace App\Http\Controllers\Api\Users;

use App\Http\Requests\Users\UserRequest;
use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;

class UserController extends Controller
{

    public function index(Request $request)
    {
//        $this->authorize('view', User::class);
        $search = json_decode($request->input('search'), true);
        $orderColumn = $request->input('order_column');
        $orderDesc = $request->input('order_desc');

        $query = User::query()
            ->orderBy($orderColumn, $orderDesc ? 'desc' : 'asc');

        // Поиск
        if (!empty($search)) {
            foreach ($search as $key => $value) {
                if ($value === '') continue;

                if (in_array($key, [
                    'users.login'
                ])) {
                    $query->where($key, 'ILIKE', "%$value%");
                } else {
                    $query->where($key, $value);
                }
            }
        }

        return $query->paginate(20);
    }

    public function store(UserRequest $request)
    {
//        $this->authorize('view', User::class);
        $input = $request->all();
        $input['password'] = Hash::make($input['password_new']);
        $user = new User($input);
        $user->save();
        return $user;
    }


    public function show($id)
    {
        $user = User::findOrFail($id);
        return $user;
    }


    public function update(UserRequest $request, $id)
    {
//        $this->authorize('view', User::class);
        $input = $request->all();
        if (isset($input['password_new']))
            $input['password'] = Hash::make($input['password_new']);
        $user = User::findOrFail($id);
        $user->update($input);
        return $user;
    }

    public function destroy($id)
    {
        //
    }
}

Настраиваем роуты


/app/Providers/RouteServiceProvider.php 

public function map()
{
    $this->mapApiRoutes();

    $this->mapWebRoutes();
}


cat << EOT >> routes/api.php
<?php


//Route::group(['middleware' => 'auth', 'namespace' => 'Api'], function()
Route::group(['namespace' => 'Api'], function () {
    Route::resource('/users', 'Users\UserController');
});
EOT

cat << EOT >>  routes/web.php
Route::group(['namespace' => 'Web'], function () {
    Route::resource('users', 'Users\UserController');
});
EOT