. */ declare(strict_types=1); namespace FireflyIII\Support\Http\Controllers; use Carbon\Carbon; use FireflyIII\Http\Requests\NewUserFormRequest; use FireflyIII\Models\TransactionCurrency; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\User; use Illuminate\Support\Facades\Log; use Laravel\Passport\Passport; use phpseclib3\Crypt\RSA; /** * Trait CreateStuff * */ trait CreateStuff { /** * Creates an asset account. * * @param NewUserFormRequest $request * @param TransactionCurrency $currency * * @return bool */ protected function createAssetAccount(NewUserFormRequest $request, TransactionCurrency $currency): bool // create stuff { /** @var AccountRepositoryInterface $repository */ $repository = app(AccountRepositoryInterface::class); $assetAccount = [ 'name' => $request->get('bank_name'), 'iban' => null, 'account_type_name' => 'asset', 'virtual_balance' => 0, 'account_type_id' => null, 'active' => true, 'account_role' => 'defaultAsset', 'opening_balance' => $request->input('bank_balance'), 'opening_balance_date' => new Carbon(), 'currency_id' => $currency->id, ]; $repository->store($assetAccount); return true; } /** * Creates a cash wallet. * * @param TransactionCurrency $currency * @param string $language * * @return bool */ protected function createCashWalletAccount(TransactionCurrency $currency, string $language): bool // create stuff { /** @var AccountRepositoryInterface $repository */ $repository = app(AccountRepositoryInterface::class); $assetAccount = [ 'name' => (string)trans('firefly.cash_wallet', [], $language), 'iban' => null, 'account_type_name' => 'asset', 'virtual_balance' => 0, 'account_type_id' => null, 'active' => true, 'account_role' => 'cashWalletAsset', 'opening_balance' => null, 'opening_balance_date' => null, 'currency_id' => $currency->id, ]; $repository->store($assetAccount); return true; } /** * Create new RSA keys. */ protected function createOAuthKeys(): void // create stuff { [$publicKey, $privateKey] = [ Passport::keyPath('oauth-public.key'), Passport::keyPath('oauth-private.key'), ]; if (file_exists($publicKey) || file_exists($privateKey)) { return; } $key = RSA::createKey(4096); Log::alert('NO OAuth keys were found. They have been created.'); file_put_contents($publicKey, (string) $key->getPublicKey()); file_put_contents($privateKey, $key->toString('PKCS1')); } /** * Create a savings account. * * @param NewUserFormRequest $request * @param TransactionCurrency $currency * @param string $language * * @return bool */ protected function createSavingsAccount(NewUserFormRequest $request, TransactionCurrency $currency, string $language): bool // create stuff { /** @var AccountRepositoryInterface $repository */ $repository = app(AccountRepositoryInterface::class); $savingsAccount = [ 'name' => (string)trans('firefly.new_savings_account', ['bank_name' => $request->get('bank_name')], $language), 'iban' => null, 'account_type_name' => 'asset', 'account_type_id' => null, 'virtual_balance' => 0, 'active' => true, 'account_role' => 'savingAsset', 'opening_balance' => $request->input('savings_balance'), 'opening_balance_date' => new Carbon(), 'currency_id' => $currency->id, ]; $repository->store($savingsAccount); return true; } /** * Create a new user instance after a valid registration. * * @param array $data * * @return User */ protected function createUser(array $data): User // create object { return User::create( [ 'email' => $data['email'], 'password' => bcrypt($data['password']), ] ); } }