diff --git a/app/Helpers/GeneralHelper.php b/app/Helpers/GeneralHelper.php new file mode 100644 index 0000000..71a44f2 --- /dev/null +++ b/app/Helpers/GeneralHelper.php @@ -0,0 +1,12 @@ +role; + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/Api/AuthController.php b/app/Http/Controllers/Api/AuthController.php new file mode 100644 index 0000000..f1e0854 --- /dev/null +++ b/app/Http/Controllers/Api/AuthController.php @@ -0,0 +1,86 @@ +role, $roles) == false){ + return response()->json([ + 'status' => 401, + 'message' => 'Only ADMIN, PRODUCT_OWNER and MEMBER role are allowed', + ], 401); + } + + $user = User::create([ + 'username' => $request->username, + 'password' => Hash::make($request->password), + 'role' => $request->role + ]); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'User Successfully Created', + 'token' => $user->createToken($request->username)->plainTextToken + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function login(LoginUserRequest $request) + { + try { + + if(!Auth::attempt($request->only(['username', 'password']))){ + return response()->json([ + 'status' => 401, + 'message' => 'Username & Password does not match with our record.', + ], 401); + } + + $user = User::where('username', $request->username)->first(); + + return response()->json([ + 'status' => 200, + 'message' => 'User Successfully Logged In', + 'token' => $user->createToken($request->username)->plainTextToken + ], 200); + + } catch (Exception $e) { + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } +} diff --git a/app/Http/Controllers/Api/ProjectController.php b/app/Http/Controllers/Api/ProjectController.php new file mode 100644 index 0000000..1df45aa --- /dev/null +++ b/app/Http/Controllers/Api/ProjectController.php @@ -0,0 +1,182 @@ +q ?? null; + $pageIndex = $request->pageIndex ?? 0; + $pageSize = $request->pageSize ?? 3; + $sortBy = $request->sortBy ?? 'name'; + $sortDirection = $request->sortDirection ?? 'ASC'; + + $projects = Project::where( 'name', 'LIKE', '%' . $search . '%' ) + ->skip($pageIndex*$pageSize) + ->take($pageSize) + ->orderBy($sortBy, $sortDirection) + ->get(); + + return response()->json([ + 'status' => 200, + 'message' => 'Project List Successfully Retrieved', + 'data' => $projects->toArray() + ], 200); + + } catch (Exception $e) { + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function store(StoreProjectRequest $request) + { + DB::beginTransaction(); + + try { + + if(getRole() != 'PRODUCT_OWNER'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + $project = Project::create([ + 'name' => $request->name, + ]); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'Project Successfully Created', + 'data' => $project->toArray() + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function show(Project $project) + { + try { + + return response()->json([ + 'status' => 200, + 'message' => 'Project Successfully Retrieved', + 'data' => $project->toArray() + ], 200); + + } catch (Exception $e) { + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function update(UpdateProjectRequest $request, Project $project) + { + DB::beginTransaction(); + + try { + + if(getRole() != 'PRODUCT_OWNER'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + $project->name = $request->name; + $project->save(); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'Project Successfully Updated', + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function destroy(Project $project) + { + DB::beginTransaction(); + + try { + + if(getRole() != 'PRODUCT_OWNER'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + $tasks = Task::where('project_id', $project->id)->get(); + + if(!empty($tasks->toArray())){ + foreach($tasks as $task){ + $task->delete(); + } + } + + $project->delete(); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'Project Successfully Deleted', + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } +} diff --git a/app/Http/Controllers/Api/TaskController.php b/app/Http/Controllers/Api/TaskController.php new file mode 100644 index 0000000..ddaeb26 --- /dev/null +++ b/app/Http/Controllers/Api/TaskController.php @@ -0,0 +1,272 @@ +id)->get(); + } + + return response()->json([ + 'status' => 200, + 'message' => 'Task List Successfully Retrieved', + 'data' => $tasks->toArray() + ], 200); + + } catch (Exception $e) { + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function store(StoreTaskRequest $request) + { + DB::beginTransaction(); + + try { + + if(getRole() != 'PRODUCT_OWNER'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + $check_user_availability = Task::where('project_id', $request->project_id)->where('user_id', $request->user_id)->first(); + + if(!empty($check_user_availability) || $check_user_availability != null){ + return response()->json([ + 'status' => 401, + 'message' => 'User is allowed to registered only one task for each project.', + ], 401); + } + + $task = Task::create([ + 'title' => $request->title, + 'description' => $request->description, + 'status' => 'NOT_STARTED', + 'project_id' => $request->project_id, + 'user_id' => $request->user_id, + ]); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'Task Successfully Created', + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function show(Task $task) + { + try { + + return response()->json([ + 'status' => 200, + 'message' => 'Task Successfully Retrieved', + 'data' => $task->toArray() + ], 200); + + } catch (Exception $e) { + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function update(UpdateTaskRequest $request, Task $task) + { + DB::beginTransaction(); + + $task_status = ['NOT_STARTED', 'IN_PROGRESS', 'READY_FOR_TEST', 'COMPLETED']; + + try { + + if(getRole() != 'PRODUCT_OWNER'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + if(in_array($request->status, $task_status) == false){ + return response()->json([ + 'status' => 401, + 'message' => 'Only NOT_STARTED, IN_PROGRESS, READY_FOR_TEST and COMPLETED task\'s status are allowed', + ], 401); + } + + $check_user_availability = Task::where('project_id', $request->project_id) + ->where('user_id', $request->user_id) + ->where('id', '!=',$task->id) + ->get() + ->toArray(); + + if(!empty($check_user_availability) || $check_user_availability != null){ + return response()->json([ + 'status' => 401, + 'message' => 'User is allowed to registered only one task for each project.', + ], 401); + } + + $task->title = $request->title; + $task->description = $request->description; + $task->status = $request->status; + $task->project_id = $request->project_id; + $task->user_id = $request->user_id; + $task->save(); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'Task Successfully Updated', + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function destroy(Task $task) + { + DB::beginTransaction(); + + try { + + if(getRole() != 'PRODUCT_OWNER'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + $task->delete(); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'Task Successfully Deleted', + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function taskListByProject($id) + { + try { + + $tasks = Task::where('project_id', $id)->get(); + + return response()->json([ + 'status' => 200, + 'message' => 'Task List Successfully Retrieved', + 'data' => $tasks->toArray() + ], 200); + + } catch (Exception $e) { + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function updateTaskStatus(UpdateTaskStatusRequest $request, Task $task) + { + DB::beginTransaction(); + + $task_status = ['NOT_STARTED', 'IN_PROGRESS', 'READY_FOR_TEST', 'COMPLETED']; + + try { + + if(in_array($request->status, $task_status) == false){ + return response()->json([ + 'status' => 401, + 'message' => 'Only NOT_STARTED, IN_PROGRESS, READY_FOR_TEST and COMPLETED task\'s status are allowed', + ], 401); + } + + $task->description = $request->description; + $task->status = $request->status; + $task->save(); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'Task Successfully Updated', + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } +} diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php new file mode 100644 index 0000000..02886f8 --- /dev/null +++ b/app/Http/Controllers/Api/UserController.php @@ -0,0 +1,241 @@ +json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + $users = User::all(); + + return response()->json([ + 'status' => 200, + 'message' => 'User List Successfully Retrieved', + 'data' => $users->toArray() + ], 200); + + } catch (Exception $e) { + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function store(StoreUserRequest $request) + { + DB::beginTransaction(); + + $roles = ['ADMIN', 'PRODUCT_OWNER', 'MEMBER']; + + try { + + if(in_array($request->role, $roles) == false){ + return response()->json([ + 'status' => 401, + 'message' => 'Only ADMIN, PRODUCT_OWNER and MEMBER role are allowed', + ], 401); + } + + if(getRole() != 'ADMIN'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + $user = User::create([ + 'username' => $request->username, + 'password' => Hash::make($request->password), + 'role' => $request->role + ]); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'User Successfully Created', + 'token' => $user->createToken($request->username)->plainTextToken + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function show(User $user) + { + try { + + if(getRole() != 'ADMIN'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + return response()->json([ + 'status' => 200, + 'message' => 'User Successfully Retrieved', + 'data' => $user->toArray() + ], 200); + + } catch (Exception $e) { + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function update(UpdateUserRequest $request, User $user) + { + DB::beginTransaction(); + + $roles = ['ADMIN', 'PRODUCT_OWNER', 'MEMBER']; + + try { + + if(in_array($request->role, $roles) == false){ + return response()->json([ + 'status' => 401, + 'message' => 'Only ADMIN, PRODUCT_OWNER and MEMBER role are allowed', + ], 401); + } + + if(getRole() != 'ADMIN'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + $user->username = $request->username; + $user->role = $request->role; + + if ($request->filled('password')) { + $user->password = Hash::make($request->password); + $user->save(); + }else{ + $user->save(); + } + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'User Successfully Updated', + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function updatePassword(UpdateUserPasswordRequest $request, User $user) + { + DB::beginTransaction(); + + try { + + if(getRole() != 'ADMIN'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + $user->password = Hash::make($request->password); + $user->save(); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'User Password Successfully Updated', + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } + + public function destroy(User $user) + { + DB::beginTransaction(); + + try { + + if(getRole() != 'ADMIN'){ + return response()->json([ + 'status' => 401, + 'message' => 'you do not have permission to access this API', + ], 401); + } + + $user->delete(); + + DB::commit(); + + return response()->json([ + 'status' => 200, + 'message' => 'User Successfully Deleted', + ], 200); + + } catch (Exception $e) { + + DB::rollBack(); + + return response()->json([ + 'status' => 500, + 'message' => $e->getMessage() + ], 500); + + } + } +} diff --git a/app/Http/Requests/LoginUserRequest.php b/app/Http/Requests/LoginUserRequest.php new file mode 100644 index 0000000..ff7bcc9 --- /dev/null +++ b/app/Http/Requests/LoginUserRequest.php @@ -0,0 +1,32 @@ + 'required|string', + 'password' => 'required|string' + ]; + } + + public function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => 401, + 'message' => 'Validation errors', + 'errors' => $validator->errors() + ])); + } +} diff --git a/app/Http/Requests/RegisterUserRequest.php b/app/Http/Requests/RegisterUserRequest.php new file mode 100644 index 0000000..1e281e2 --- /dev/null +++ b/app/Http/Requests/RegisterUserRequest.php @@ -0,0 +1,33 @@ + 'required|string|unique:users,username', + 'password' => 'required|string|min:6', + 'role' => 'required|string' + ]; + } + + public function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => 401, + 'message' => 'Validation errors', + 'errors' => $validator->errors() + ])); + } +} diff --git a/app/Http/Requests/StoreProjectRequest.php b/app/Http/Requests/StoreProjectRequest.php new file mode 100644 index 0000000..54708d3 --- /dev/null +++ b/app/Http/Requests/StoreProjectRequest.php @@ -0,0 +1,31 @@ + 'required|string|unique:projects,name' + ]; + } + + public function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => 401, + 'message' => 'Validation errors', + 'errors' => $validator->errors() + ])); + } +} diff --git a/app/Http/Requests/StoreTaskRequest.php b/app/Http/Requests/StoreTaskRequest.php new file mode 100644 index 0000000..525ce93 --- /dev/null +++ b/app/Http/Requests/StoreTaskRequest.php @@ -0,0 +1,34 @@ + 'required|string', + 'description' => 'nullable|string', + 'project_id' => 'required|uuid', + 'user_id' => 'required|uuid', + ]; + } + + public function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => 401, + 'message' => 'Validation errors', + 'errors' => $validator->errors() + ])); + } +} diff --git a/app/Http/Requests/StoreUserRequest.php b/app/Http/Requests/StoreUserRequest.php new file mode 100644 index 0000000..4d18a03 --- /dev/null +++ b/app/Http/Requests/StoreUserRequest.php @@ -0,0 +1,33 @@ + 'required|string|unique:users,username', + 'password' => 'required|string|min:6', + 'role' => 'required|string' + ]; + } + + public function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => 401, + 'message' => 'Validation errors', + 'errors' => $validator->errors() + ])); + } +} diff --git a/app/Http/Requests/UpdateProjectRequest.php b/app/Http/Requests/UpdateProjectRequest.php new file mode 100644 index 0000000..5f73fec --- /dev/null +++ b/app/Http/Requests/UpdateProjectRequest.php @@ -0,0 +1,31 @@ + 'required|string|unique:projects,name' + ]; + } + + public function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => 401, + 'message' => 'Validation errors', + 'errors' => $validator->errors() + ])); + } +} diff --git a/app/Http/Requests/UpdateTaskRequest.php b/app/Http/Requests/UpdateTaskRequest.php new file mode 100644 index 0000000..0c28a10 --- /dev/null +++ b/app/Http/Requests/UpdateTaskRequest.php @@ -0,0 +1,35 @@ + 'required|string', + 'description' => 'nullable|string', + 'status' => 'required|string', + 'project_id' => 'required|uuid', + 'user_id' => 'required|uuid', + ]; + } + + public function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => 401, + 'message' => 'Validation errors', + 'errors' => $validator->errors() + ])); + } +} diff --git a/app/Http/Requests/UpdateTaskStatusRequest.php b/app/Http/Requests/UpdateTaskStatusRequest.php new file mode 100644 index 0000000..d223c80 --- /dev/null +++ b/app/Http/Requests/UpdateTaskStatusRequest.php @@ -0,0 +1,32 @@ + 'nullable|string', + 'status' => 'required|string' + ]; + } + + public function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => 401, + 'message' => 'Validation errors', + 'errors' => $validator->errors() + ])); + } +} diff --git a/app/Http/Requests/UpdateUserPasswordRequest.php b/app/Http/Requests/UpdateUserPasswordRequest.php new file mode 100644 index 0000000..a61274b --- /dev/null +++ b/app/Http/Requests/UpdateUserPasswordRequest.php @@ -0,0 +1,31 @@ + 'required|string|min:6' + ]; + } + + public function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => 401, + 'message' => 'Validation errors', + 'errors' => $validator->errors() + ])); + } +} diff --git a/app/Http/Requests/UpdateUserRequest.php b/app/Http/Requests/UpdateUserRequest.php new file mode 100644 index 0000000..14402a6 --- /dev/null +++ b/app/Http/Requests/UpdateUserRequest.php @@ -0,0 +1,33 @@ + 'required|string|unique:users,username', + 'password' => 'nullable|string|min:6', + 'role' => 'required|string', + ]; + } + + public function failedValidation(Validator $validator) + { + throw new HttpResponseException(response()->json([ + 'status' => 401, + 'message' => 'Validation errors', + 'errors' => $validator->errors() + ])); + } +} diff --git a/app/Models/Project.php b/app/Models/Project.php new file mode 100644 index 0000000..bd8f9c8 --- /dev/null +++ b/app/Models/Project.php @@ -0,0 +1,21 @@ +hasMany(Task::class); + } +} diff --git a/app/Models/Task.php b/app/Models/Task.php new file mode 100644 index 0000000..de5513e --- /dev/null +++ b/app/Models/Task.php @@ -0,0 +1,30 @@ +belongsTo(Project::class); + } + + public function user() + { + return $this->belongsTo(User::class); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 8996368..3fc1f45 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,38 +7,25 @@ use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; +use App\Traits\UUID; class User extends Authenticatable { - use HasApiTokens, HasFactory, Notifiable; + use HasApiTokens, HasFactory, Notifiable, UUID; - /** - * The attributes that are mass assignable. - * - * @var array - */ protected $fillable = [ - 'name', - 'email', + 'username', 'password', + 'role' ]; - /** - * The attributes that should be hidden for serialization. - * - * @var array - */ protected $hidden = [ 'password', 'remember_token', ]; - /** - * The attributes that should be cast. - * - * @var array - */ - protected $casts = [ - 'email_verified_at' => 'datetime', - ]; + public function tasks() + { + return $this->hasMany(Task::class); + } } diff --git a/app/Traits/UUID.php b/app/Traits/UUID.php new file mode 100644 index 0000000..559d506 --- /dev/null +++ b/app/Traits/UUID.php @@ -0,0 +1,28 @@ +{$model->getKeyName()})) { + $model->{$model->getKeyName()} = Str::uuid()->toString(); + } + }); + } + + public function getIncrementing() + { + return false; + } + + public function getKeyType() + { + return 'string'; + } +} \ No newline at end of file diff --git a/composer.json b/composer.json index 2b0c115..4a72436 100644 --- a/composer.json +++ b/composer.json @@ -30,7 +30,10 @@ "autoload-dev": { "psr-4": { "Tests\\": "tests/" - } + }, + "files": [ + "app/Helpers/GeneralHelper.php" + ] }, "scripts": { "post-autoload-dump": [ diff --git a/composer.lock b/composer.lock index 59a2b32..7c9cb1a 100644 --- a/composer.lock +++ b/composer.lock @@ -6,6 +6,62 @@ ], "content-hash": "c61ff82cbf0142a401a48a8161e1595a", "packages": [ + { + "name": "asm89/stack-cors", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" + }, + "require-dev": { + "phpunit/phpunit": "^7|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" + }, + "time": "2022-01-18T09:12:03+00:00" + }, { "name": "brick/math", "version": "0.9.3", @@ -68,16 +124,16 @@ }, { "name": "dflydev/dot-access-data", - "version": "v3.0.1", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" + "reference": "f41715465d65213d644d3141a6a93081be5d3549" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", + "reference": "f41715465d65213d644d3141a6a93081be5d3549", "shasum": "" }, "require": { @@ -88,7 +144,7 @@ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", "scrutinizer/ocular": "1.6.0", "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^3.14" + "vimeo/psalm": "^4.0.0" }, "type": "library", "extra": { @@ -137,34 +193,34 @@ ], "support": { "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" }, - "time": "2021-08-13T13:06:58+00:00" + "time": "2022-10-27T11:44:00+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.4", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", + "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25" }, "type": "library", "autoload": { @@ -214,7 +270,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.4" + "source": "https://github.com/doctrine/inflector/tree/2.0.6" }, "funding": [ { @@ -230,20 +286,20 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:16:43+00:00" + "time": "2022-10-20T09:10:12+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", - "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { @@ -251,7 +307,7 @@ }, "require-dev": { "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "1.3", + "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "vimeo/psalm": "^4.11" }, @@ -290,7 +346,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.2" + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, "funding": [ { @@ -306,20 +362,20 @@ "type": "tidelift" } ], - "time": "2022-01-12T08:27:12+00:00" + "time": "2022-02-28T11:07:21+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.1", + "version": "v3.3.2", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" + "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", + "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", "shasum": "" }, "require": { @@ -359,7 +415,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" }, "funding": [ { @@ -367,7 +423,7 @@ "type": "github" } ], - "time": "2022-01-18T15:43:28+00:00" + "time": "2022-09-10T18:51:20+00:00" }, { "name": "egulias/email-validator", @@ -439,20 +495,20 @@ }, { "name": "fruitcake/laravel-cors", - "version": "v2.1.0", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "361d71f00a0eea8b74da26ae75d0d207c53aa5b3" + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/361d71f00a0eea8b74da26ae75d0d207c53aa5b3", - "reference": "361d71f00a0eea8b74da26ae75d0d207c53aa5b3", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", "shasum": "" }, "require": { - "fruitcake/php-cors": "^1", + "asm89/stack-cors": "^2.0.1", "illuminate/contracts": "^6|^7|^8|^9", "illuminate/support": "^6|^7|^8|^9", "php": ">=7.2" @@ -502,78 +558,7 @@ ], "support": { "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v2.1.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-02-19T14:17:28+00:00" - }, - { - "name": "fruitcake/php-cors", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", - "shasum": "" - }, - "require": { - "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barryvdh", - "email": "barryvdh@gmail.com" - } - ], - "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", - "homepage": "https://github.com/fruitcake/php-cors", - "keywords": [ - "cors", - "laravel", - "symfony" - ], - "support": { - "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" }, "funding": [ { @@ -585,28 +570,28 @@ "type": "github" } ], - "time": "2022-02-20T15:07:15+00:00" + "time": "2022-02-23T14:25:13+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.0.4", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9" }, "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "phpunit/phpunit": "^8.5.28 || ^9.5.21" }, "type": "library", "autoload": { @@ -635,7 +620,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" }, "funding": [ { @@ -647,26 +632,26 @@ "type": "tidelift" } ], - "time": "2021-11-21T21:41:47+00:00" + "time": "2022-07-30T15:56:11+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.4.1", + "version": "7.5.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", - "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "guzzlehttp/psr7": "^1.9 || ^2.4", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -675,10 +660,10 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -688,8 +673,12 @@ }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "7.4-dev" + "dev-master": "7.5-dev" } }, "autoload": { @@ -755,7 +744,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.1" + "source": "https://github.com/guzzle/guzzle/tree/7.5.0" }, "funding": [ { @@ -771,20 +760,20 @@ "type": "tidelift" } ], - "time": "2021-12-06T18:43:05+00:00" + "time": "2022-08-28T15:39:27+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "reference": "b94b2807d85443f9719887892882d0329d1e2598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", + "reference": "b94b2807d85443f9719887892882d0329d1e2598", "shasum": "" }, "require": { @@ -800,12 +789,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -839,7 +828,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "source": "https://github.com/guzzle/promises/tree/1.5.2" }, "funding": [ { @@ -855,20 +844,20 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2022-08-28T14:55:35+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.1.0", + "version": "2.4.3", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" + "reference": "67c26b443f348a51926030c83481b85718457d3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", - "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", + "reference": "67c26b443f348a51926030c83481b85718457d3d", "shasum": "" }, "require": { @@ -882,17 +871,21 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.4-dev" } }, "autoload": { @@ -954,7 +947,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.1.0" + "source": "https://github.com/guzzle/psr7/tree/2.4.3" }, "funding": [ { @@ -970,20 +963,20 @@ "type": "tidelift" } ], - "time": "2021-10-06T17:43:30+00:00" + "time": "2022-10-26T14:07:24+00:00" }, { "name": "laravel/framework", - "version": "v8.83.1", + "version": "v8.83.26", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "bddba117f8bce2f3c9875ca1ca375a96350d0f4d" + "reference": "7411d9fa71c1b0fd73a33e225f14512b74e6c81e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/bddba117f8bce2f3c9875ca1ca375a96350d0f4d", - "reference": "bddba117f8bce2f3c9875ca1ca375a96350d0f4d", + "url": "https://api.github.com/repos/laravel/framework/zipball/7411d9fa71c1b0fd73a33e225f14512b74e6c81e", + "reference": "7411d9fa71c1b0fd73a33e225f14512b74e6c81e", "shasum": "" }, "require": { @@ -1143,24 +1136,25 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-02-15T15:05:20+00:00" + "time": "2022-11-01T14:48:50+00:00" }, { "name": "laravel/sanctum", - "version": "v2.14.1", + "version": "v2.15.1", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "89937617fa144ddb759a740861a47c4f2fd2245b" + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/89937617fa144ddb759a740861a47c4f2fd2245b", - "reference": "89937617fa144ddb759a740861a47c4f2fd2245b", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", "shasum": "" }, "require": { "ext-json": "*", + "illuminate/console": "^6.9|^7.0|^8.0|^9.0", "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", "illuminate/database": "^6.9|^7.0|^8.0|^9.0", "illuminate/support": "^6.9|^7.0|^8.0|^9.0", @@ -1207,29 +1201,30 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2022-02-15T08:08:57+00:00" + "time": "2022-04-08T13:39:49+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.1.1", + "version": "v1.2.2", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e" + "reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/9e4b005daa20b0c161f3845040046dc9ddc1d74e", - "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/47afb7fae28ed29057fdca37e16a84f90cc62fae", + "reference": "47afb7fae28ed29057fdca37e16a84f90cc62fae", "shasum": "" }, "require": { "php": "^7.3|^8.0" }, "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" }, "type": "library", "extra": { @@ -1266,20 +1261,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2022-02-11T19:23:53+00:00" + "time": "2022-09-08T13:45:54+00:00" }, { "name": "laravel/tinker", - "version": "v2.7.0", + "version": "v2.7.2", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" + "reference": "dff39b661e827dae6e092412f976658df82dbac5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", - "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", + "url": "https://api.github.com/repos/laravel/tinker/zipball/dff39b661e827dae6e092412f976658df82dbac5", + "reference": "dff39b661e827dae6e092412f976658df82dbac5", "shasum": "" }, "require": { @@ -1332,22 +1327,22 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.7.0" + "source": "https://github.com/laravel/tinker/tree/v2.7.2" }, - "time": "2022-01-10T08:52:49+00:00" + "time": "2022-03-23T12:38:24+00:00" }, { "name": "league/commonmark", - "version": "2.2.2", + "version": "2.3.6", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "13d7751377732637814f0cda0e3f6d3243f9f769" + "reference": "857afc47ce113454bd629037213378ba3219dd40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/13d7751377732637814f0cda0e3f6d3243f9f769", - "reference": "13d7751377732637814f0cda0e3f6d3243f9f769", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/857afc47ce113454bd629037213378ba3219dd40", + "reference": "857afc47ce113454bd629037213378ba3219dd40", "shasum": "" }, "require": { @@ -1356,24 +1351,26 @@ "php": "^7.4 || ^8.0", "psr/event-dispatcher": "^1.0", "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "require-dev": { "cebe/markdown": "^1.0", "commonmark/cmark": "0.30.0", "commonmark/commonmark.js": "0.30.0", "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", "erusev/parsedown": "^1.0", "ext-json": "*", "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", + "symfony/finder": "^5.3 | ^6.0", "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0" }, "suggest": { "symfony/yaml": "v2.3+ required if using the Front Matter extension" @@ -1381,7 +1378,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.3-dev" + "dev-main": "2.4-dev" } }, "autoload": { @@ -1438,7 +1435,7 @@ "type": "tidelift" } ], - "time": "2022-02-13T15:00:57+00:00" + "time": "2022-10-30T16:45:38+00:00" }, { "name": "league/config", @@ -1524,16 +1521,16 @@ }, { "name": "league/flysystem", - "version": "1.1.9", + "version": "1.1.10", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99" + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1", "shasum": "" }, "require": { @@ -1606,7 +1603,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" + "source": "https://github.com/thephpleague/flysystem/tree/1.1.10" }, "funding": [ { @@ -1614,20 +1611,20 @@ "type": "other" } ], - "time": "2021-12-09T09:40:50+00:00" + "time": "2022-10-04T09:16:37+00:00" }, { "name": "league/mime-type-detection", - "version": "1.9.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", - "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", "shasum": "" }, "require": { @@ -1658,7 +1655,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.9.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" }, "funding": [ { @@ -1670,20 +1667,20 @@ "type": "tidelift" } ], - "time": "2021-11-21T11:48:40+00:00" + "time": "2022-04-17T13:12:02+00:00" }, { "name": "monolog/monolog", - "version": "2.3.5", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", - "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", "shasum": "" }, "require": { @@ -1696,18 +1693,22 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", "graylog2/gelf-php": "^1.4.2", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", + "phpspec/prophecy": "^1.15", "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90@dev", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -1722,7 +1723,6 @@ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, @@ -1757,7 +1757,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.3.5" + "source": "https://github.com/Seldaek/monolog/tree/2.8.0" }, "funding": [ { @@ -1769,20 +1769,20 @@ "type": "tidelift" } ], - "time": "2021-10-01T21:08:31+00:00" + "time": "2022-07-24T11:55:47+00:00" }, { "name": "nesbot/carbon", - "version": "2.57.0", + "version": "2.62.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4a54375c21eea4811dbd1149fe6b246517554e78" + "reference": "01bc4cdefe98ef58d1f9cb31bdbbddddf2a88f7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4a54375c21eea4811dbd1149fe6b246517554e78", - "reference": "4a54375c21eea4811dbd1149fe6b246517554e78", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/01bc4cdefe98ef58d1f9cb31bdbbddddf2a88f7a", + "reference": "01bc4cdefe98ef58d1f9cb31bdbbddddf2a88f7a", "shasum": "" }, "require": { @@ -1797,10 +1797,12 @@ "doctrine/orm": "^2.7", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.54 || ^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", "squizlabs/php_codesniffer": "^3.4" }, "bin": [ @@ -1857,15 +1859,19 @@ }, "funding": [ { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" }, { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", "type": "tidelift" } ], - "time": "2022-02-13T18:13:33+00:00" + "time": "2022-09-02T07:48:13+00:00" }, { "name": "nette/schema", @@ -1931,20 +1937,20 @@ }, { "name": "nette/utils", - "version": "v3.2.7", + "version": "v3.2.8", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" + "reference": "02a54c4c872b99e4ec05c4aec54b5a06eb0f6368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", + "url": "https://api.github.com/repos/nette/utils/zipball/02a54c4c872b99e4ec05c4aec54b5a06eb0f6368", + "reference": "02a54c4c872b99e4ec05c4aec54b5a06eb0f6368", "shasum": "" }, "require": { - "php": ">=7.2 <8.2" + "php": ">=7.2 <8.3" }, "conflict": { "nette/di": "<3.0.6" @@ -2010,22 +2016,22 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v3.2.7" + "source": "https://github.com/nette/utils/tree/v3.2.8" }, - "time": "2022-01-24T11:29:14+00:00" + "time": "2022-09-12T23:36:20+00:00" }, { "name": "nikic/php-parser", - "version": "v4.13.2", + "version": "v4.15.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", "shasum": "" }, "require": { @@ -2066,9 +2072,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" }, - "time": "2021-11-30T19:35:32+00:00" + "time": "2022-09-04T07:30:47+00:00" }, { "name": "opis/closure", @@ -2098,12 +2104,12 @@ } }, "autoload": { - "psr-4": { - "Opis\\Closure\\": "src/" - }, "files": [ "functions.php" - ] + ], + "psr-4": { + "Opis\\Closure\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2137,29 +2143,33 @@ }, { "name": "phpoption/phpoption", - "version": "1.8.1", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "bamarni/composer-bin-plugin": "^1.8", + "phpunit/phpunit": "^8.5.28 || ^9.5.21" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -2192,7 +2202,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" }, "funding": [ { @@ -2204,7 +2214,7 @@ "type": "tidelift" } ], - "time": "2021-12-04T23:24:31+00:00" + "time": "2022-07-30T15:51:26+00:00" }, { "name": "psr/container", @@ -2567,16 +2577,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.1", + "version": "v0.11.8", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "570292577277f06f590635381a7f761a6cf4f026" + "reference": "f455acf3645262ae389b10e9beba0c358aa6994e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", - "reference": "570292577277f06f590635381a7f761a6cf4f026", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/f455acf3645262ae389b10e9beba0c358aa6994e", + "reference": "f455acf3645262ae389b10e9beba0c358aa6994e", "shasum": "" }, "require": { @@ -2587,16 +2597,17 @@ "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.05.02" + "bamarni/composer-bin-plugin": "^1.2" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." }, "bin": [ "bin/psysh" @@ -2636,9 +2647,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.1" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.8" }, - "time": "2022-01-03T13:58:38+00:00" + "time": "2022-07-28T14:25:11+00:00" }, { "name": "ralouphie/getallheaders", @@ -2828,12 +2839,12 @@ } }, "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, "files": [ "src/functions.php" - ] + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2939,16 +2950,16 @@ }, { "name": "symfony/console", - "version": "v5.4.3", + "version": "v5.4.15", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a2a86ec353d825c75856c6fd14fac416a7bdb6b8" + "reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a2a86ec353d825c75856c6fd14fac416a7bdb6b8", - "reference": "a2a86ec353d825c75856c6fd14fac416a7bdb6b8", + "url": "https://api.github.com/repos/symfony/console/zipball/ea59bb0edfaf9f28d18d8791410ee0355f317669", + "reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669", "shasum": "" }, "require": { @@ -3018,7 +3029,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.3" + "source": "https://github.com/symfony/console/tree/v5.4.15" }, "funding": [ { @@ -3034,20 +3045,20 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:28:35+00:00" + "time": "2022-10-26T21:41:52+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e" + "reference": "c1681789f059ab756001052164726ae88512ae3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/c1681789f059ab756001052164726ae88512ae3d", + "reference": "c1681789f059ab756001052164726ae88512ae3d", "shasum": "" }, "require": { @@ -3084,7 +3095,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.3" + "source": "https://github.com/symfony/css-selector/tree/v5.4.11" }, "funding": [ { @@ -3100,20 +3111,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { @@ -3151,7 +3162,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" }, "funding": [ { @@ -3167,20 +3178,20 @@ "type": "tidelift" } ], - "time": "2021-07-12T14:48:14+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/error-handler", - "version": "v5.4.3", + "version": "v5.4.15", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "c4ffc2cd919950d13c8c9ce32a70c70214c3ffc5" + "reference": "539cf1428b8442303c6e876ad7bf5a7babd91091" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c4ffc2cd919950d13c8c9ce32a70c70214c3ffc5", - "reference": "c4ffc2cd919950d13c8c9ce32a70c70214c3ffc5", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/539cf1428b8442303c6e876ad7bf5a7babd91091", + "reference": "539cf1428b8442303c6e876ad7bf5a7babd91091", "shasum": "" }, "require": { @@ -3222,7 +3233,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.4.3" + "source": "https://github.com/symfony/error-handler/tree/v5.4.15" }, "funding": [ { @@ -3238,20 +3249,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-10-27T06:32:25+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.3", + "version": "v5.4.9", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d" + "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dec8a9f58d20df252b9cd89f1c6c1530f747685d", - "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", + "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", "shasum": "" }, "require": { @@ -3307,7 +3318,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.9" }, "funding": [ { @@ -3323,20 +3334,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-05-05T16:45:39+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.5.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a" + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/66bea3b09be61613cd3b4043a65a8ec48cfa6d2a", - "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", "shasum": "" }, "require": { @@ -3386,7 +3397,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" }, "funding": [ { @@ -3402,20 +3413,20 @@ "type": "tidelift" } ], - "time": "2021-07-12T14:48:14+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/finder", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", - "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", + "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", "shasum": "" }, "require": { @@ -3449,7 +3460,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.3" + "source": "https://github.com/symfony/finder/tree/v5.4.11" }, "funding": [ { @@ -3465,20 +3476,20 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:34:36+00:00" + "time": "2022-07-29T07:37:50+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.4.3", + "version": "v5.4.15", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ef409ff341a565a3663157d4324536746d49a0c7" + "reference": "75bd663ff2db90141bfb733682459d5bbe9e29c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ef409ff341a565a3663157d4324536746d49a0c7", - "reference": "ef409ff341a565a3663157d4324536746d49a0c7", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/75bd663ff2db90141bfb733682459d5bbe9e29c3", + "reference": "75bd663ff2db90141bfb733682459d5bbe9e29c3", "shasum": "" }, "require": { @@ -3490,8 +3501,11 @@ "require-dev": { "predis/predis": "~1.0", "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0" + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "suggest": { "symfony/mime": "To use the file extension guesser" @@ -3522,7 +3536,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.3" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.15" }, "funding": [ { @@ -3538,20 +3552,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-10-12T09:43:19+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.4.4", + "version": "v5.4.15", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "49f40347228c773688a0488feea0175aa7f4d268" + "reference": "fc63c8c3e1036d424820cc993a4ea163778dc5c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/49f40347228c773688a0488feea0175aa7f4d268", - "reference": "49f40347228c773688a0488feea0175aa7f4d268", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fc63c8c3e1036d424820cc993a4ea163778dc5c7", + "reference": "fc63c8c3e1036d424820cc993a4ea163778dc5c7", "shasum": "" }, "require": { @@ -3634,7 +3648,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.4.4" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.15" }, "funding": [ { @@ -3650,20 +3664,20 @@ "type": "tidelift" } ], - "time": "2022-01-29T18:08:07+00:00" + "time": "2022-10-28T17:52:18+00:00" }, { "name": "symfony/mime", - "version": "v5.4.3", + "version": "v5.4.14", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "e1503cfb5c9a225350f549d3bb99296f4abfb80f" + "reference": "1c118b253bb3495d81e95a6e3ec6c2766a98a0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/e1503cfb5c9a225350f549d3bb99296f4abfb80f", - "reference": "e1503cfb5c9a225350f549d3bb99296f4abfb80f", + "url": "https://api.github.com/repos/symfony/mime/zipball/1c118b253bb3495d81e95a6e3ec6c2766a98a0c4", + "reference": "1c118b253bb3495d81e95a6e3ec6c2766a98a0c4", "shasum": "" }, "require": { @@ -3677,7 +3691,8 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" + "symfony/mailer": "<4.4", + "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1", @@ -3685,7 +3700,7 @@ "symfony/dependency-injection": "^4.4|^5.0|^6.0", "symfony/property-access": "^4.4|^5.1|^6.0", "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.2|^6.0" + "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" }, "type": "library", "autoload": { @@ -3717,7 +3732,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.3" + "source": "https://github.com/symfony/mime/tree/v5.4.14" }, "funding": [ { @@ -3733,20 +3748,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-10-07T08:01:20+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.24.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", "shasum": "" }, "require": { @@ -3761,7 +3776,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3769,12 +3784,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3799,7 +3814,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" }, "funding": [ { @@ -3815,20 +3830,20 @@ "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.24.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40" + "reference": "143f1881e655bebca1312722af8068de235ae5dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40", - "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc", + "reference": "143f1881e655bebca1312722af8068de235ae5dc", "shasum": "" }, "require": { @@ -3843,7 +3858,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3882,7 +3897,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0" }, "funding": [ { @@ -3898,20 +3913,20 @@ "type": "tidelift" } ], - "time": "2022-01-04T09:04:05+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + "reference": "433d05519ce6990bf3530fba6957499d327395c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", + "reference": "433d05519ce6990bf3530fba6957499d327395c2", "shasum": "" }, "require": { @@ -3923,7 +3938,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3963,7 +3978,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" }, "funding": [ { @@ -3979,20 +3994,20 @@ "type": "tidelift" } ], - "time": "2021-11-23T21:10:46+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", "shasum": "" }, "require": { @@ -4006,7 +4021,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4050,7 +4065,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" }, "funding": [ { @@ -4066,20 +4081,20 @@ "type": "tidelift" } ], - "time": "2021-09-14T14:02:44+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", "shasum": "" }, "require": { @@ -4091,7 +4106,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4134,7 +4149,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" }, "funding": [ { @@ -4150,20 +4165,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", "shasum": "" }, "require": { @@ -4178,7 +4193,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4217,7 +4232,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" }, "funding": [ { @@ -4233,20 +4248,20 @@ "type": "tidelift" } ], - "time": "2021-11-30T18:21:41+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.24.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", "shasum": "" }, "require": { @@ -4255,7 +4270,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4293,7 +4308,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" }, "funding": [ { @@ -4309,20 +4324,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.24.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", "shasum": "" }, "require": { @@ -4331,7 +4346,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4372,7 +4387,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" }, "funding": [ { @@ -4388,20 +4403,20 @@ "type": "tidelift" } ], - "time": "2021-06-05T21:20:04+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.24.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", "shasum": "" }, "require": { @@ -4410,7 +4425,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4455,7 +4470,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" }, "funding": [ { @@ -4471,20 +4486,20 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:33+00:00" + "time": "2022-05-10T07:21:04+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.24.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", - "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", "shasum": "" }, "require": { @@ -4493,7 +4508,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4534,7 +4549,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" }, "funding": [ { @@ -4550,20 +4565,20 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:11+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/process", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "553f50487389a977eb31cf6b37faae56da00f753" + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/553f50487389a977eb31cf6b37faae56da00f753", - "reference": "553f50487389a977eb31cf6b37faae56da00f753", + "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", "shasum": "" }, "require": { @@ -4596,7 +4611,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.3" + "source": "https://github.com/symfony/process/tree/v5.4.11" }, "funding": [ { @@ -4612,20 +4627,20 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:28:35+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/routing", - "version": "v5.4.3", + "version": "v5.4.15", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "44b29c7a94e867ccde1da604792f11a469958981" + "reference": "5c9b129efe9abce9470e384bf65d8a7e262eee69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/44b29c7a94e867ccde1da604792f11a469958981", - "reference": "44b29c7a94e867ccde1da604792f11a469958981", + "url": "https://api.github.com/repos/symfony/routing/zipball/5c9b129efe9abce9470e384bf65d8a7e262eee69", + "reference": "5c9b129efe9abce9470e384bf65d8a7e262eee69", "shasum": "" }, "require": { @@ -4686,7 +4701,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.3" + "source": "https://github.com/symfony/routing/tree/v5.4.15" }, "funding": [ { @@ -4702,26 +4717,26 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-10-13T14:10:41+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1" + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -4769,7 +4784,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -4785,20 +4800,20 @@ "type": "tidelift" } ], - "time": "2021-11-04T16:48:04+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/string", - "version": "v5.4.3", + "version": "v5.4.15", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" + "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", + "url": "https://api.github.com/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", + "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", "shasum": "" }, "require": { @@ -4820,12 +4835,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -4855,7 +4870,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.3" + "source": "https://github.com/symfony/string/tree/v5.4.15" }, "funding": [ { @@ -4871,20 +4886,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-10-05T15:16:54+00:00" }, { "name": "symfony/translation", - "version": "v5.4.3", + "version": "v5.4.14", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "a9dd7403232c61e87e27fb306bbcd1627f245d70" + "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/a9dd7403232c61e87e27fb306bbcd1627f245d70", - "reference": "a9dd7403232c61e87e27fb306bbcd1627f245d70", + "url": "https://api.github.com/repos/symfony/translation/zipball/f0ed07675863aa6e3939df8b1bc879450b585cab", + "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab", "shasum": "" }, "require": { @@ -4952,7 +4967,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.4.3" + "source": "https://github.com/symfony/translation/tree/v5.4.14" }, "funding": [ { @@ -4968,20 +4983,20 @@ "type": "tidelift" } ], - "time": "2022-01-07T00:28:17+00:00" + "time": "2022-10-07T08:01:20+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.5.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", "shasum": "" }, "require": { @@ -5030,7 +5045,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" }, "funding": [ { @@ -5046,20 +5061,20 @@ "type": "tidelift" } ], - "time": "2021-08-17T14:20:01+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.3", + "version": "v5.4.14", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "970a01f208bf895c5f327ba40b72288da43adec4" + "reference": "6894d06145fefebd9a4c7272baa026a1c394a430" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/970a01f208bf895c5f327ba40b72288da43adec4", - "reference": "970a01f208bf895c5f327ba40b72288da43adec4", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6894d06145fefebd9a4c7272baa026a1c394a430", + "reference": "6894d06145fefebd9a4c7272baa026a1c394a430", "shasum": "" }, "require": { @@ -5119,7 +5134,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.3" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.14" }, "funding": [ { @@ -5135,20 +5150,20 @@ "type": "tidelift" } ], - "time": "2022-01-17T16:30:37+00:00" + "time": "2022-10-07T08:01:20+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", + "version": "2.2.5", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" + "reference": "4348a3a06651827a27d989ad1d13efec6bb49b19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/4348a3a06651827a27d989ad1d13efec6bb49b19", + "reference": "4348a3a06651827a27d989ad1d13efec6bb49b19", "shasum": "" }, "require": { @@ -5186,22 +5201,22 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.5" }, - "time": "2021-12-08T09:12:39+00:00" + "time": "2022-09-12T13:28:28+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.4.1", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", "shasum": "" }, "require": { @@ -5216,15 +5231,19 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" }, "suggest": { "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "5.5-dev" } }, "autoload": { @@ -5256,7 +5275,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" }, "funding": [ { @@ -5268,7 +5287,7 @@ "type": "tidelift" } ], - "time": "2021-12-12T23:22:04+00:00" + "time": "2022-10-16T01:01:54+00:00" }, { "name": "voku/portable-ascii", @@ -5346,21 +5365,21 @@ }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -5398,37 +5417,38 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-06-03T18:03:27+00:00" } ], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -5455,7 +5475,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -5471,20 +5491,20 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "facade/flare-client-php", - "version": "1.9.1", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/facade/flare-client-php.git", - "reference": "b2adf1512755637d0cef4f7d1b54301325ac78ed" + "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/flare-client-php/zipball/b2adf1512755637d0cef4f7d1b54301325ac78ed", - "reference": "b2adf1512755637d0cef4f7d1b54301325ac78ed", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", + "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", "shasum": "" }, "require": { @@ -5497,7 +5517,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.14", - "phpunit/phpunit": "^7.5.16", + "phpunit/phpunit": "^7.5", "spatie/phpunit-snapshot-assertions": "^2.0" }, "type": "library", @@ -5528,7 +5548,7 @@ ], "support": { "issues": "https://github.com/facade/flare-client-php/issues", - "source": "https://github.com/facade/flare-client-php/tree/1.9.1" + "source": "https://github.com/facade/flare-client-php/tree/1.10.0" }, "funding": [ { @@ -5536,20 +5556,20 @@ "type": "github" } ], - "time": "2021-09-13T12:16:46+00:00" + "time": "2022-08-09T11:23:57+00:00" }, { "name": "facade/ignition", - "version": "2.17.4", + "version": "2.17.6", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "95c80bd35ee6858e9e1439b2f6a698295eeb2070" + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/95c80bd35ee6858e9e1439b2f6a698295eeb2070", - "reference": "95c80bd35ee6858e9e1439b2f6a698295eeb2070", + "url": "https://api.github.com/repos/facade/ignition/zipball/6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", "shasum": "" }, "require": { @@ -5614,7 +5634,7 @@ "issues": "https://github.com/facade/ignition/issues", "source": "https://github.com/facade/ignition" }, - "time": "2021-12-27T15:11:24+00:00" + "time": "2022-06-30T18:26:59+00:00" }, { "name": "facade/ignition-contracts", @@ -5671,16 +5691,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.19.0", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" + "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/37f751c67a5372d4e26353bd9384bc03744ec77b", + "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b", "shasum": "" }, "require": { @@ -5707,7 +5727,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.19-dev" + "dev-main": "v1.20-dev" } }, "autoload": { @@ -5732,22 +5752,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.20.0" }, - "time": "2022-02-02T17:38:57+00:00" + "time": "2022-07-20T13:12:54+00:00" }, { "name": "filp/whoops", - "version": "2.14.5", + "version": "2.14.6", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" + "reference": "f7948baaa0330277c729714910336383286305da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "url": "https://api.github.com/repos/filp/whoops/zipball/f7948baaa0330277c729714910336383286305da", + "reference": "f7948baaa0330277c729714910336383286305da", "shasum": "" }, "require": { @@ -5797,7 +5817,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.5" + "source": "https://github.com/filp/whoops/tree/2.14.6" }, "funding": [ { @@ -5805,7 +5825,7 @@ "type": "github" } ], - "time": "2022-01-07T12:00:00+00:00" + "time": "2022-11-02T16:23:29+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -5860,16 +5880,16 @@ }, { "name": "laravel/sail", - "version": "v1.13.4", + "version": "v1.16.2", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "57d2942d5edd89b2018d0a3447da321fa35baac7" + "reference": "7d1ed5f856ec8b9708712e3fc0708fcabe114659" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/57d2942d5edd89b2018d0a3447da321fa35baac7", - "reference": "57d2942d5edd89b2018d0a3447da321fa35baac7", + "url": "https://api.github.com/repos/laravel/sail/zipball/7d1ed5f856ec8b9708712e3fc0708fcabe114659", + "reference": "7d1ed5f856ec8b9708712e3fc0708fcabe114659", "shasum": "" }, "require": { @@ -5916,20 +5936,20 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2022-02-17T19:55:30+00:00" + "time": "2022-09-28T13:13:22+00:00" }, { "name": "mockery/mockery", - "version": "1.5.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" + "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "url": "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e", + "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e", "shasum": "" }, "require": { @@ -5986,34 +6006,35 @@ ], "support": { "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" + "source": "https://github.com/mockery/mockery/tree/1.5.1" }, - "time": "2022-01-20T13:18:17+00:00" + "time": "2022-09-07T15:32:08+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { @@ -6038,7 +6059,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -6046,7 +6067,7 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nunomaduro/collision", @@ -6246,252 +6267,25 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0" - }, - "time": "2022-01-04T19:58:01+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, { "name": "phpunit/php-code-coverage", - "version": "9.2.11", + "version": "9.2.18", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "665a1ac0a763c51afc30d6d130dac0813092b17f" + "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/665a1ac0a763c51afc30d6d130dac0813092b17f", - "reference": "665a1ac0a763c51afc30d6d130dac0813092b17f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/12fddc491826940cf9b7e88ad9664cf51f0f6d0a", + "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -6540,7 +6334,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.11" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.18" }, "funding": [ { @@ -6548,7 +6342,7 @@ "type": "github" } ], - "time": "2022-02-18T12:46:09+00:00" + "time": "2022-10-27T13:35:33+00:00" }, { "name": "phpunit/php-file-iterator", @@ -6793,16 +6587,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.14", + "version": "9.5.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1883687169c017d6ae37c58883ca3994cfc34189" + "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1883687169c017d6ae37c58883ca3994cfc34189", - "reference": "1883687169c017d6ae37c58883ca3994cfc34189", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/851867efcbb6a1b992ec515c71cdcf20d895e9d2", + "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2", "shasum": "" }, "require": { @@ -6817,28 +6611,23 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*" @@ -6880,7 +6669,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.14" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.26" }, "funding": [ { @@ -6890,9 +6679,13 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-02-18T12:54:07+00:00" + "time": "2022-10-28T06:00:21+00:00" }, { "name": "sebastian/cli-parser", @@ -7063,16 +6856,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -7125,7 +6918,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -7133,7 +6926,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -7260,16 +7053,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -7311,7 +7104,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -7319,20 +7112,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -7388,7 +7181,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -7396,7 +7189,7 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", @@ -7751,28 +7544,28 @@ }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -7795,7 +7588,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" }, "funding": [ { @@ -7803,7 +7596,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-09-12T14:47:03+00:00" }, { "name": "sebastian/version", diff --git a/config/app.php b/config/app.php index a8d1a82..1f0f90c 100644 --- a/config/app.php +++ b/config/app.php @@ -67,7 +67,7 @@ | */ - 'timezone' => 'UTC', + 'timezone' => 'Asia/Kuala_Lumpur', /* |-------------------------------------------------------------------------- diff --git a/database/factories/ProjectFactory.php b/database/factories/ProjectFactory.php new file mode 100644 index 0000000..6d35c4b --- /dev/null +++ b/database/factories/ProjectFactory.php @@ -0,0 +1,15 @@ + $this->faker->unique()->name() + ]; + } +} diff --git a/database/factories/TaskFactory.php b/database/factories/TaskFactory.php new file mode 100644 index 0000000..7662306 --- /dev/null +++ b/database/factories/TaskFactory.php @@ -0,0 +1,17 @@ + $this->faker->unique()->name(), + 'description' => $this->faker->sentence(), + 'status' => 'PRODUCT_OWNER', + ]; + } +} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index a3eb239..0c2928a 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -4,36 +4,16 @@ use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Str; +use App\Models\User; class UserFactory extends Factory { - /** - * Define the model's default state. - * - * @return array - */ public function definition() { return [ - 'name' => $this->faker->name(), - 'email' => $this->faker->unique()->safeEmail(), - 'email_verified_at' => now(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password - 'remember_token' => Str::random(10), + 'username' => $this->faker->unique()->name(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', + 'role' => 'PRODUCT_OWNER', ]; } - - /** - * Indicate that the model's email address should be unverified. - * - * @return \Illuminate\Database\Eloquent\Factories\Factory - */ - public function unverified() - { - return $this->state(function (array $attributes) { - return [ - 'email_verified_at' => null, - ]; - }); - } } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 621a24e..1db5215 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -6,29 +6,18 @@ class CreateUsersTable extends Migration { - /** - * Run the migrations. - * - * @return void - */ public function up() { Schema::create('users', function (Blueprint $table) { - $table->id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); + $table->uuid('id')->primary(); + $table->string('username')->unique(); $table->string('password'); + $table->string('role'); $table->rememberToken(); $table->timestamps(); }); } - /** - * Reverse the migrations. - * - * @return void - */ public function down() { Schema::dropIfExists('users'); diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php index 4315e16..677dea3 100644 --- a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -14,8 +14,8 @@ class CreatePersonalAccessTokensTable extends Migration public function up() { Schema::create('personal_access_tokens', function (Blueprint $table) { - $table->id(); - $table->morphs('tokenable'); + $table->bigIncrements('id'); + $table->uuidMorphs('tokenable'); $table->string('name'); $table->string('token', 64)->unique(); $table->text('abilities')->nullable(); diff --git a/database/migrations/2022_11_03_163027_create_projects_table.php b/database/migrations/2022_11_03_163027_create_projects_table.php new file mode 100644 index 0000000..a5523e5 --- /dev/null +++ b/database/migrations/2022_11_03_163027_create_projects_table.php @@ -0,0 +1,22 @@ +uuid('id')->primary(); + $table->string('name')->unique(); + $table->timestamps(); + }); + } + + public function down() + { + Schema::dropIfExists('projects'); + } +} diff --git a/database/migrations/2022_11_03_163104_create_tasks_table.php b/database/migrations/2022_11_03_163104_create_tasks_table.php new file mode 100644 index 0000000..7483bd8 --- /dev/null +++ b/database/migrations/2022_11_03_163104_create_tasks_table.php @@ -0,0 +1,29 @@ +uuid('id')->primary(); + $table->string('title'); + $table->string('description')->nullable(); + $table->string('status'); + $table->uuid('project_id'); + $table->uuid('user_id'); + $table->timestamps(); + + $table->foreign('project_id')->references('id')->on('projects'); + $table->foreign('user_id')->references('id')->on('users'); + }); + } + + public function down() + { + Schema::dropIfExists('tasks'); + } +} diff --git a/docs/Laravel - Coding Test Level 2.postman_collection.json b/docs/Laravel - Coding Test Level 2.postman_collection.json new file mode 100644 index 0000000..a36afe8 --- /dev/null +++ b/docs/Laravel - Coding Test Level 2.postman_collection.json @@ -0,0 +1,3767 @@ +{ + "info": { + "_postman_id": "09b1abda-6cff-44f4-b936-99f13c545740", + "name": "Laravel - Coding Test Level 2", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Register", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "ahmadzali", + "type": "default" + }, + { + "key": "password", + "value": "zali@2022", + "type": "default" + }, + { + "key": "role", + "value": "MEMBER", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/register", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "register" + ] + } + }, + "response": [ + { + "name": "Register", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "ahmadnazri", + "type": "default" + }, + { + "key": "password", + "value": "nazri@2022", + "type": "default" + }, + { + "key": "role", + "value": "ADMIN", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/register", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "register" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 16:50:29 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 16:50:29 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"User Successfully Created\",\n \"token\": \"1|2eaAF9rBjX8Whjub5KflEo08qiFTtbZ0MPF76IlO\"\n}" + }, + { + "name": "Register Validation", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "ahmadzali", + "type": "default" + }, + { + "key": "password", + "value": "", + "type": "default" + }, + { + "key": "role", + "value": "", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/register", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "register" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:53:47 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:53:47 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"Validation errors\",\n \"errors\": {\n \"username\": [\n \"The username has already been taken.\"\n ],\n \"password\": [\n \"The password field is required.\"\n ],\n \"role\": [\n \"The role field is required.\"\n ]\n }\n}" + } + ] + }, + { + "name": "Login", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "747abf18-b386-4a6c-90b7-544e6c328f74", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "ahmadnazri", + "type": "default" + }, + { + "key": "password", + "value": "nazri@2022", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/login", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "login" + ] + } + }, + "response": [ + { + "name": "Login", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "ahmadnazri", + "type": "default" + }, + { + "key": "password", + "value": "nazri@2022", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/login", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "login" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 16:55:24 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 16:55:24 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"User Successfully Logged In\",\n \"token\": \"4|0ioagi1e5Su9tXIY6BQ33kLQ6TjKqypX4M3P3Ygr\"\n}" + }, + { + "name": "Login Validation", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "ahmadnazri", + "type": "default" + }, + { + "key": "password", + "value": "", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/login", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "login" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:54:19 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:54:19 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"Validation errors\",\n \"errors\": {\n \"password\": [\n \"The password field is required.\"\n ]\n }\n}" + } + ] + }, + { + "name": "Create User", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "1|2eaAF9rBjX8Whjub5KflEo08qiFTtbZ0MPF76IlO", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "sitinazirah", + "type": "default" + }, + { + "key": "password", + "value": "nazirah@2022", + "type": "default" + }, + { + "key": "role", + "value": "MEMBER", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users" + ] + } + }, + "response": [ + { + "name": "Create User", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "sitinazirah", + "type": "default" + }, + { + "key": "password", + "value": "nazirah@2022", + "type": "default" + }, + { + "key": "role", + "value": "MEMBER", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 16:58:42 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 16:58:42 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"User Successfully Created\",\n \"token\": \"5|At91S4qdYZ3Y8jTS61GYekouXZOtQzhaSXRfNCJB\"\n}" + }, + { + "name": "Create User Validation", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "username", + "value": "sitinazirah", + "type": "default" + }, + { + "key": "password", + "value": "nazirah@2022", + "type": "default" + }, + { + "key": "role", + "value": "MEMBERS", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:56:23 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:56:23 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"Only ADMIN, PRODUCT_OWNER and MEMBER role are allowed\"\n}" + } + ] + }, + { + "name": "Get User List", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "4|0ioagi1e5Su9tXIY6BQ33kLQ6TjKqypX4M3P3Ygr", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users" + ] + } + }, + "response": [ + { + "name": "Get User List", + "originalRequest": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 16:56:37 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 16:56:37 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"User List Successfully Retrieved\",\n \"data\": [\n {\n \"id\": \"4d14abc5-aeea-476f-8d56-c9a1e8d922f3\",\n \"username\": \"ahmadhalim\",\n \"role\": \"PRODUCT_OWNER\",\n \"created_at\": \"2022-11-07T16:53:09.000000Z\",\n \"updated_at\": \"2022-11-07T16:53:09.000000Z\"\n },\n {\n \"id\": \"6616ccaa-0d41-4465-a0df-88cd49795e17\",\n \"username\": \"ahmadzali\",\n \"role\": \"MEMBER\",\n \"created_at\": \"2022-11-07T16:54:33.000000Z\",\n \"updated_at\": \"2022-11-07T16:54:33.000000Z\"\n },\n {\n \"id\": \"c405e234-fde6-4146-863b-eb39e2b33b71\",\n \"username\": \"ahmadnazri\",\n \"role\": \"ADMIN\",\n \"created_at\": \"2022-11-07T16:50:29.000000Z\",\n \"updated_at\": \"2022-11-07T16:50:29.000000Z\"\n }\n ]\n}" + }, + { + "name": "Get User List Validation", + "originalRequest": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:57:14 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:57:14 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"you do not have permission to access this API\"\n}" + } + ] + }, + { + "name": "Get Specific User", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "4|0ioagi1e5Su9tXIY6BQ33kLQ6TjKqypX4M3P3Ygr", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/4d14abc5-aeea-476f-8d56-c9a1e8d922f3", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "4d14abc5-aeea-476f-8d56-c9a1e8d922f3" + ] + } + }, + "response": [ + { + "name": "Get Specific User", + "originalRequest": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/4d14abc5-aeea-476f-8d56-c9a1e8d922f3", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "4d14abc5-aeea-476f-8d56-c9a1e8d922f3" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 16:57:32 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 16:57:32 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"User Successfully Retrieved\",\n \"data\": {\n \"id\": \"4d14abc5-aeea-476f-8d56-c9a1e8d922f3\",\n \"username\": \"ahmadhalim\",\n \"role\": \"PRODUCT_OWNER\",\n \"created_at\": \"2022-11-07T16:53:09.000000Z\",\n \"updated_at\": \"2022-11-07T16:53:09.000000Z\"\n }\n}" + }, + { + "name": "Get Specific User Validation", + "originalRequest": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/4d14abc5-aeea-476f-8d56-c9a1e8d922f3", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "4d14abc5-aeea-476f-8d56-c9a1e8d922f3" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:58:24 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:58:24 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"you do not have permission to access this API\"\n}" + } + ] + }, + { + "name": "Update User", + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "1|2eaAF9rBjX8Whjub5KflEo08qiFTtbZ0MPF76IlO", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "username", + "value": "sitisaliha", + "type": "default" + }, + { + "key": "password", + "value": "", + "type": "default" + }, + { + "key": "role", + "value": "PRODUCT_OWNER", + "type": "default" + } + ], + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/48952f90-5da0-4854-bf61-583c1221b425", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "48952f90-5da0-4854-bf61-583c1221b425" + ] + } + }, + "response": [ + { + "name": "Update User Validation", + "originalRequest": { + "method": "PUT", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "username", + "value": "", + "type": "default" + }, + { + "key": "password", + "value": "", + "type": "default" + }, + { + "key": "role", + "value": "", + "type": "default" + } + ], + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/48952f90-5da0-4854-bf61-583c1221b425", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "48952f90-5da0-4854-bf61-583c1221b425" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:05:33 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:05:33 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"Validation errors\",\n \"errors\": {\n \"username\": [\n \"The username field is required.\"\n ],\n \"role\": [\n \"The role field is required.\"\n ]\n }\n}" + }, + { + "name": "Update User", + "originalRequest": { + "method": "PUT", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "username", + "value": "sitisaliha", + "type": "default" + }, + { + "key": "password", + "value": "", + "type": "default" + }, + { + "key": "role", + "value": "PRODUCT_OWNER", + "type": "default" + } + ], + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/48952f90-5da0-4854-bf61-583c1221b425", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "48952f90-5da0-4854-bf61-583c1221b425" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:08:26 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:08:26 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "57" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"User Successfully Updated\"\n}" + } + ] + }, + { + "name": "Update User Password", + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "1|2eaAF9rBjX8Whjub5KflEo08qiFTtbZ0MPF76IlO", + "type": "string" + } + ] + }, + "method": "PATCH", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "password", + "value": "saliha@2022", + "type": "default" + } + ], + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/update/password/48952f90-5da0-4854-bf61-583c1221b425", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "update", + "password", + "48952f90-5da0-4854-bf61-583c1221b425" + ] + } + }, + "response": [ + { + "name": "Update User Password Validation", + "originalRequest": { + "method": "PATCH", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "password", + "value": "", + "type": "default" + } + ], + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/update/password/48952f90-5da0-4854-bf61-583c1221b425", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "update", + "password", + "48952f90-5da0-4854-bf61-583c1221b425" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:10:09 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:10:09 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"Validation errors\",\n \"errors\": {\n \"password\": [\n \"The password field is required.\"\n ]\n }\n}" + }, + { + "name": "Update User Password", + "originalRequest": { + "method": "PATCH", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "password", + "value": "saliha@2022", + "type": "default" + } + ], + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/update/password/48952f90-5da0-4854-bf61-583c1221b425", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "update", + "password", + "48952f90-5da0-4854-bf61-583c1221b425" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:10:39 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:10:39 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"User Password Successfully Updated\"\n}" + } + ] + }, + { + "name": "Delete User", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "1|2eaAF9rBjX8Whjub5KflEo08qiFTtbZ0MPF76IlO", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/48952f90-5da0-4854-bf61-583c1221b425", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "48952f90-5da0-4854-bf61-583c1221b425" + ] + } + }, + "response": [ + { + "name": "Delete User Validation", + "originalRequest": { + "method": "DELETE", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/48952f90-5da0-4854-bf61-583c1221b425", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "48952f90-5da0-4854-bf61-583c1221b425" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:11:29 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:11:29 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"you do not have permission to access this API\"\n}" + }, + { + "name": "Delete User", + "originalRequest": { + "method": "DELETE", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/users/48952f90-5da0-4854-bf61-583c1221b425", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "users", + "48952f90-5da0-4854-bf61-583c1221b425" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:12:20 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:12:20 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"User Successfully Deleted\"\n}" + } + ] + }, + { + "name": "Create Project", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "Project 4", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects" + ] + } + }, + "response": [ + { + "name": "Create Project Validation", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "Project 1", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:18:39 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:18:39 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"you do not have permission to access this API\"\n}" + }, + { + "name": "Create Project", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "name", + "value": "Project 1", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:19:04 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:19:04 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Project Successfully Created\",\n \"data\": {\n \"name\": \"Project 1\",\n \"id\": \"c453564d-7090-477d-ab03-4cf91ab71e2d\",\n \"updated_at\": \"2022-11-07T17:19:04.000000Z\",\n \"created_at\": \"2022-11-07T17:19:04.000000Z\"\n }\n}" + } + ] + }, + { + "name": "Get Project List", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://localhost:8000/api/v1/projects?q=&pageIndex=0&pageSize=3&sortBy=name&sortDirection=ASC", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects" + ], + "query": [ + { + "key": "q", + "value": "" + }, + { + "key": "pageIndex", + "value": "0" + }, + { + "key": "pageSize", + "value": "3" + }, + { + "key": "sortBy", + "value": "name" + }, + { + "key": "sortDirection", + "value": "ASC" + } + ] + } + }, + "response": [ + { + "name": "Get Project List", + "originalRequest": { + "method": "GET", + "header": [], + "url": { + "raw": "http://localhost:8000/api/v1/projects?q=&pageIndex=0&pageSize=3&sortBy=name&sortDirection=ASC", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects" + ], + "query": [ + { + "key": "q", + "value": "" + }, + { + "key": "pageIndex", + "value": "0" + }, + { + "key": "pageSize", + "value": "3" + }, + { + "key": "sortBy", + "value": "name" + }, + { + "key": "sortDirection", + "value": "ASC" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:19:43 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:19:43 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "55" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Project List Successfully Retrieved\",\n \"data\": [\n {\n \"id\": \"c453564d-7090-477d-ab03-4cf91ab71e2d\",\n \"name\": \"Project 1\",\n \"created_at\": \"2022-11-07T17:19:04.000000Z\",\n \"updated_at\": \"2022-11-07T17:19:04.000000Z\"\n },\n {\n \"id\": \"80a8835d-82a2-4b94-b06a-b196943a2501\",\n \"name\": \"Project 2\",\n \"created_at\": \"2022-11-07T17:19:18.000000Z\",\n \"updated_at\": \"2022-11-07T17:19:18.000000Z\"\n },\n {\n \"id\": \"31a8b5e0-b457-4a1d-8109-0ec26fd82cf4\",\n \"name\": \"Project 3\",\n \"created_at\": \"2022-11-07T17:19:23.000000Z\",\n \"updated_at\": \"2022-11-07T17:19:23.000000Z\"\n }\n ]\n}" + } + ] + }, + { + "name": "Get Specific Project", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects/c453564d-7090-477d-ab03-4cf91ab71e2d", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects", + "c453564d-7090-477d-ab03-4cf91ab71e2d" + ] + } + }, + "response": [ + { + "name": "Get Specific Project", + "originalRequest": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects/c453564d-7090-477d-ab03-4cf91ab71e2d", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects", + "c453564d-7090-477d-ab03-4cf91ab71e2d" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:21:35 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:21:35 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Project Successfully Retrieved\",\n \"data\": {\n \"id\": \"c453564d-7090-477d-ab03-4cf91ab71e2d\",\n \"name\": \"Project 1\",\n \"created_at\": \"2022-11-07T17:19:04.000000Z\",\n \"updated_at\": \"2022-11-07T17:19:04.000000Z\"\n }\n}" + } + ] + }, + { + "name": "Update Project", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "name", + "value": "Financial Management System", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects/c453564d-7090-477d-ab03-4cf91ab71e2d", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects", + "c453564d-7090-477d-ab03-4cf91ab71e2d" + ] + } + }, + "response": [ + { + "name": "Update Project Validation", + "originalRequest": { + "method": "PUT", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "name", + "value": "Financial Management System", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects/c453564d-7090-477d-ab03-4cf91ab71e2d", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects", + "c453564d-7090-477d-ab03-4cf91ab71e2d" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:22:59 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:22:59 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"you do not have permission to access this API\"\n}" + }, + { + "name": "Update Project", + "originalRequest": { + "method": "PUT", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "name", + "value": "Financial Management System", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects/c453564d-7090-477d-ab03-4cf91ab71e2d", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects", + "c453564d-7090-477d-ab03-4cf91ab71e2d" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:24:06 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:24:06 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Project Successfully Updated\"\n}" + } + ] + }, + { + "name": "Delete Project", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects/c453564d-7090-477d-ab03-4cf91ab71e2d", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects", + "c453564d-7090-477d-ab03-4cf91ab71e2d" + ] + } + }, + "response": [ + { + "name": "Delete Project Validation", + "originalRequest": { + "method": "DELETE", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects/c453564d-7090-477d-ab03-4cf91ab71e2d", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects", + "c453564d-7090-477d-ab03-4cf91ab71e2d" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:25:51 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:25:51 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"you do not have permission to access this API\"\n}" + }, + { + "name": "Delete Project", + "originalRequest": { + "method": "DELETE", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/projects/c453564d-7090-477d-ab03-4cf91ab71e2d", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "projects", + "c453564d-7090-477d-ab03-4cf91ab71e2d" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:36:54 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:36:54 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Project Successfully Deleted\"\n}" + } + ] + }, + { + "name": "Create Task", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "Create Payment Module", + "type": "default" + }, + { + "key": "description", + "value": "A module to manage user payment throught fpx and e-wallet.", + "type": "default" + }, + { + "key": "project_id", + "value": "7296c39f-b0a0-4fb1-855e-c7ebb51df21e", + "type": "default" + }, + { + "key": "user_id", + "value": "6616ccaa-0d41-4465-a0df-88cd49795e17", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks" + ] + } + }, + "response": [ + { + "name": "Create Task Validation", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "Create Payment Module", + "type": "default" + }, + { + "key": "description", + "value": "A module to manage user payment throught fpx and e-wallet.", + "type": "default" + }, + { + "key": "project_id", + "value": "7296c39f-b0a0-4fb1-855e-c7ebb51df21e", + "type": "default" + }, + { + "key": "user_id", + "value": "6616ccaa-0d41-4465-a0df-88cd49795e17", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:38:32 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:38:32 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"you do not have permission to access this API\"\n}" + }, + { + "name": "Create Task", + "originalRequest": { + "method": "POST", + "header": [], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "title", + "value": "Create Payment Module", + "type": "default" + }, + { + "key": "description", + "value": "A module to manage user payment throught fpx and e-wallet.", + "type": "default" + }, + { + "key": "project_id", + "value": "7296c39f-b0a0-4fb1-855e-c7ebb51df21e", + "type": "default" + }, + { + "key": "user_id", + "value": "6616ccaa-0d41-4465-a0df-88cd49795e17", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:40:50 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:40:50 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Task Successfully Created\"\n}" + } + ] + }, + { + "name": "Get Task List", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "http://localhost:8000/api/v1/tasks", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks" + ] + } + }, + "response": [ + { + "name": "Get Task List", + "originalRequest": { + "method": "GET", + "header": [], + "url": { + "raw": "http://localhost:8000/api/v1/tasks", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:41:12 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:41:12 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Task List Successfully Retrieved\",\n \"data\": [\n {\n \"id\": \"cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527\",\n \"title\": \"Create Payment Module\",\n \"description\": \"A module to manage user payment throught fpx and e-wallet.\",\n \"status\": \"NOT_STARTED\",\n \"project_id\": \"7296c39f-b0a0-4fb1-855e-c7ebb51df21e\",\n \"user_id\": \"6616ccaa-0d41-4465-a0df-88cd49795e17\",\n \"created_at\": \"2022-11-07T17:40:50.000000Z\",\n \"updated_at\": \"2022-11-07T17:40:50.000000Z\"\n }\n ]\n}" + } + ] + }, + { + "name": "Get Task List By Project", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/by/project/7296c39f-b0a0-4fb1-855e-c7ebb51df21e", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "by", + "project", + "7296c39f-b0a0-4fb1-855e-c7ebb51df21e" + ] + } + }, + "response": [ + { + "name": "Get Task List By Project", + "originalRequest": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/by/project/7296c39f-b0a0-4fb1-855e-c7ebb51df21e", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "by", + "project", + "7296c39f-b0a0-4fb1-855e-c7ebb51df21e" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:42:25 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:42:25 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Task List Successfully Retrieved\",\n \"data\": [\n {\n \"id\": \"cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527\",\n \"title\": \"Create Payment Module\",\n \"description\": \"A module to manage user payment throught fpx and e-wallet.\",\n \"status\": \"NOT_STARTED\",\n \"project_id\": \"7296c39f-b0a0-4fb1-855e-c7ebb51df21e\",\n \"user_id\": \"6616ccaa-0d41-4465-a0df-88cd49795e17\",\n \"created_at\": \"2022-11-07T17:40:50.000000Z\",\n \"updated_at\": \"2022-11-07T17:40:50.000000Z\"\n }\n ]\n}" + } + ] + }, + { + "name": "Get Specific Task", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "response": [ + { + "name": "Get Specific Task", + "originalRequest": { + "method": "GET", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:43:29 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:43:29 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Task Successfully Retrieved\",\n \"data\": {\n \"id\": \"cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527\",\n \"title\": \"Create Payment Module\",\n \"description\": \"A module to manage user payment throught fpx and e-wallet.\",\n \"status\": \"NOT_STARTED\",\n \"project_id\": \"7296c39f-b0a0-4fb1-855e-c7ebb51df21e\",\n \"user_id\": \"6616ccaa-0d41-4465-a0df-88cd49795e17\",\n \"created_at\": \"2022-11-07T17:40:50.000000Z\",\n \"updated_at\": \"2022-11-07T17:40:50.000000Z\"\n }\n}" + } + ] + }, + { + "name": "Update Task", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "PUT", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "title", + "value": "Create User API", + "type": "default" + }, + { + "key": "description", + "value": "Develop a list of API required to run the system", + "type": "default" + }, + { + "key": "status", + "value": "IN_PROGRESS", + "type": "default" + }, + { + "key": "project_id", + "value": "7296c39f-b0a0-4fb1-855e-c7ebb51df21e", + "type": "default" + }, + { + "key": "user_id", + "value": "6616ccaa-0d41-4465-a0df-88cd49795e17", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "response": [ + { + "name": "Update Task Validation", + "originalRequest": { + "method": "PUT", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "title", + "value": "Create User API Module", + "type": "default" + }, + { + "key": "description", + "value": "", + "type": "default" + }, + { + "key": "status", + "value": "IN_PROGRESS", + "type": "default" + }, + { + "key": "project_id", + "value": "223e3165-5a10-4917-98c2-48d64db7a0d2", + "type": "default" + }, + { + "key": "user_id", + "value": "8624655d-4e61-48a4-9647-402f415c6bbb", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:45:48 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:45:48 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"you do not have permission to access this API\"\n}" + }, + { + "name": "Update Task", + "originalRequest": { + "method": "PUT", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "title", + "value": "Create User API", + "type": "default" + }, + { + "key": "description", + "value": "Develop a list of API required to run the system", + "type": "default" + }, + { + "key": "status", + "value": "IN_PROGRESS", + "type": "default" + }, + { + "key": "project_id", + "value": "7296c39f-b0a0-4fb1-855e-c7ebb51df21e", + "type": "default" + }, + { + "key": "user_id", + "value": "6616ccaa-0d41-4465-a0df-88cd49795e17", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:50:15 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:50:15 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Task Successfully Updated\"\n}" + } + ] + }, + { + "name": "Change Task Status (Team Member)", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "PATCH", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "description", + "value": "Module ready to test", + "type": "default" + }, + { + "key": "status", + "value": "READY_FOR_TEST", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/update/status/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "update", + "status", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "response": [ + { + "name": "Change Task Status (Team Member) Validation", + "originalRequest": { + "method": "PATCH", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "description", + "value": "Module ready to test", + "type": "default" + }, + { + "key": "status", + "value": "READY_FOR_TESTT", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/update/status/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "update", + "status", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:51:40 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:51:40 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"Only NOT_STARTED, IN_PROGRESS, READY_FOR_TEST and COMPLETED task's status are allowed\"\n}" + }, + { + "name": "Change Task Status (Team Member)", + "originalRequest": { + "method": "PATCH", + "header": [], + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "description", + "value": "Module ready to test", + "type": "default" + }, + { + "key": "status", + "value": "READY_FOR_TEST", + "type": "default" + } + ] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/update/status/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "update", + "status", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:52:02 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:52:02 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "58" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Task Successfully Updated\"\n}" + } + ] + }, + { + "name": "Delete Task", + "request": { + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "2|ZfWGlySHi3ujiXLeRX0ceqTZuA4jjcVemDvIdXIe", + "type": "string" + } + ] + }, + "method": "DELETE", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "response": [ + { + "name": "Delete Task Validation", + "originalRequest": { + "method": "DELETE", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "status": "Unauthorized", + "code": 401, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:52:47 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:52:47 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 401,\n \"message\": \"you do not have permission to access this API\"\n}" + }, + { + "name": "Delete Task", + "originalRequest": { + "method": "DELETE", + "header": [], + "body": { + "mode": "formdata", + "formdata": [] + }, + "url": { + "raw": "http://localhost:8000/api/v1/tasks/cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8000", + "path": [ + "api", + "v1", + "tasks", + "cc0ed7a0-9081-45d0-a5eb-7d6d1aa0e527" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Host", + "value": "localhost:8000" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:53:14 GMT" + }, + { + "key": "Date", + "value": "Mon, 07 Nov 2022 17:53:14 GMT" + }, + { + "key": "Connection", + "value": "close" + }, + { + "key": "X-Powered-By", + "value": "PHP/7.4.27" + }, + { + "key": "Cache-Control", + "value": "no-cache, private" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-RateLimit-Limit", + "value": "60" + }, + { + "key": "X-RateLimit-Remaining", + "value": "59" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + } + ], + "cookie": [], + "body": "{\n \"status\": 200,\n \"message\": \"Task Successfully Deleted\"\n}" + } + ] + } + ], + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "token", + "value": "1|2eaAF9rBjX8Whjub5KflEo08qiFTtbZ0MPF76IlO", + "type": "string" + } + ] + }, + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] +} \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index eb6fa48..75a1464 100644 --- a/routes/api.php +++ b/routes/api.php @@ -2,6 +2,10 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; +use App\Http\Controllers\Api\AuthController; +use App\Http\Controllers\Api\UserController; +use App\Http\Controllers\Api\ProjectController; +use App\Http\Controllers\Api\TaskController; /* |-------------------------------------------------------------------------- @@ -14,6 +18,37 @@ | */ -Route::middleware('auth:sanctum')->get('/user', function (Request $request) { - return $request->user(); +Route::prefix('v1')->group(function () { + + Route::post('/register', [AuthController::class, 'register'])->name('register'); + Route::post('/login', [AuthController::class, 'login'])->name('login'); + + Route::middleware('auth:sanctum')->group(function () { + + //User + Route::get('/users', [UserController::class, 'index'])->name('user.index'); + Route::get('/users/{user}', [UserController::class, 'show'])->name('user.show'); + Route::post('/users', [UserController::class, 'store'])->name('user.store'); + Route::put('/users/{user}', [UserController::class, 'update'])->name('user.update'); + Route::patch('/users/update/password/{user}', [UserController::class, 'updatePassword'])->name('user.update.password'); + Route::delete('/users/{user}', [UserController::class, 'destroy'])->name('user.destroy'); + + //Project + Route::get('/projects', [ProjectController::class, 'index'])->name('project.index'); + Route::get('/projects/{project}', [ProjectController::class, 'show'])->name('project.show'); + Route::post('/projects', [ProjectController::class, 'store'])->name('project.store'); + Route::put('/projects/{project}', [ProjectController::class, 'update'])->name('project.update'); + Route::delete('/projects/{project}', [ProjectController::class, 'destroy'])->name('project.destroy'); + + //Task + Route::get('/tasks', [TaskController::class, 'index'])->name('task.index'); + Route::get('/tasks/{task}', [TaskController::class, 'show'])->name('task.show'); + Route::post('/tasks', [TaskController::class, 'store'])->name('task.store'); + Route::put('/tasks/{task}', [TaskController::class, 'update'])->name('task.update'); + Route::delete('/tasks/{task}', [TaskController::class, 'destroy'])->name('task.destroy'); + Route::get('/tasks/by/project/{id}', [TaskController::class, 'taskListByProject'])->name('task.by.project'); + Route::patch('/tasks/update/status/{task}', [TaskController::class, 'updateTaskStatus'])->name('task.update.status'); + + }); + }); diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php deleted file mode 100644 index 4ae02bc..0000000 --- a/tests/Feature/ExampleTest.php +++ /dev/null @@ -1,21 +0,0 @@ -get('/'); - - $response->assertStatus(200); - } -} diff --git a/tests/Feature/ProjectCreateAndAssignTest.php b/tests/Feature/ProjectCreateAndAssignTest.php new file mode 100644 index 0000000..9722d1a --- /dev/null +++ b/tests/Feature/ProjectCreateAndAssignTest.php @@ -0,0 +1,74 @@ +user = User::factory()->create(); + } + + public function testProjectCreateAndAssignUserSuccess() + { + $this->actingAs($this->user, 'sanctum'); + + $data = [ + 'name' => 'Financial Management System', + ]; + + $response = $this->post(route('project.store'), $data); + + $response->assertStatus(200) + ->assertJson( + [ + 'status' => 200, + 'message' => 'Project Successfully Created', + ] + ); + + $project_id = json_decode($response->getContent(), true)['data']['id']; + $users = User::factory()->count(2)->create()->toArray(); + + $task_data = [ + [ + 'title' => 'Develop payment module', + 'description' => '', + 'project_id' => $project_id, + 'user_id' => $users[0]['id'] + ], + [ + 'title' => 'Develop transaction module', + 'description' => '', + 'project_id' => $project_id, + 'user_id' => $users[1]['id'] + ] + ]; + + for($i = 0; $i <= 1; $i++){ + + $response = $this->post(route('task.store'), $task_data[$i]); + + $response->assertStatus(200) + ->assertJson( + [ + 'status' => 200, + 'message' => 'Task Successfully Created', + ] + ); + + } + } +} diff --git a/tests/Feature/UserChangeTaskStatusTest.php b/tests/Feature/UserChangeTaskStatusTest.php new file mode 100644 index 0000000..c4351b5 --- /dev/null +++ b/tests/Feature/UserChangeTaskStatusTest.php @@ -0,0 +1,65 @@ +user = User::factory()->create(); + $this->project = Project::factory()->create(); + $this->task = Task::factory()->create(['project_id' => $this->project->id, 'user_id' => $this->user->id]); + } + + public function testUserChangeTaskStatusSuccess() + { + $this->actingAs($this->user, 'sanctum'); + + $data = [ + 'description' => '', + 'status' => 'COMPLETED' + ]; + + $response = $this->patch(route('task.update.status', $this->task['id']), $data); + $response->assertStatus(200) + ->assertJson( + [ + 'status' => 200, + 'message' => 'Task Successfully Updated', + ] + ); + } + + public function testUserChangeTaskStatusValidationFail() + { + $this->actingAs($this->user, 'sanctum'); + + $data = [ + 'description' => '', + 'status' => '' + ]; + + $expected_response = [ + "status" => [ + "The status field is required." + ] + ]; + + $response = $this->patch(route('task.update.status', $this->task['id']), $data); + $this->assertEquals($expected_response, json_decode($response->getContent(), true)['errors']); + } +} diff --git a/tests/Feature/UserCreateTest.php b/tests/Feature/UserCreateTest.php new file mode 100644 index 0000000..44e166d --- /dev/null +++ b/tests/Feature/UserCreateTest.php @@ -0,0 +1,57 @@ + 'Siti Nasuha', + 'password' => Hash::make('nasuha2022'), + 'role' => 'ADMIN' + ]; + + $response = $this->post(route('register'), $data); + + $response->assertStatus(200) + ->assertJson( + [ + 'status' => 200, + 'message' => 'User Successfully Created', + ] + ); + } + + public function testUserCreateValidationFail() + { + $data = [ + 'username' => '', + 'password' => 'Siti', + 'role' => null + ]; + + $expected_response = [ + "username" => [ + "The username field is required." + ], + "password" => [ + "The password must be at least 6 characters." + ], + "role" => [ + "The role field is required." + ] + ]; + + $response = $this->post(route('register'), $data); + $this->assertEquals($expected_response, json_decode($response->getContent(), true)['errors']); + } +} diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php deleted file mode 100644 index 62e8c3c..0000000 --- a/tests/Unit/ExampleTest.php +++ /dev/null @@ -1,18 +0,0 @@ -assertTrue(true); - } -}