. */ namespace App\Http\Controllers\Api\Admin; use App\Http\Controllers\Controller; use App\Http\Requests\ExternalAccount\CreateUpdate; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use App\ExternalAccount; use App\Account; class ExternalAccountController extends Controller { public function show(int $accountId) { return Account::findOrFail($accountId)->external()->firstOrFail(); } public function store(CreateUpdate $request, int $accountId) { $account = Account::findOrFail($accountId); $externalAccount = $account->external ?? new ExternalAccount; $password = ''; if ($account->external?->realm != $request->get('realm')) { $password = 'required_with:realm'; } elseif ($externalAccount->password == null) { $password = 'required'; } $request->validate(['password' => $password]); $algorithm = 'MD5'; $externalAccount->account_id = $account->id; $externalAccount->username = $request->get('username'); $externalAccount->domain = $request->get('domain'); $externalAccount->realm = $request->get('realm'); $externalAccount->registrar = $request->get('registrar'); $externalAccount->outbound_proxy = $request->get('outbound_proxy'); $externalAccount->protocol = $request->get('protocol'); $externalAccount->algorithm = $algorithm; if (!empty($request->get('password'))) { $externalAccount->password = bchash( $externalAccount->username, $externalAccount->realm ?? $externalAccount->domain, $request->get('password'), $algorithm ); } $externalAccount->save(); return $externalAccount; } public function destroy(int $accountId) { $account = Account::findOrFail($accountId); return $account->external->delete(); } }