我創建了一個中間件,用于檢查用戶狀態(在線、離線)。
public function handle(Request $request, Closure $next)
{
if (Auth::check()) {
$expiresAt = now()->addMinutes(1); // keep online for 1 min
Cache::put('user-is-online-' . Auth::user()->id, true, $expiresAt);
// Update on db last_online_at with now time
User::where('id', Auth::user()->id)->update(['last_online_at' => now()]);
}
return $next($request);
}
所以也要更新并last_online_at在資料庫上進行更新。但我想做的是在前端查看在線或離線狀態。我創建了一個模型方法
// Check if user is online
public function isOnline()
{
return Cache::has('user-is-online-' . $this->id);
}
但我不知道如何isOnline在 vue 表上傳遞值
<td>
<span class="badge badge-warning">{{user.last_online_at}}</span>
</td>
<td>
<span class="badge badge-success">Online</span>
<span class="badge badge-danger">Offline</span>
</td>
methods: {
axios.post('/admin/users/getusers?page=' this.pagination.current_page, {
perPage: this.displayRecord
})
.then(response => {
this.users = response.data.data
}
computed: {
getOnlineStatus() {
var onlineUser = '';
var now = new Date();
this.users.forEach(function(user) {
onlineUser.push(user.last_online_at)
})
console.log(onlineUser);
if(now == onlineUser) {
// want to print true or false i think
}
}
},
laravel 控制器
public function getUsers(Request $request)
{
abort_if(Gate::denies('user_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$paginate = $request->perPage;
return new UserResource(User::paginate($paginate));
}
uj5u.com熱心網友回復:
我沒有測驗過這個,但應該是這樣的。
<td>
<span class="badge badge-warning">{{user.last_online_at}}</span>
</td>
<td>
<span v-if="getOnlineStatus(user.last_online_at)" class="badge badge-success">Online</span>
<span v-else class="badge badge-danger">Offline</span>
</td>
methods: {
...someMethods,
getOnlineStatus(testDate) {
var myDate = new Date(testDate);
var now = new Date();
let FIVE_MINS = 60 * 5;
return ((now - myDate) < FIVE_MINS);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/532640.html
標籤:拉拉维尔Vue.js
