laravel用户详情及封禁和启用用户api

一、用户详情接口

1.1 配置路由模型

app/Http/Kernel.php中增加代码:

'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,

在这里插入图片描述

laravel 核心类Kernel:处理网络请求的核心类,它会在app容器准备好了之后,就会调用这个类,之后所有的处理都在此类中。


功能:

  1. 初始化网站配置。
  2. 添加meddlerware功能
  3. 配置router,并把请求发送到router

routes/admin.php中添加这个中间件:
在这里插入图片描述

1.2 用户详情控制器方法

    /**
     * 用户详情
     */
    public function show(User $user)
    {
        return $this->response()->item($user, new UserTransformer());
    }

在这里插入图片描述

1.3 效果

在这里插入图片描述
可以看到这里给我们返回了data再包含一个对象,获取用户详情的我们只想要一个对象,里面是信息的话,就可以使用一个插件liyu/dingo-serializer-switch
运行命令 composer require liyu/dingo-serializer-switch
在这里插入图片描述
进行安装。
这里给出了用法:
在这里插入图片描述
修改routes/admin.php
在这里插入图片描述

中间件:
bindings:支持路由模型注入
serializer:array:减少transformer的包裹层

效果:
在这里插入图片描述
可以看到返回就是一个对象了。

二、封禁和启用用户接口

2.1 用户表增加字段

1、生成迁移文件

运行命令生成迁移文件php artisan make:migration add_is_locked_to_users_table --table=users
在这里插入图片描述
2021_08_09_181147_add_is_locked_to_users_table.php写入代码:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddIsLockedToUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table
                ->tinyInteger('is_locked')
                ->default(0)
                ->after('email') // after 将is_locked放在email字段后面
                ->comment('用户禁用状态: 0启用,1禁用');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            //
        });
    }
}

2、执行迁移文件

运行命令php artisan migrate
在这里插入图片描述

3、效果

在这里插入图片描述
可以看到用户表这里已经插入了is_locked字段,并且在email字段后面。

2.2 控制器方法

1、方法

    /**
     * 禁用用户和启用用户
     */
    public function lock(User $user)
    {
        $user -> is_locked = $user ->is_locked== 0 ? 1 : 0;
        $user -> save();
        return $this->response()->noContent(); // 更新直接返回无响应的状态
    }

在这里插入图片描述

2、效果

在这里插入图片描述
在这里插入图片描述

三、修改登陆

3.1 将锁定的用户禁止登陆。

登陆控制器LoginController.php

    /**
     * 登陆
     */
    public function login(LoginRequest $request)
    {  
        $credentials = request(['email', 'password']);

        if (!$token = auth('api')->attempt($credentials)) {
            return $this->response()->errorUnauthorized();
        }

        // 检查用户信息
        $user = auth('api')->user();
        if ($user -> is_locked == 1) {
            return $this->response->errorForbidden('用户被锁定');
        }
        return $this->respondWithToken($token);
    }

在这里插入图片描述

3.2 效果

在这里插入图片描述

在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你华还是你华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值