1
0
Эх сурвалжийг харах

feat: calculate user uuid using uuidv4

M1Screw 2 жил өмнө
parent
commit
a75bcaacca

+ 1 - 0
app/routes.php

@@ -55,6 +55,7 @@ return static function (Slim\App $app): void {
         $group->post('/theme', App\Controllers\UserController::class . ':updateTheme');
         $group->post('/mail', App\Controllers\UserController::class . ':updateMail');
         $group->post('/passwd_reset', App\Controllers\UserController::class . ':resetPasswd');
+        $group->post('/apitoken_reset', App\Controllers\UserController::class . ':resetApiToken');
         $group->post('/method', App\Controllers\UserController::class . ':updateMethod');
         $group->get('/kill', App\Controllers\UserController::class . ':kill');
         $group->post('/kill', App\Controllers\UserController::class . ':handleKill');

+ 4 - 6
src/Command/Tool.php

@@ -216,10 +216,9 @@ EOL;
     public function generateUUID(): void
     {
         $users = ModelsUser::all();
-        $current_timestamp = time();
         foreach ($users as $user) {
             /** @var ModelsUser $user */
-            $user->generateUUID($current_timestamp);
+            $user->generateUUID();
         }
         echo 'generate UUID successful';
     }
@@ -252,10 +251,9 @@ EOL;
     public function generateApiToken(): void
     {
         $users = ModelsUser::all();
-        $current_timestamp = time();
         foreach ($users as $user) {
             /** @var ModelsUser $user */
-            $user->generateApiToken($current_timestamp);
+            $user->generateApiToken();
         }
         echo 'generate Api Token successful';
     }
@@ -297,8 +295,8 @@ EOL;
             $user->remark = '';
             $user->pass = Hash::passwordHash($passwd);
             $user->passwd = Tools::genRandomChar(16);
-            $user->uuid = Uuid::uuid3(Uuid::NAMESPACE_DNS, $email . '|' . $current_timestamp);
-            $user->api_token = Uuid::uuid3(Uuid::NAMESPACE_DNS, $user->pass . '|' . $current_timestamp);
+            $user->uuid = Uuid::uuid4();
+            $user->api_token = Uuid::uuid4();
             $user->port = Tools::getLastPort() + 1;
             $user->t = 0;
             $user->u = 0;

+ 2 - 2
src/Controllers/AuthController.php

@@ -242,8 +242,8 @@ final class AuthController extends BaseController
         $user->remark = '';
         $user->pass = Hash::passwordHash($passwd);
         $user->passwd = Tools::genRandomChar(16);
-        $user->uuid = Uuid::uuid3(Uuid::NAMESPACE_DNS, $email . '|' . $current_timestamp);
-        $user->api_token = Uuid::uuid3(Uuid::NAMESPACE_DNS, $user->pass . '|' . $current_timestamp);
+        $user->uuid = Uuid::uuid4();
+        $user->api_token = Uuid::uuid4();
         $user->port = Tools::getAvPort();
         $user->t = 0;
         $user->u = 0;

+ 14 - 9
src/Controllers/UserController.php

@@ -411,18 +411,24 @@ final class UserController extends BaseController
     public function resetPasswd(ServerRequest $request, Response $response, array $args): ResponseInterface
     {
         $user = $this->user;
-        $pwd = Tools::genRandomChar(16);
-        $current_timestamp = time();
-        $new_uuid = Uuid::uuid3(Uuid::NAMESPACE_DNS, $user->email . '|' . $current_timestamp);
-        $existing_uuid = User::where('uuid', $new_uuid)->first();
+        $user->uuid = Uuid::uuid4();
+        $user->passwd = Tools::genRandomChar(16);
 
-        if ($existing_uuid !== null) {
+        if (! $user->save()){
             return ResponseHelper::error($response, '目前出现一些问题,请稍后再试');
         }
 
-        $user->uuid = $new_uuid;
-        $user->passwd = $pwd;
-        $user->save();
+        return ResponseHelper::successfully($response, '修改成功');
+    }
+
+    public function resetApiToken(ServerRequest $request, Response $response, array $args): ResponseInterface
+    {
+        $user = $this->user;
+        $user->api_token = Uuid::uuid4();
+
+        if (! $user->save()){
+            return ResponseHelper::error($response, '目前出现一些问题,请稍后再试');
+        }
 
         return ResponseHelper::successfully($response, '修改成功');
     }
@@ -432,7 +438,6 @@ final class UserController extends BaseController
         $antiXss = new AntiXSS();
 
         $user = $this->user;
-
         $method = strtolower($antiXss->xss_clean($request->getParam('method')));
 
         if ($method === '') {

+ 4 - 10
src/Models/User.php

@@ -144,24 +144,18 @@ final class User extends Model
     /**
      * 生成新的 UUID
      */
-    public function generateUUID($s): bool
+    public function generateUUID(): bool
     {
-        $this->uuid = Uuid::uuid3(
-            Uuid::NAMESPACE_DNS,
-            $this->email . '|' . $s
-        );
+        $this->uuid = Uuid::uuid4();
         return $this->save();
     }
 
     /**
      * 生成新的 API Token
      */
-    public function generateApiToken($s): bool
+    public function generateApiToken(): bool
     {
-        $this->api_token = Uuid::uuid3(
-            Uuid::NAMESPACE_DNS,
-            $this->pass . '|' . $s
-        );
+        $this->api_token = Uuid::uuid4();
         return $this->save();
     }