Browse Source

changePassword

kphcdr 1 year ago
parent
commit
cb853d8e2a

+ 11 - 10
app/Base/BaseController.php

@@ -3,25 +3,25 @@
 namespace App\Base;
 
 use App\Http\Controllers\Controller;
-use Illuminate\Http\Request;
 use Illuminate\Support\Arr;
 
 class BaseController extends Controller
 {
-     public function valid(array $rules, array $messages = [], array $customAttributes = []): array
-     {
-         $data = [];
-          $validated= request()->validate($rules);
-         foreach($rules as $k=>$v) {
-            $data[$k] = Arr::get($validated,$k);
-         }
+    public function valid(array $rules, array $messages = [], array $customAttributes = []): array
+    {
+        $data = [];
+        $validated = request()->validate($rules);
+        foreach ($rules as $k => $v) {
+            $data[$k] = Arr::get($validated, $k);
+        }
 
-         return $data;
-     }
+        return $data;
+    }
 
     public function ok($data = null)
     {
         return [
+            "code" => 200,
             "data" => $data,
         ];
     }
@@ -29,6 +29,7 @@ class BaseController extends Controller
     public function error(string $msg)
     {
         return [
+            "code" => 400,
             "error" => $msg,
         ];
     }

+ 5 - 10
app/Exceptions/Handler.php

@@ -48,22 +48,17 @@ class Handler extends ExceptionHandler
         });
         $this->renderable(function (ClientException $e) {
             return response()->json([
+                'code' => 400,
                 "error" => $e->getMessage(),
-            ]);
-        });
-        $this->renderable(function (\Exception $e) {
-            return response()->json([
-                "error" => $e->getMessage(),
-                "file" => $e->getFile(),
-                "line" => $e->getLine(),
-                "trace" => $e->getTrace(),
-            ]);
+            ], 200);
         });
+
         $this->renderable(function (ValidationException $e) {
             $msg = Arr::first($e->errors());
             return response()->json([
                 "error" => $msg[0],
-            ], 400);
+                "code" => 400,
+            ]);
         });
     }
 }

+ 6 - 2
app/Http/Middleware/AdminAuthMiddleware.php

@@ -19,8 +19,12 @@ class AdminAuthMiddleware
         }
         $uid = app(AuthService::class)->decryptToken(substr($token, 7));
 
