userSettingsGateway ??= new UserSettingsGateway( $this->createSettingsDefaultsGateway(), $this->createSettingsAppGateway(), $this->createSettingsUserLifecycleGateway() ); } public function createUserScopeGateway(): UserScopeGateway { return $this->userScopeGateway ??= new UserScopeGateway($this->tenantScopeService); } public function createUserDirectoryGateway(): UserDirectoryGateway { return $this->userDirectoryGateway ??= new UserDirectoryGateway( $this->directoryRepositoryFactory->createTenantRepository(), $this->directoryRepositoryFactory->createRoleRepository(), $this->directoryRepositoryFactory->createDepartmentRepository(), ); } public function createUserPermissionGateway(): UserPermissionGateway { return $this->userPermissionGateway ??= new UserPermissionGateway($this->createPermissionGateway()); } private function createPermissionGateway(): PermissionGateway { return $this->permissionGateway ??= $this->accessServicesFactory->createPermissionGateway(); } private function createSettingsDefaultsGateway(): SettingsDefaultsGateway { return $this->settingsDefaultsGateway ??= $this->settingServicesFactory->createSettingsDefaultsGateway(); } private function createSettingsAppGateway(): SettingsAppGateway { return $this->settingsAppGateway ??= $this->settingServicesFactory->createSettingsAppGateway(); } private function createSettingsUserLifecycleGateway(): SettingsUserLifecycleGateway { return $this->settingsUserLifecycleGateway ??= $this->settingServicesFactory->createSettingsUserLifecycleGateway(); } }