public function getStarted()
{
$user = false;
$guestKey = Input::get('guest_key');
// local storage key to login until registered
$prevUserId = Session::pull(PREV_USER_ID);
// last user id used to link to new account
if (Auth::check()) {
return Redirect::to('invoices/create');
}
if (!Utils::isNinja() && (Account::count() > 0 && !$prevUserId)) {
return Redirect::to('/login');
}
if ($guestKey && !$prevUserId) {
$user = User::where('password', '=', $guestKey)->first();
if ($user && $user->registered) {
return Redirect::to('/');
}
}
if (!$user) {
$account = $this->accountRepo->create();
$user = $account->users()->first();
if ($prevUserId) {
$users = $this->accountRepo->associateAccounts($user->id, $prevUserId);
Session::put(SESSION_USER_ACCOUNTS, $users);
}
}
Auth::login($user, true);
event(new UserSignedUp());
$redirectTo = Input::get('redirect_to') ?: 'invoices/create';
return Redirect::to($redirectTo)->with('sign_up', Input::get('sign_up'));
}