-        $u = User::findOrFail($uid);
-
+        $u = User::find($uid);
+        if (is_null($u)) {
+            return response()->json([
+                "code" => 401,
+            ]);
+        }
         Auth::login($u);
 
         logger()->info("admin operation log", [

+ 16 - 0
app/Models/Auth/AdminGroup.php

@@ -4,6 +4,22 @@ namespace App\Models\Auth;
 
 use App\Base\BaseModel;
 
+/**
+ * App\Models\Auth\AdminGroup
+ *
+ * @property int                             $id
+ * @property string                          $name
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminGroup newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminGroup newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminGroup query()
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminGroup whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminGroup whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminGroup whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminGroup whereUpdatedAt($value)
+ * @mixin \Eloquent
+ */
 class AdminGroup extends BaseModel
 {
     protected $table = "admin_group";

+ 18 - 0
app/Models/Auth/AdminPermission.php

@@ -4,6 +4,24 @@ namespace App\Models\Auth;
 
 use App\Base\BaseModel;
 
+/**
+ * App\Models\Auth\AdminPermission
+ *
+ * @property int                             $id
+ * @property string                          $name
+ * @property string                          $code
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminPermission newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminPermission newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminPermission query()
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminPermission whereCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminPermission whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminPermission whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminPermission whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AdminPermission whereUpdatedAt($value)
+ * @mixin \Eloquent
+ */
 class AdminPermission extends BaseModel
 {
     protected $table = "admin_permission";

+ 33 - 1
app/Models/User.php

@@ -6,6 +6,33 @@ use App\Base\BaseModel;
 use App\Models\Auth\AdminGroup;
 use Illuminate\Auth\Authenticatable;
 
+/**
+ * App\Models\User
+ *
+ * @property int                             $id
+ * @property string                          $phone
+ * @property string                          $password
+ * @property string                          $email
+ * @property int                             $status 0 禁用 1启用
+ * @property int                             $group_id
+ * @property array                           $extra 糊屎字段
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property-read AdminGroup|null            $group
+ * @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|User newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|User query()
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereEmail($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereExtra($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereGroupId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User wherePhone($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value)
+ * @mixin \Eloquent
+ */
 class User extends BaseModel implements \Illuminate\Contracts\Auth\Authenticatable
 {
     use Authenticatable;
@@ -21,7 +48,12 @@ class User extends BaseModel implements \Illuminate\Contracts\Auth\Authenticatab
 
     public function checkPassword($password): bool
     {
-        return $this->password == hashid_encode($password);
+        return $this->password == $this->hashPassword($password);
+    }
+
+    public function hashPassword($password)
+    {
+        return hashid_encode($password);
     }
 
     public function group()

+ 9 - 0
app/Modules/Admin/Controllers/Admin/AuthController.php

@@ -28,4 +28,13 @@ class AuthController extends BaseController
     {
         return $this->ok($this->authService->profile());
     }
+
+    public function changePassword()
+    {
+        $data = $this->valid([
+            "old_password" => "required",
+            "password" => "required",
+        ]);
+        return $this->ok($this->authService->changePassword($data));
+    }
 }

+ 17 - 0
app/Modules/Admin/Controllers/Admin/UserController.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Modules\Admin\Controllers\Admin;
+
+use App\Base\BaseController;
+use App\Modules\Admin\Services\AuthService;
+
+class UserController extends BaseController
+{
+    protected $authService;
+
+    public function __construct(AuthService $authService)
+    {
+        $this->authService = $authService;
+    }
+
+}

+ 14 - 1
app/Modules/Admin/Services/AuthService.php

@@ -33,10 +33,23 @@ class AuthService
             "id" => $u->id,
             "phone" => $u->phone,
             "email" => $u->email,
-            "group" => $u->group->title,
+            "group" => $u->group->name,
         ];
     }
 
+    public function changePassword($data)
+    {
+        $u = Auth::user();
+        if (!$u->checkPassword($data['old_password'])) {
+            throw  new ClientException("原密码错误");
+        }
+
+        $u->password = $u->hashPassword($data['password']);
+        $u->save();
+
+        return true;
+    }
+
     public function encryptToken($uid)
     {
         return md5($uid) . $uid;

+ 11 - 0
app/Modules/Admin/Services/UserService.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Modules\Admin\Services;
+
+class UserService
+{
+    public function paginate($data)
+    {
+
+    }
+}

+ 5 - 5
database/seeders/DatabaseSeeder.php

@@ -19,11 +19,11 @@ class DatabaseSeeder extends Seeder
     {
         $this->auth();
         User::create([
-            "password"=>hashid_encode("111112"),
-            "email"=>"liantiao@lientiao.com",
-            "status"=>User::STATUS_OK,
-            "group_id"=>1,
-            "phone"=>15012341234,
+            "password" => hashid_encode("111111"),
+            "email" => "liantiao@lientiao.com",
+            "status" => User::STATUS_OK,
+            "group_id" => 1,
+            "phone" => 15012341234,
         ]);
     }
 

+ 1 - 0
routes/api.php

@@ -7,4 +7,5 @@ Route::post("/admin/auth/login", [\App\Modules\Admin\Controllers\Admin\AuthContr
 
 Route::middleware([\App\Http\Middleware\AdminAuthMiddleware::class])->group(function () {
     Route::get("/admin/auth/profile", [\App\Modules\Admin\Controllers\Admin\AuthController::class, "profile"]);
+    Route::post("/admin/auth/changePassword", [\App\Modules\Admin\Controllers\Admin\AuthController::class, "changePassword"]);
 });