kphcdr преди 1 година
родител
ревизия
e04d3981ba

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

@@ -4,22 +4,6 @@ namespace App\Models\Auth;
 
 use App\Base\BaseModel;
 
-/**
- * App\Models\Auth\AdminGroup
- *
- * @property int $id
- * @property string $title
- * @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 whereTitle($value)
- * @method static \Illuminate\Database\Eloquent\Builder|AdminGroup whereUpdatedAt($value)
- * @mixin \Eloquent
- */
 class AdminGroup extends BaseModel
 {
     protected $table = "admin_group";

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

@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Models\Auth;
+
+use App\Base\BaseModel;
+
+class AdminPermission extends BaseModel
+{
+    protected $table = "admin_permission";
+}

+ 0 - 28
app/Models/Auth/AdminRole.php

@@ -1,28 +0,0 @@
-<?php
-
-namespace App\Models\Auth;
-
-use App\Base\BaseModel;
-
-/**
- * App\Models\Auth\AdminRole
- *
- * @property int $id
- * @property string $title
- * @property string $code
- * @method static \Illuminate\Database\Eloquent\Builder|AdminRole newModelQuery()
- * @method static \Illuminate\Database\Eloquent\Builder|AdminRole newQuery()
- * @method static \Illuminate\Database\Eloquent\Builder|AdminRole query()
- * @method static \Illuminate\Database\Eloquent\Builder|AdminRole whereCode($value)
- * @method static \Illuminate\Database\Eloquent\Builder|AdminRole whereId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|AdminRole whereTitle($value)
- * @mixin \Eloquent
- * @property \Illuminate\Support\Carbon|null $created_at
- * @property \Illuminate\Support\Carbon|null $updated_at
- * @method static \Illuminate\Database\Eloquent\Builder|AdminRole whereCreatedAt($value)
- * @method static \Illuminate\Database\Eloquent\Builder|AdminRole whereUpdatedAt($value)
- */
-class AdminRole extends BaseModel
-{
-    protected $table = "admin_role";
-}

+ 0 - 44
app/Models/User.old

@@ -1,44 +0,0 @@
-<?php
-
-namespace App\Models;
-
-// use Illuminate\Contracts\Auth\MustVerifyEmail;
-use Illuminate\Database\Eloquent\Factories\HasFactory;
-use Illuminate\Foundation\Auth\User as Authenticatable;
-use Illuminate\Notifications\Notifiable;
-use Laravel\Sanctum\HasApiTokens;
-
-class User extends Authenticatable
-{
-    use HasApiTokens, HasFactory, Notifiable;
-
-    /**
-     * The attributes that are mass assignable.
-     *
-     * @var array<int, string>
-     */
-    protected $fillable = [
-        'name',
-        'email',
-        'password',
-    ];
-
-    /**
-     * The attributes that should be hidden for serialization.
-     *
-     * @var array<int, string>
-     */
-    protected $hidden = [
-        'password',
-        'remember_token',
-    ];
-
-    /**
-     * The attributes that should be cast.
-     *
-     * @var array<string, string>
-     */
-    protected $casts = [
-        'email_verified_at' => 'datetime',
-    ];
-}

+ 14 - 30
app/Models/User.php

@@ -3,45 +3,29 @@
 namespace App\Models;
 
 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
- * @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
+class User extends BaseModel implements \Illuminate\Contracts\Auth\Authenticatable
 {
-    protected $table="user";
+    use Authenticatable;
+
+    protected $table = "user";
 
     const STATUS_OK = 1;
     const STATUS_STOP = 2;
 
     protected $casts = [
-        "extra"=>"array"
+        "extra" => "array",
     ];
-    public function checkPassword($password):bool
+
+    public function checkPassword($password): bool
     {
         return $this->password == hashid_encode($password);
     }
+
+    public function group()
+    {
+        return $this->belongsTo(AdminGroup::class, "group_id", "id");
+    }
 }

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

@@ -23,4 +23,9 @@ class AuthController extends BaseController
         ]);
         return $this->ok($this->authService->login($data));
     }
+
+    public function profile()
+    {
+        return $this->ok($this->authService->profile());
+    }
 }

+ 28 - 4
app/Modules/Admin/Services/AuthService.php

