laravel - 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);
}
}
解决方案
您需要一个名为 MobileVerificationMiddleware 的中间件并检查它并在配置中设置数据
config('user_is_verified', true or false);
在刀片中你可以使用@if(config('user_is_verified'))
推荐阅读
- angular - 我有 Angular 8 上的应用程序它非常大的应用程序我可以在 Angular 10 上升级我的应用程序吗
- django - Prometheus + Django + gunicorn 与 --preload 和多个进程仅发布一个端口
- git - Git LFS:文件被推送之前存储在哪里?
- c# - 通过接口强制使用方法
- php - 制作 pdf 时为尝试转换传递的无效字符
- amazon-s3 - S3 用于数据+静态站点 VS s3 用于静态站点的数据和静态托管服务(如 Netlify)
- python - 如何在 Jupyter 实验室/笔记本中使用交换空间/虚拟 RAM?
- c# - 如何从 Xamarin 中的 FileSystem.CacheDirectory 下载文件保存和打开
- php - 在 php artian serve 上调用未定义函数 Illuminate\Encryption\openssl_cipher_iv_length()
- c# - HttpListener 与现有注册冲突