omnia / oalivechat
管理员与用户之间的聊天
v0.3.3
2023-09-26 08:27 UTC
README
实时聊天Laravel包
Laravel管理员与用户一对一聊天系统包,通过一些命令帮助您将完整的实时聊天系统添加到新的/现有的Laravel应用程序中。
功能
- 管理员与用户之间的聊天系统。
- 实时联系人列表更新。
- 上传附件(照片/文件)。
- 响应式设计,适用于所有设备。
- 聊天定制:聊天颜色和字体大小。设计简单。
还有更多您需要亲自发现。
演示
- 演示应用程序 - 点击这里。
文档
1- 安装
运行以下命令来安装包
composer require omnia/oalivechat
2- 应用配置
- 在
config/app.php
文件中,将以下行添加到providers
数组中
"providers": { ... Omnia\Oalivechat\LiveChatServiceProvider::class, }
3- 发布资源、CSS和JS
- 要发布包的资源、CSS和JS,运行以下命令
php artisan vendor:publish --tag=public --force
这将在public目录中创建一个liveChat/tools
目录。
- 如果您想更改用户聊天颜色和位置,可以在
public/liveChat/tools/chat/css/final.css
中进行更改
4- 数据库迁移
- 为您的数据库创建迁移
php artisan migrate
- 为包数据库创建迁移
php artisan migrate --path=vendor/omnia/oalivechat/src/database/migrations
5- 身份验证管理员聊天的中间件
- 首先,请确保在数据库中检查管理员并将其
role_for_messages
设置为admin
,而不是'用户'。 - 创建一个检查管理员角色的中间件
php artisan make:middleware CheckAdminRole
- 将以下代码添加到中间件的handle方法内部
use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth;
public function handle(Request $request, Closure $next) { if (Auth::check()) { view()->share('loggedInUser', Auth::user()); view()->share('adminRole', Auth::user()->role_for_messages === 'admin'); } return $next($request); }
- 然后,在
app/Http/Kernel.php
中添加中间件
protected $middlewareGroups = [ 'web' => [ // ... \App\Http\Middleware\CheckAdminRole::class, ], ];
- 通过以下代码创建一个AdminMessages中间件
php artisan make:middleware AdminMessages
- 将以下代码添加到中间件的handle方法内部
use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth;
public function handle(Request $request, Closure $next) { if (Auth::check() && Auth::user()->role_for_messages === 'admin') { return $next($request); } return redirect('/'); }
- 在
app/Http/Kernel.php
中添加中间件别名
protected $middlewareAliases = [ // ... 'adminMessages' => \App\Http\Middleware\AdminMessages::class, 'adminRole' => \App\Http\Middleware\CheckAdminRole::class, ];
- 可选地,为了在用户聊天中显示
管理员状态
,请对LoginController
进行以下更新
如果您想进行此步骤:您应该有laravel Authentication
以获取登录Controller文件。
use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use App\Models\User;
public function authenticated(Request $request, $user) { $user->status_for_messages = 'online'; $user->save(); return redirect()->intended($this->redirectPath()); } public function logout(Request $request) { $user = Auth::user(); if ($user) { $userModel = User::find($user->id); $userModel->status_for_messages = 'offline'; $userModel->save(); } Auth::logout(); // Additional logout logic... return redirect('/'); }
注意
- 您必须有一个名为
admin.index
的目录,用于管理员仪表板(任何路由)。
用法
- 要导入管理员聊天,在视图中创建一个链接,例如
<a href=" {{ route('admin.chat') }} ">Messages</a>
- 如果您想显示消息计数器 => 在您的视图中放置此代码,并且只输入您在调用想要计数出现的函数时使用的id名称。
<script src="{{ asset('/liveChat/tools/chat/js/msg_counter.js') }}"></script> <script> window.onload = function() { var routeUrl = "{{ route('fetchNewMessages') }}"; fetchNewMessages(routeUrl,'id_name'); }; </script>
- 对于用户聊天,将以下代码添加到一个出现在所有页面上的视图中(例如,页脚)
@php $websiteName = "your website name"; $websiteColor = "your color"; @endphp @auth @if (Auth::user()->role_for_messages != 'admin') @include('liveChat::pages.main.chat', ['websiteName' => $websiteName], ['chatColor' => $websiteColor]) @endif @else @include('liveChat::pages.main.chat', ['websiteName' => $websiteName], ['chatColor' => $websiteColor]) @endauth
- 如果您有静态设计,可以将
$websiteName
和$websiteColor
设置为任何值或为空(例如,""),但不要从上一段代码中删除它们。
作者
许可
实时聊天遵循[MIT许可]