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