up. ws update.

This commit is contained in:
扶桑花间 2025-08-28 23:02:25 +08:00
parent b14fcbf06d
commit 25988682cc
4 changed files with 46 additions and 7 deletions

View File

@ -68,8 +68,9 @@ class Worker extends Command
// 绑定成功通知
$connection->send(json_encode(['event'=>'BIND_USER_SUCCESS','userId'=>$auth->userId]));
$client = SysUserClient::where([
'client_id' => $connection->clientId,
'client_name'=> $connection->clientName
'client_id' => $clientId,
'client_name'=> $clientName,
'user_id' => $connection->userId,
])->find();
if($client && $client['is_lock']) {
// 锁定屏幕
@ -82,7 +83,8 @@ class Worker extends Command
var_dump("锁定客户端/通知全部ws触发锁定操作");
SysUserClient::where([
'client_id' => $connection->clientId,
'client_name'=> $connection->clientName
'client_name'=> $connection->clientName,
'user_id' => $connection->userId,
])->update(['is_lock'=>1,'lock_password'=>$lock_password,'lock_time'=>date('Y-m-d H:i:s')]);
// 锁定屏幕
$connection->send(json_encode(['event'=>'LOCK_CLIENT_SCREEN']));

View File

@ -4,6 +4,7 @@ namespace app\controller\admin\auth;
use app\BaseController;
use app\entity\SysUser;
use app\entity\SysUserClient;
use app\enum\UserLoginEnum;
use app\service\admin\LoginService;
use think\db\exception\DataNotFoundException;
@ -41,4 +42,24 @@ class AuthController extends BaseController
$srv->logout($this->request, $this->auth->getUser());
return $this->writeSuccess('退出成功');
}
public function unlock()
{
$client = $this->request->getClient();
$lock_password = $this->request->post('lock_password');
$clientModel = SysUserClient::where([
'client_id' => $client->id,
'client_name'=> $client->name,
'user_id' => $this->auth->userId,
])->find();
if($clientModel) {
if($clientModel['lock_password'] !== $lock_password) {
return $this->writeSuccess('密码错误');
}
$clientModel->save(['is_lock'=>0,'lock_password'=>'','lock_time'=>null]);
}
return $this->writeSuccess('解锁成功');
}
}

View File

@ -55,6 +55,7 @@ Route::group("adminapi", function () {
Route::group("auth", function () {
Route::post("logout", [auth\AuthController::class, "logout"])->name("admin.SysUserLogout");
Route::get("user", [auth\AuthController::class, "user"])->name("admin.SysUserInfo");
Route::post("unlock", [auth\AuthController::class, "unlock"])->name("admin.SysClientUnlock");
});

View File

@ -1,6 +1,6 @@
<template>
<ele-modal
title="安全锁定"
title="设备已被锁定"
:width="480"
v-model="visible"
:modal-penetrable="false"
@ -12,7 +12,22 @@
:show-close="false"
:fullscreen="true"
>
屏幕已锁定
<div style="text-align: center">
<h1>请输入锁屏密码进行解锁</h1>
</div>
<div style="margin-top: 10%">
<el-input
type="password"
v-model="lockPassword"
size="large"
placeholder="请输入密码解锁"
/>
<div style="margin-top: 20px">
<el-button class="ele-fluid" type="primary" @click="confirmUnlock"
>解锁客户端</el-button
>
</div>
</div>
</ele-modal>
</template>
@ -21,9 +36,9 @@
import { WsEvent, wsEventManager } from '@/plugins/websocket';
const visible = ref(false);
const lockPassword = ref('');
const confirmUnlock = () => {};
wsEventManager.subscribe(WsEvent.LOCK_CLIENT_SCREEN, () => {
console.log("LOCK_CLIENT_SCREEN->")
visible.value = true;
});
</script>