public function create($firstName = '', $lastName = '', $email = '', $password = '') { $account = new Account(); $account->ip = Request::getClientIp(); $account->account_key = str_random(RANDOM_KEY_LENGTH); // Track referal code if ($referralCode = Session::get(SESSION_REFERRAL_CODE)) { if ($user = User::whereReferralCode($referralCode)->first()) { $account->referral_user_id = $user->id; } } if ($locale = Session::get(SESSION_LOCALE)) { if ($language = Language::whereLocale($locale)->first()) { $account->language_id = $language->id; } } $account->save(); $user = new User(); if (!$firstName && !$lastName && !$email && !$password) { $user->password = str_random(RANDOM_KEY_LENGTH); $user->username = str_random(RANDOM_KEY_LENGTH); } else { $user->first_name = $firstName; $user->last_name = $lastName; $user->email = $user->username = $email; $user->password = bcrypt($password); } $user->confirmed = !Utils::isNinja(); $user->registered = !Utils::isNinja() && $user->email; if (!$user->confirmed) { $user->confirmation_code = str_random(RANDOM_KEY_LENGTH); } $account->users()->save($user); return $account; }
/** * Reverse the migrations. * * @return void */ public function down() { if ($language = \App\Models\Language::whereLocale('sv')->first()) { $language->delete(); } if ($language = \App\Models\Language::whereLocale('es_ES')->first()) { $language->delete(); } if ($language = \App\Models\Language::whereLocale('fr_CA')->first()) { $language->delete(); } if ($language = \App\Models\Language::whereLocale('lt')->first()) { $language->delete(); } }
public function run() { Eloquent::unguard(); $languages = [['name' => 'English', 'locale' => 'en'], ['name' => 'Italian', 'locale' => 'it'], ['name' => 'German', 'locale' => 'de'], ['name' => 'French', 'locale' => 'fr'], ['name' => 'Brazilian Portuguese', 'locale' => 'pt_BR'], ['name' => 'Dutch', 'locale' => 'nl'], ['name' => 'Spanish', 'locale' => 'es'], ['name' => 'Norwegian', 'locale' => 'nb_NO'], ['name' => 'Danish', 'locale' => 'da'], ['name' => 'Japanese', 'locale' => 'ja'], ['name' => 'Swedish', 'locale' => 'sv'], ['name' => 'Spanish - Spain', 'locale' => 'es_ES'], ['name' => 'French - Canada', 'locale' => 'fr_CA'], ['name' => 'Lithuanian', 'locale' => 'lt'], ['name' => 'Polish', 'locale' => 'pl'], ['name' => 'Czech', 'locale' => 'cs']]; foreach ($languages as $language) { $record = Language::whereLocale($language['locale'])->first(); if ($record) { $record->name = $language['name']; $record->save(); } else { Language::create($language); } } Eloquent::reguard(); }
public function run() { Eloquent::unguard(); // https://github.com/caouecs/Laravel-lang // https://www.loc.gov/standards/iso639-2/php/code_list.php $languages = [['name' => 'English', 'locale' => 'en'], ['name' => 'Italian', 'locale' => 'it'], ['name' => 'German', 'locale' => 'de'], ['name' => 'French', 'locale' => 'fr'], ['name' => 'Brazilian Portuguese', 'locale' => 'pt_BR'], ['name' => 'Dutch', 'locale' => 'nl'], ['name' => 'Spanish', 'locale' => 'es'], ['name' => 'Norwegian', 'locale' => 'nb_NO'], ['name' => 'Danish', 'locale' => 'da'], ['name' => 'Japanese', 'locale' => 'ja'], ['name' => 'Swedish', 'locale' => 'sv'], ['name' => 'Spanish - Spain', 'locale' => 'es_ES'], ['name' => 'French - Canada', 'locale' => 'fr_CA'], ['name' => 'Lithuanian', 'locale' => 'lt'], ['name' => 'Polish', 'locale' => 'pl'], ['name' => 'Czech', 'locale' => 'cs'], ['name' => 'Croatian', 'locale' => 'hr'], ['name' => 'Albanian', 'locale' => 'sq']]; foreach ($languages as $language) { $record = Language::whereLocale($language['locale'])->first(); if ($record) { $record->name = $language['name']; $record->save(); } else { Language::create($language); } } Eloquent::reguard(); }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // Set up trusted X-Forwarded-Proto proxies // TRUSTED_PROXIES accepts a comma delimited list of subnets // ie, TRUSTED_PROXIES='10.0.0.0/8,172.16.0.0/12,192.168.0.0/16' if (isset($_ENV['TRUSTED_PROXIES'])) { Request::setTrustedProxies(array_map('trim', explode(',', env('TRUSTED_PROXIES')))); } // Ensure all request are over HTTPS in production if (Utils::requireHTTPS() && !Request::secure()) { return Redirect::secure(Request::path()); } // If the database doens't yet exist we'll skip the rest if (!Utils::isNinja() && !Utils::isDatabaseSetup()) { return $next($request); } // Check if a new version was installed if (!Utils::isNinja()) { $file = storage_path() . '/version.txt'; $version = @file_get_contents($file); if ($version != NINJA_VERSION) { $handle = fopen($file, 'w'); fwrite($handle, NINJA_VERSION); fclose($handle); return Redirect::to('/update'); } } // Check the application is up to date and for any news feed messages if (Auth::check()) { $count = Session::get(SESSION_COUNTER, 0); Session::put(SESSION_COUNTER, ++$count); if (isset($_SERVER['REQUEST_URI']) && !Utils::startsWith($_SERVER['REQUEST_URI'], '/news_feed') && !Session::has('news_feed_id')) { $data = false; if (Utils::isNinja()) { $data = Utils::getNewsFeedResponse(); } else { $file = @file_get_contents(NINJA_APP_URL . '/news_feed/' . Utils::getUserType() . '/' . NINJA_VERSION); $data = @json_decode($file); } if ($data) { if (version_compare(NINJA_VERSION, $data->version, '<')) { $params = ['user_version' => NINJA_VERSION, 'latest_version' => $data->version, 'releases_link' => link_to(RELEASES_URL, 'Invoice Ninja', ['target' => '_blank'])]; Session::put('news_feed_id', NEW_VERSION_AVAILABLE); //Session::flash('news_feed_message', trans('texts.new_version_available', $params)); } else { Session::put('news_feed_id', $data->id); if ($data->message && $data->id > Auth::user()->news_feed_id) { Session::flash('news_feed_message', $data->message); } } } else { Session::put('news_feed_id', true); } } } // Check if we're requesting to change the account's language if (Input::has('lang')) { $locale = Input::get('lang'); App::setLocale($locale); Session::set(SESSION_LOCALE, $locale); if (Auth::check()) { if ($language = Language::whereLocale($locale)->first()) { $account = Auth::user()->account; $account->language_id = $language->id; $account->save(); } } } elseif (Auth::check()) { $locale = Auth::user()->account->language ? Auth::user()->account->language->locale : DEFAULT_LOCALE; App::setLocale($locale); } elseif (session(SESSION_LOCALE)) { App::setLocale(session(SESSION_LOCALE)); } // Make sure the account/user localization settings are in the session if (Auth::check() && !Session::has(SESSION_TIMEZONE)) { Event::fire(new UserSettingsChanged()); } // Check if the user is claiming a license (ie, additional invoices, white label, etc.) if (isset($_SERVER['REQUEST_URI'])) { $claimingLicense = Utils::startsWith($_SERVER['REQUEST_URI'], '/claim_license'); if (!$claimingLicense && Input::has('license_key') && Input::has('product_id')) { $licenseKey = Input::get('license_key'); $productId = Input::get('product_id'); $data = trim(file_get_contents((Utils::isNinjaDev() ? SITE_URL : NINJA_APP_URL) . "/claim_license?license_key={$licenseKey}&product_id={$productId}")); if ($productId == PRODUCT_INVOICE_DESIGNS) { if ($data = json_decode($data)) { foreach ($data as $item) { $design = new InvoiceDesign(); $design->id = $item->id; $design->name = $item->name; $design->pdfmake = $item->pdfmake; $design->save(); } Cache::forget('invoiceDesigns'); Session::flash('message', trans('texts.bought_designs')); } } elseif ($productId == PRODUCT_WHITE_LABEL) { if ($data == 'valid') { $account = Auth::user()->account; $account->pro_plan_paid = NINJA_DATE; $account->save(); Session::flash('message', trans('texts.bought_white_label')); } } } } // Check data has been cached $cachedTables = unserialize(CACHED_TABLES); if (Input::has('clear_cache')) { Session::flash('message', 'Cache cleared'); } foreach ($cachedTables as $name => $class) { if (Input::has('clear_cache') || !Cache::has($name)) { if ($name == 'paymentTerms') { $orderBy = 'num_days'; } elseif (in_array($name, ['currencies', 'industries', 'languages', 'countries'])) { $orderBy = 'name'; } else { $orderBy = 'id'; } $tableData = $class::orderBy($orderBy)->get(); if (count($tableData)) { Cache::forever($name, $tableData); } } } // Show message to IE 8 and before users if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/(?i)msie [2-8]/', $_SERVER['HTTP_USER_AGENT'])) { Session::flash('error', trans('texts.old_browser')); } $response = $next($request); //$response->headers->set('X-Frame-Options', 'DENY'); return $response; }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // Ensure all request are over HTTPS in production if (App::environment() == ENV_PRODUCTION) { if (!Request::secure()) { return Redirect::secure(Request::getRequestUri()); } } // If the database doens't yet exist we'll skip the rest if (!Utils::isNinja() && !Utils::isDatabaseSetup()) { return $next($request); } // Check data has been cached $cachedTables = ['currencies' => 'App\\Models\\Currency', 'sizes' => 'App\\Models\\Size', 'industries' => 'App\\Models\\Industry', 'timezones' => 'App\\Models\\Timezone', 'dateFormats' => 'App\\Models\\DateFormat', 'datetimeFormats' => 'App\\Models\\DatetimeFormat', 'languages' => 'App\\Models\\Language', 'paymentTerms' => 'App\\Models\\PaymentTerm', 'paymentTypes' => 'App\\Models\\PaymentType', 'countries' => 'App\\Models\\Country']; foreach ($cachedTables as $name => $class) { if (Input::has('clear_cache')) { Session::flash('message', 'Cache cleared'); } if (Input::has('clear_cache') || !Cache::has($name)) { if ($name == 'paymentTerms') { $orderBy = 'num_days'; } elseif (in_array($name, ['currencies', 'sizes', 'industries', 'languages', 'countries'])) { $orderBy = 'name'; } else { $orderBy = 'id'; } $tableData = $class::orderBy($orderBy)->get(); if (count($tableData)) { Cache::forever($name, $tableData); } } } // check the application is up to date and for any news feed messages if (Auth::check()) { $count = Session::get(SESSION_COUNTER, 0); Session::put(SESSION_COUNTER, ++$count); if (!Utils::startsWith($_SERVER['REQUEST_URI'], '/news_feed') && !Session::has('news_feed_id')) { $data = false; if (Utils::isNinja()) { $data = Utils::getNewsFeedResponse(); } else { $file = @file_get_contents(NINJA_APP_URL . '/news_feed/' . Utils::getUserType() . '/' . NINJA_VERSION); $data = @json_decode($file); } if ($data) { if (version_compare(NINJA_VERSION, $data->version, '<')) { $params = ['user_version' => NINJA_VERSION, 'latest_version' => $data->version, 'releases_link' => link_to(RELEASES_URL, 'Invoice Ninja', ['target' => '_blank'])]; Session::put('news_feed_id', NEW_VERSION_AVAILABLE); Session::put('news_feed_message', trans('texts.new_version_available', $params)); } else { Session::put('news_feed_id', $data->id); if ($data->message && $data->id > Auth::user()->news_feed_id) { Session::put('news_feed_message', $data->message); } } } else { Session::put('news_feed_id', true); } } } // Check if we're requesting to change the account's language if (Input::has('lang')) { $locale = Input::get('lang'); App::setLocale($locale); Session::set(SESSION_LOCALE, $locale); if (Auth::check()) { if ($language = Language::whereLocale($locale)->first()) { $account = Auth::user()->account; $account->language_id = $language->id; $account->save(); } } } elseif (Auth::check()) { $locale = Session::get(SESSION_LOCALE, DEFAULT_LOCALE); App::setLocale($locale); } // Make sure the account/user localization settings are in the session if (Auth::check() && !Session::has(SESSION_TIMEZONE)) { Event::fire(new UserSettingsChanged()); } // Check if the user is claiming a license (ie, additional invoices, white label, etc.) $claimingLicense = Utils::startsWith($_SERVER['REQUEST_URI'], '/claim_license'); if (!$claimingLicense && Input::has('license_key') && Input::has('product_id')) { $licenseKey = Input::get('license_key'); $productId = Input::get('product_id'); $data = trim(file_get_contents((Utils::isNinjaDev() ? 'http://www.ninja.dev' : NINJA_APP_URL) . "/claim_license?license_key={$licenseKey}&product_id={$productId}")); if ($productId == PRODUCT_INVOICE_DESIGNS) { if ($data = json_decode($data)) { foreach ($data as $item) { $design = new InvoiceDesign(); $design->id = $item->id; $design->name = $item->name; $design->javascript = $item->javascript; $design->save(); } Session::flash('message', trans('texts.bought_designs')); } } elseif ($productId == PRODUCT_WHITE_LABEL) { if ($data == 'valid') { $account = Auth::user()->account; $account->pro_plan_paid = NINJA_DATE; $account->save(); Session::flash('message', trans('texts.bought_white_label')); } } } if (preg_match('/(?i)msie [2-8]/', $_SERVER['HTTP_USER_AGENT'])) { Session::flash('error', trans('texts.old_browser')); } // for security prevent displaying within an iframe $response = $next($request); $response->headers->set('X-Frame-Options', 'DENY'); return $response; }
/** * Reverse the migrations. * * @return void */ public function down() { $language = \App\Models\Language::whereLocale('da')->first(); $language->delete(); }