diff --git a/app/Http/Controllers/AccountApiController.php b/app/Http/Controllers/AccountApiController.php index ee3611d37459..bbed4e7a79b6 100644 --- a/app/Http/Controllers/AccountApiController.php +++ b/app/Http/Controllers/AccountApiController.php @@ -48,15 +48,9 @@ class AccountApiController extends BaseAPIController { // Create a new token only if one does not already exist $this->accountRepo->createTokens(Auth::user(), $request->token_name); - - return $this->index(); - } - - public function index() - { + $users = $this->accountRepo->findUsers(Auth::user(), 'account.account_tokens'); - - $resource = new Collection($users, new UserAccountTransformer); + $resource = new Collection($users, new UserAccountTransformer($request->token_name)); return $this->returnData($resource); } diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index dca795945620..b6a75c59d473 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -38,6 +38,7 @@ use App\Models\Industry; use App\Models\InvoiceDesign; use App\Models\TaxRate; use App\Ninja\Repositories\AccountRepository; +use App\Ninja\Repositories\ClientRepository; use App\Ninja\Repositories\ReferralRepository; use App\Ninja\Mailers\UserMailer; use App\Ninja\Mailers\ContactMailer; @@ -174,6 +175,8 @@ class AccountController extends BaseController return self::showProducts(); } elseif ($section === ACCOUNT_TAX_RATES) { return self::showTaxRates(); + } elseif ($section === ACCOUNT_SYSTEM_SETTINGS) { + return self::showSystemSettings(); } else { $data = [ 'account' => Account::with('users')->findOrFail(Auth::user()->account_id), @@ -184,6 +187,21 @@ class AccountController extends BaseController } } + private function showSystemSettings() + { + if (Utils::isNinjaProd()) { + return Redirect::to('/'); + } + + $data = [ + 'account' => Account::with('users')->findOrFail(Auth::user()->account_id), + 'title' => trans("texts.system_settings"), + 'section' => ACCOUNT_SYSTEM_SETTINGS, + ]; + + return View::make("accounts.system_settings", $data); + } + private function showInvoiceSettings() { $account = Auth::user()->account; @@ -693,7 +711,8 @@ class AccountController extends BaseController continue; } - $this->dispatch(new CreateClient($data)); + $clientRepository = new ClientRepository(); + $clientRepository->save($data); $count++; } diff --git a/app/Http/Controllers/AppController.php b/app/Http/Controllers/AppController.php index 8c3b9b5fe59f..ce029ac15070 100644 --- a/app/Http/Controllers/AppController.php +++ b/app/Http/Controllers/AppController.php @@ -48,7 +48,7 @@ class AppController extends BaseController public function doSetup() { - if (Utils::isNinjaProd() || (Utils::isDatabaseSetup() && Account::count() > 0)) { + if (Utils::isNinjaProd()) { return Redirect::to('/'); } @@ -57,9 +57,10 @@ class AppController extends BaseController $app = Input::get('app'); $app['key'] = env('APP_KEY') ?: str_random(RANDOM_KEY_LENGTH); + $app['debug'] = Input::get('debug') ? 'true' : 'false'; $database = Input::get('database'); - $dbType = $database['default']; + $dbType = 'mysql'; // $database['default']; $database['connections'] = [$dbType => $database['type']]; $mail = Input::get('mail'); @@ -78,8 +79,12 @@ class AppController extends BaseController return Redirect::to('/setup')->withInput(); } + if (Utils::isDatabaseSetup() && Account::count() > 0) { + return Redirect::to('/'); + } + $config = "APP_ENV=production\n". - "APP_DEBUG=false\n". + "APP_DEBUG={$app['debug']}\n". "APP_URL={$app['url']}\n". "APP_KEY={$app['key']}\n\n". "DB_TYPE={$dbType}\n". @@ -120,17 +125,68 @@ class AppController extends BaseController return Redirect::to('/login'); } + public function updateSetup() + { + if (Utils::isNinjaProd()) { + return Redirect::to('/'); + } + + if (!Auth::check() && Utils::isDatabaseSetup() && Account::count() > 0) { + return Redirect::to('/'); + } + + if ( ! $canUpdateEnv = @fopen(base_path()."/.env", 'w')) { + Session::flash('error', 'Warning: Permission denied to write to .env config file, try running sudo chown www-data:www-data /path/to/ninja/.env'); + return Redirect::to('/settings/system_settings'); + } + + $app = Input::get('app'); + $db = Input::get('database'); + $mail = Input::get('mail'); + + $_ENV['APP_URL'] = $app['url']; + $_ENV['APP_DEBUG'] = Input::get('debug') ? 'true' : 'false'; + + $_ENV['DB_TYPE'] = 'mysql'; // $db['default']; + $_ENV['DB_HOST'] = $db['type']['host']; + $_ENV['DB_DATABASE'] = $db['type']['database']; + $_ENV['DB_USERNAME'] = $db['type']['username']; + $_ENV['DB_PASSWORD'] = $db['type']['password']; + + if ($mail) { + $_ENV['MAIL_DRIVER'] = $mail['driver']; + $_ENV['MAIL_PORT'] = $mail['port']; + $_ENV['MAIL_ENCRYPTION'] = $mail['encryption']; + $_ENV['MAIL_HOST'] = $mail['host']; + $_ENV['MAIL_USERNAME'] = $mail['username']; + $_ENV['MAIL_FROM_NAME'] = $mail['from']['name']; + $_ENV['MAIL_PASSWORD'] = $mail['password']; + $_ENV['MAIL_FROM_ADDRESS'] = $mail['username']; + } + + $config = ''; + foreach ($_ENV as $key => $val) { + $config .= "{$key}={$val}\n"; + } + + $fp = fopen(base_path()."/.env", 'w'); + fwrite($fp, $config); + fclose($fp); + + Session::flash('message', trans('texts.updated_settings')); + return Redirect::to('/settings/system_settings'); + } + private function testDatabase($database) { - $dbType = $database['default']; - + $dbType = 'mysql'; // $database['default']; Config::set('database.default', $dbType); - foreach ($database['connections'][$dbType] as $key => $val) { Config::set("database.connections.{$dbType}.{$key}", $val); } - + try { + DB::reconnect(); $valid = DB::connection()->getDatabaseName() ? true : false; } catch (Exception $e) { return $e->getMessage(); diff --git a/app/Http/Controllers/CreditController.php b/app/Http/Controllers/CreditController.php index ad04651acfc9..81dc77fe38ee 100644 --- a/app/Http/Controllers/CreditController.php +++ b/app/Http/Controllers/CreditController.php @@ -4,6 +4,7 @@ use Datatable; use Input; use Redirect; use Session; +use URL; use Utils; use View; use Validator; @@ -67,7 +68,9 @@ class CreditController extends BaseController