Browse Source

注册用户注册公司

kely 8 months ago
parent
commit
1c2b67c76e

+ 24 - 0
app/Http/Controllers/API/CompanyController.php

@@ -14,6 +14,7 @@ use App\Http\Requests\API\Company\CreateOrUpdateRequest;
 use App\Http\Resources\API\CompanyResource;
 use App\Models\Company;
 use App\Models\User;
+use App\Services\File\FileAssociationService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 
@@ -77,4 +78,27 @@ class CompanyController extends Controller
 
         return $this->noContent();
     }
+
+    public function registerStore(FileAssociationService $service,CreateOrUpdateRequest $request)
+    {
+        $company = new Company();
+
+        $service->check(
+          $request->get("file_ids",[]),
+          FileObjectType::COMPANY,
+          $request->get("file_uuid"),
+        );
+
+        $company->fill([
+            ...$request->all(),
+        ]);
+
+        $company->save();
+
+        $service->association($company->id);
+
+        return $this->created();
+    }
+
+
 }

+ 16 - 0
app/Http/Controllers/API/UserController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\API;
 use App\Http\Controllers\Controller;
 use App\Http\Requests\API\User\AdminUpdateRequest;
 use App\Http\Requests\API\User\BatchCreateRequest;
+use App\Http\Requests\API\User\CreateCompanyUserRequest;
 use App\Http\Requests\API\User\CreateRequest;
 use App\Http\Requests\API\User\UpdateRequest;
 use App\Http\Resources\API\UserInfoResource;
@@ -212,4 +213,19 @@ class UserController extends Controller
 //
 //    }
 
+    /**
+     * add a new User
+     * @return \Illuminate\Http\Response
+     */
+    public function storeCompanyUser(CreateCompanyUserRequest $request){
+        $password = Hash::make($request->password);
+        $userRequest=$request->all();
+        $userRequest['password']=$password;
+        User::create([
+            ...$userRequest,
+            'created_by' => Auth::id(),
+        ]);
+        return $this->created();
+    }
+
 }

+ 37 - 0
app/Http/Requests/API/User/CreateCompanyUserRequest.php

@@ -0,0 +1,37 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/6/27
+ * Time: 上午 10:21
+ */
+
+namespace App\Http\Requests\API\User;
+
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class CreateCompanyUserRequest extends FormRequest
+{
+    use RuleHelper;
+
+    /**
+     * Determine if the user is authorized to make this request.
+     */
+    public function authorize(): bool
+    {
+        return true;
+    }
+
+    public function rules(): array
+    {
+
+        return [
+            'name' => 'required|max:100',
+            'email' => 'required|email|unique:users',
+            'username'=>'required|max:30|unique:users',
+            'password' => 'required|min:6|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,}$/', // 至少6位,包含大小写字母和数字,At least 6 digits, including upper and lower case letters and numbers
+            'phone'=>'nullable|regex:/^\d{8,11}$/',
+        ];
+    }
+}

+ 5 - 0
app/Models/Enums/FileObjectType.php

@@ -4,6 +4,7 @@ namespace App\Models\Enums;
 
 use App\Models\Action;
 use App\Models\Asset;
+use App\Models\Company;
 use App\Models\Container;
 use App\Models\Plan;
 use App\Models\Project;
@@ -26,6 +27,8 @@ enum FileObjectType: string
 
     case CONTAINER = "container";
 
+    case COMPANY = "company";
+
     public function modelBuilder(): \Illuminate\Database\Eloquent\Builder
     {
         return match ($this) {
@@ -36,6 +39,7 @@ enum FileObjectType: string
             self::ACTION => Action::query(),
             self::PLAN => Plan::query(),
             self::CONTAINER => Container::query(),
+            self::COMPANY => Company::query(),
         };
     }
 
@@ -49,6 +53,7 @@ enum FileObjectType: string
             self::ACTION => Action::query(),
             self::PLAN => Plan::query(),
             self::CONTAINER => Container::query()->allowed($id),
+            self::COMPANY => Company::query(),
         };
     }
 }