omnia/oalivechat

管理员与用户之间的聊天

安装: 56

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

语言:JavaScript

v0.3.3 2023-09-26 08:27 UTC

README

Live chat Laravel Package

Total Downloads License

实时聊天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许可]