首页 > 解决方案 > Laravel 在任何页面上显示“请验证您的电话号码”通知直到验证

问题描述

在我目前正在工作的网站上,注册用户可以将电话号码添加为可选。
当他们添加/更改电话号码时,我会向他们发送带有 4 位数代码的通知,要求他们验证电话号码。

在用户模型中,我有这两个字段:

$user->phone_verification_code
$user->phone_verified_at

当用户添加电话号码时,我设置了 phone_verification_code 并清空了 phone_verified_at 字段。

$verificationCode  = mt_rand(1000, 9000);
$user->phone_verification_code = $verificationCode;
$user->phone_verified_at = null;

我正在寻找一种方法向尚未验证电话号码的登录用户显示任何页面上的通知。

我将检查此条件并将此消息闪现到会话:

if (!empty($user->phone_verification_code)&& empty($user->phone_verified_at)){
    session()->flash('warning', 'Please verify your phone number');
}

哪里是检查用户是否已验证电话号码的最佳位置,因为我想在任何页面上显示闪烁消息直到验证?

感谢 Mohammad 在这样的中间件中添加条件,我解决了:

<?php

namespace App\Http\Middleware;

use Closure;

class EnsurePhoneIsVerified
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

        if ($request->user()->isMember()) {

            if (
                !empty($request->user()->profile->phone_verification_code)
                && empty($request->user()->profile->phone_verified_at))
            {
                session()->flash('warning', 'Please verify your phone number');
            }

        }

        return $next($request);
    }
}

标签: laravel

解决方案


您需要一个名为 MobileVerificationMiddleware 的中间件并检查它并在配置中设置数据

config('user_is_verified', true or false);

在刀片中你可以使用@if(config('user_is_verified'))


推荐阅读