@@ -4,22 +4,46 @@ namespace App\Modules\Admin\Services;
 
 use App\Exceptions\ClientException;
 use App\Models\User;
+use Illuminate\Support\Facades\Auth;
 
 class AuthService
 {
     public function login($data)
     {
         $u = User::wherePhone($data['username'])->orWhere("email",$data['username'])->first();
-        if(is_null($u)) {
+        if (is_null($u)) {
             throw new ClientException("账号或密码错误,请重新输入");
         }
-        if(!$u->checkPassword($data['password'])) {
+        if (!$u->checkPassword($data['password'])) {
             throw new ClientException("账号或密码错误,请重新输入!");
         }
 
-        if($u->status != User::STATUS_OK) {
+        if ($u->status != User::STATUS_OK) {
             throw new ClientException("当前用户被禁用,请联系管理员");
         }
-        return $u;
+        return [
+            "admin_token" => $this->encryptToken($u->id),
+        ];
+    }
+
+    public function profile()
+    {
+        $u = Auth::user();
+        return [
+            "id" => $u->id,
+            "phone" => $u->phone,
+            "email" => $u->email,
+            "group" => $u->group->title,
+        ];
+    }
+
+    public function encryptToken($uid)
+    {
+        return md5($uid) . $uid;
+    }
+
+    public function decryptToken($token)
+    {
+        return substr($token, 32);
     }
 }

+ 4 - 4
database/migrations/2023_04_26_024500_create_user_table.php

@@ -25,12 +25,12 @@ return new class extends Migration {
 
         Schema::create('admin_group', function (Blueprint $table) {
             $table->id();
-            $table->string("title")->default("");
+            $table->string("name")->default("");
             $table->timestamps();
         });
-        Schema::create('admin_role', function (Blueprint $table) {
+        Schema::create('admin_permission', function (Blueprint $table) {
             $table->id();
-            $table->string("title")->default("");
+            $table->string("name")->default("");
             $table->string("code")->default("");
             $table->timestamps();
         });
@@ -45,6 +45,6 @@ return new class extends Migration {
     {
         Schema::dropIfExists('user');
         Schema::dropIfExists('admin_group');
-        Schema::dropIfExists('admin_role');
+        Schema::dropIfExists('admin_permission');
     }
 };

+ 7 - 7
database/seeders/DatabaseSeeder.php

@@ -4,7 +4,7 @@ namespace Database\Seeders;
 
 // use Illuminate\Database\Console\Seeds\WithoutModelEvents;
 use App\Models\Auth\AdminGroup;
-use App\Models\Auth\AdminRole;
+use App\Models\Auth\AdminPermission;
 use App\Models\User;
 use Illuminate\Database\Seeder;
 
@@ -30,11 +30,11 @@ class DatabaseSeeder extends Seeder
     private function auth()
     {
         AdminGroup::truncate();
-        AdminRole::truncate();
-        AdminGroup::create(["title" => "超级管理员"]);
-        AdminGroup::create(["title" => "普通管理员"]);
-        AdminGroup::create(["title" => "员工"]);
-        AdminRole::create(["title" => "权限1", "code" => "code1"]);
-        AdminRole::create(["title" => "权限2", "code" => "code2"]);
+        AdminPermission::truncate();
+        AdminGroup::create(["name" => "超级管理员"]);
+        AdminGroup::create(["name" => "普通管理员"]);
+        AdminGroup::create(["name" => "员工"]);
+        AdminPermission::create(["name" => "权限1", "code" => "code1"]);
+        AdminPermission::create(["name" => "权限2", "code" => "code2"]);
     }
 }

+ 5 - 1
routes/api.php

@@ -3,4 +3,8 @@
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Route;
 
-Route::post("/admin/auth/login",[\App\Modules\Admin\Controllers\Admin\AuthController::class,"login"]);
+Route::post("/admin/auth/login", [\App\Modules\Admin\Controllers\Admin\AuthController::class, "login"]);
+
+Route::group(["middleware" => \App\Http\Middleware\AdminAuthMiddleware::class, "prefix" => "/admin"], function () {
+    Route::get("auth/profile", [\App\Modules\Admin\Controllers\Admin\AuthController::class, "profile"]);
+});