Laravel Vue Admin -#2 User Management System

User.vue:

In order to make this effect:

Comment 2020-04-20 010819

Then choose Vuetify's Datatable :

And each one can support editing, then the template uses CRUD Actions , copy its code:

Comment 2020-04-20 011200

The initial results are as follows:

Comment 2020-04-20 011451

Next we need to: api interface to achieve addition, deletion, modification and access to user data.

carried out:

php artisan make:controller Api\Admin\UserController –r

Comment 2020-04-20 011732

A UserController.php file will be created under the Api \ Admin folder:

Comment 2020-04-20 011808

In order to cooperate with the API to return json response is more convenient, so add Resource

carried out:

php artisan make:resource UserResource

Comment 2020-04-20 012017


The returned resource data also needs to contain the user's role and permission data, so the UserResource.php file is modified as follows:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param \Illuminate\Http\Request $request
     * @return array
     */
    public function toArray($request)
    {
        $defaultData = parent::toArray($request);

        $additionalData = [
            'role' => $this->roles->first(),
            'permissions' => $this->permissions,
        ];

        return array_merge($defaultData, $additionalData);
    }
}

Then you need an api route:

Modify api.php as follows:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::apiResource('users','Api/Admin/UserController');

UserController.php is modified as follows:

<?php

namespace App\Http\Controllers\Api\Admin;

use App\Http\Controllers\Controller;
use App\Http\Resources\UserResource;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        return UserResource::collection(User::all());
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
        $data = $request->validate([
            'name' => 'required|min:3',
            'email' => 'required|email',
            'password' => 'required|confirm',
        ]);
        $data['password'] = Hash::make($data['password']);

        $user = User::create($data);
        if ($request->has('role')) {
            $user->attachRoles($request->role['name']);
        }

        if ($request->has('permissions')) {
            $user->givePermissionTo(collect($request->permissions)->pluck('id')->toArray());
        }

        return response()->json(['Message' => 'User Created', 'User' => $user]);
    }

    /**
     * Display the specified resource.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
        $data = $request->validate([
            'name' => 'required|min:3',
            'email' => 'required|email',
        ]);
        $data['password'] = Hash::make($data['password']);

        $user = User::update($data);
        if ($request->has('roles')) {
            $user->attachRoles($request->roles['name']);
        }

        if ($request->has('permissions')) {
            $user->givePermissionTo(collect($request->permissions)->pluck('id')->toArray());
        }

        return response()->json(['Message' => 'User Updated', 'User' => $user]);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function destroy(User $user)
    {
        //
        User::delete($user);

        return response()->json(['Message' => 'User Deleted']);
    }
}

Guess you like

Origin www.cnblogs.com/dzkjz/p/12735518.html