diff --git a/app/Classes/Modules/Accounts/ControllersLogic/CreateAdminUserLogic.php b/app/Classes/Modules/Accounts/ControllersLogic/CreateAdminUserLogic.php new file mode 100644 index 00000000..ff48ebf4 --- /dev/null +++ b/app/Classes/Modules/Accounts/ControllersLogic/CreateAdminUserLogic.php @@ -0,0 +1,73 @@ + 'Created Account', + 'message' => 'You have successfully created a new Account' + ]; + } + + /** @var CanCreateUser */ + private $canCreateUser; + + /** @var CreatesUser */ + private $createsUser; + + + /** + * CreateUserLogic constructor. + * @param CanCreateUser $canCreateUser + * @param CreatesUser $createsUser + */ + public function __construct( + CanCreateUser $canCreateUser, + CreatesUser $createsUser + ) + { + $this->canCreateUser = $canCreateUser; + $this->createsUser = $createsUser; + } + + /** + * @param Request $request + * @return JsonResponse + * @throws \App\Classes\Exceptions\AccessForbiddenException + * @throws \App\Classes\Exceptions\MalformedRequestException + * @throws \App\Classes\Exceptions\RequestValidationException + */ + public function logic(Request $request) : JsonResponse + { + + $user_object = new RegistrationObject($request->input('name'), $request->input('email'), + $request->input('password'), $request->input('password_confirmation'), + RoleTypes::ADMIN, ApprovalStatus::APPROVED); + + $this->canCreateUser->passes($user_object); + + $user = $this->createsUser->execute($user_object); + + return $this->resourceResponse(new UserResource($user)); + + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/Standards/Rules/CanCreateUser.php b/app/Classes/Modules/Accounts/Standards/Rules/CanCreateUser.php new file mode 100644 index 00000000..2da56844 --- /dev/null +++ b/app/Classes/Modules/Accounts/Standards/Rules/CanCreateUser.php @@ -0,0 +1,57 @@ +userCreateValidation = $userCreateValidation; + } + + + /** + * @return bool + */ + protected function authorized(): bool + { + // TODO Set Authorization rules + return true; + + } + + /** + * @param RegistrationObject $object + * @return bool + * @throws \App\Classes\Exceptions\RequestValidationException + */ + protected function validators($object): bool + { + return $this->userCreateValidation->validate($object); + + } + + + /** + * @param AddressObject $object + * @return bool + */ + protected function criteria($object): bool + { + return true; + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Accounts/Standards/Validators/UserCreateValidation.php b/app/Classes/Modules/Accounts/Standards/Validators/UserCreateValidation.php new file mode 100644 index 00000000..d76172a2 --- /dev/null +++ b/app/Classes/Modules/Accounts/Standards/Validators/UserCreateValidation.php @@ -0,0 +1,44 @@ + $object->getName(), + 'email' => $object->getEmail(), + 'password' => $object->getPassword(), + ]; + } + + /** + * @return array + */ + protected function rules(): array + { + return [ + 'name' => 'required', + 'email' => 'required|unique:users', + 'password' => 'required', + ]; + } + + /** + * @return array + */ + protected function messages(): array + { + return []; + } +} diff --git a/app/Http/Controllers/Accounts/CreateAdminUserController.php b/app/Http/Controllers/Accounts/CreateAdminUserController.php new file mode 100644 index 00000000..2c3a9ac7 --- /dev/null +++ b/app/Http/Controllers/Accounts/CreateAdminUserController.php @@ -0,0 +1,22 @@ +execute($request); + } + +} \ No newline at end of file