Browse Source

Merge pull request #1947 from visuddhinanda/laravel

添加角色支持
visuddhinanda 2 years ago
parent
commit
0a1c6ea07d

+ 2 - 0
app/Http/Api/MdRender.php

@@ -27,6 +27,7 @@ class MdRender{
         'format'=>'react',
         'debug'=>[],
         'studioId'=>null,
+        'lang'=>'en',
         ];
 
     public function __construct($options=[])
@@ -273,6 +274,7 @@ class MdRender{
                                         $this->options['format'],
                                         $this->options['studioId'],
                                         $this->options['debug']);
+
             $tplProps = $tplRender->render($tpl_name);
             if($this->options['format']==='react' && $tplProps){
                 $props = $doc->createAttribute("props");

+ 7 - 0
app/Http/Api/TemplateRender.php

@@ -58,6 +58,13 @@ class TemplateRender{
             }
         }
     }
+    /**
+     * TODO 设置默认语言。在渲染某些内容的时候需要语言信息
+     */
+    public function setLang($lang){
+        $this->lang = $lang;
+        $this->langFamily = explode('-',$lang)[0];
+    }
     private function info($message,$debug){
         if(in_array($debug,$this->debug)){
             Log::info($message);

+ 23 - 21
app/Http/Controllers/AuthController.php

@@ -96,29 +96,31 @@ class AuthController extends Controller
     }
     public function getUserInfoByToken(Request $request){
         $curr = AuthApi::current($request);
-        if($curr){
-            $userInfo = UserInfo::where('userid',$curr['user_uid'])
-                            ->first();
-            $user = [
-                "id"=>$curr['user_uid'],
-                "nickName"=> $userInfo->nickname,
-                "realName"=> $userInfo->username,
-                "avatar"=> "",
-                "roles"=> [],
-                "token"=>\substr($request->header('Authorization'),7) ,
-            ];
-            if($userInfo->avatar){
-                $img = str_replace('.jpg','_s.jpg',$userInfo->avatar);
-                if (App::environment('local')) {
-                    $user['avatar'] = Storage::url($img);
-                }else{
-                    $user['avatar'] = Storage::temporaryUrl($img, now()->addDays(6));
-                }
+        if(!$curr){
+            return $this->error('invalid token',401,401);
+        }
+        $userInfo = UserInfo::where('userid',$curr['user_uid'])
+                        ->first();
+        $user = [
+            "id"=>$curr['user_uid'],
+            "nickName"=> $userInfo->nickname,
+            "realName"=> $userInfo->username,
+            "avatar"=> "",
+            "roles"=> json_decode($userInfo->role),
+            "token"=>\substr($request->header('Authorization'),7) ,
+        ];
+        if($curr['user_uid'] === config('mint.admin.root_uuid')){
+            $user['roles'] = ['root'];
+        }
+        if($userInfo->avatar){
+            $img = str_replace('.jpg','_s.jpg',$userInfo->avatar);
+            if (App::environment('local')) {
+                $user['avatar'] = Storage::url($img);
+            }else{
+                $user['avatar'] = Storage::temporaryUrl($img, now()->addDays(6));
             }
-            return $this->ok($user);
-        }else{
-            return $this->error('invalid token',[401],401);
         }
+        return $this->ok($user);
     }
 
 }

+ 16 - 4
app/Http/Controllers/UserController.php

@@ -22,9 +22,17 @@ class UserController extends Controller
                                 ->orWhere('nickname','like','%'.$request->get("key").'%');
 
                 break;
+
+            case 'all':
+                $table = UserInfo::where('id','>',0);
+                break;
+        }
+        if($request->has("search")){
+            $table->where('nickname', 'like', $request->get("search")."%");
         }
         $count = $table->count();
-        $table = $table->orderBy($request->get('order','username'),$request->get('dir','desc'));
+        $table = $table->orderBy($request->get('order','username'),
+                                 $request->get('dir','desc'));
         $table = $table->skip($request->get("offset",0))
                        ->take($request->get('limit',20));
         $result = $table->get();
@@ -67,9 +75,13 @@ class UserController extends Controller
     {
         //
         $user = UserInfo::where('userid',$id)->first();
-        $user->nickname = $request->get('nickName');
-        $user->avatar = $request->get('avatar');
-        $user->email = $request->get('email');
+        if($request->has('roles')){
+            $user->role = json_encode($request->get('roles'));
+        }else{
+            $user->nickname = $request->get('nickName');
+            $user->avatar = $request->get('avatar');
+            $user->email = $request->get('email');
+        }
         $user->save();
         return $this->ok(new UserResource($user));
     }

+ 7 - 4
app/Http/Resources/UserResource.php

@@ -17,10 +17,13 @@ class UserResource extends JsonResource
     public function toArray($request)
     {
         $data = [
-            "id"=>$this->userid,
-            "userName"=> $this->username,
-            "nickName"=> $this->nickname,
-            "email"=> $this->email,
+            "id" => $this->userid,
+            "userName" => $this->username,
+            "nickName" => $this->nickname,
+            "email" => $this->email,
+            "role" => json_decode($this->role),
+            "created_at" => $this->created_at,
+            "updated_at" => $this->updated_at,
         ];
         if($this->avatar){
             $data['avatarName'] = $this->avatar;

+ 36 - 0
database/migrations/2024_02_11_150654_add_role_in_user_infos.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddRoleInUserInfos extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('user_infos', function (Blueprint $table) {
+            //
+            $table->json('role')->nullable();
+
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('user_infos', function (Blueprint $table) {
+            //
+            $table->dropColumn('role');
+
+        });
+    }
+}