增加 topic 认证

This commit is contained in:
iVampireSP.com 2023-01-20 00:06:38 +08:00
parent 3342cf8d8d
commit 79902bd4ce
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132

View File

@ -10,29 +10,32 @@
class MqttAuthController extends Controller
{
//
public function authentication(Request $request): Response
{
//
$client_id = $request->input('client_id');
$client_id = explode('.', $request->input('client_id'));
if (count($client_id) < 2) {
return $this->ignore();
}
$username = $request->input('username');
$password = $request->input('password');
// 分割 username
$usernames = explode('.', $username);
$password = $request->input('password');
$module_id = $usernames[0] ?? null;
$device_id = $usernames[1] ?? null;
$module = (new Module)->where('id', $module_id)->first();
if (!$module) {
return $this->ignore();
}
if ($client_id[0] !== $module->id) {
return $this->ignore();
}
// 如果没有设置 device_id那么就是模块自己的连接
if (!$device_id) {
// 让 api_token 可见
@ -45,12 +48,9 @@ public function authentication(Request $request): Response
return $this->deny();
}
} else {
// 如果设置了 device_id那么就是设备的连接
// 此时,我们得联系模块,让模块去验证设备。
// 如果设置了 device_id那么就是设备的连接此时我们得联系模块让模块去验证设备。
$response = $module->baseRequest('post', 'mqtt/authentication', [
'client_id' => $client_id,
'client_id' => $client_id[1],
'device_id' => $device_id,
'password' => $password,
]);
@ -93,8 +93,13 @@ public function authorization(Request $request): Response
return $this->deny();
}
$client_id = explode('.', $request->input('client_id'));
if (count($client_id) < 2) {
return $this->deny();
}
$action = $request->input('action');
$client_id = $request->input('client_id');
$username = $request->input('username');
$topic = $request->input('topic');
@ -114,7 +119,6 @@ public function authorization(Request $request): Response
if (!$module) {
// 不属于我们管理,跳过。
// Log::debug('不属于我们管理,跳过。');
return $this->ignore();
}
@ -141,7 +145,7 @@ public function authorization(Request $request): Response
// 联系模块,让模块去验证设备授权。
$response = $module->baseRequest('post', 'mqtt/authorization', [
'client_id' => $client_id,
'client_id' => $client_id[1],
'device_id' => $device_id,
'type' => $action,
'topic' => $topic,