diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index deb83c0f7e44..9c3506b0d19d 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -422,9 +422,6 @@ class CompanyController extends BaseController $company = $this->company_repo->save($request->all(), $company); - /** We save the settings in the repository - this is duplicated */ - // $company->saveSettings($request->input('settings'), $company); - if ($request->has('documents')) { $this->saveDocuments($request->input('documents'), $company, false); } diff --git a/app/Repositories/CompanyRepository.php b/app/Repositories/CompanyRepository.php index 7a9f8a1af6cf..3d29e6da907b 100644 --- a/app/Repositories/CompanyRepository.php +++ b/app/Repositories/CompanyRepository.php @@ -39,6 +39,7 @@ class CompanyRepository extends BaseRepository $company->fill($data); + /** Only required to handle v4 migration workloads */ if(Ninja::isHosted() && $company->isDirty('is_disabled') && !$company->is_disabled) { Ninja::triggerForwarding($company->company_key, $company->owner()->email); } diff --git a/app/Utils/Ninja.php b/app/Utils/Ninja.php index e51965839b88..bf141f2ec326 100644 --- a/app/Utils/Ninja.php +++ b/app/Utils/Ninja.php @@ -158,7 +158,7 @@ class Ninja Http::withHeaders([ 'X-API-HOSTED-SECRET' => config('ninja.ninja_hosted_secret'), ])->post(config('ninja.license_url').'/api/v1/enable_forwarding', [ - 'company_key' => $company_key, + 'account_key' => $company_key, 'email' => $email, ]); } diff --git a/database/seeders/LanguageSeeder.php b/database/seeders/LanguageSeeder.php index 5a27e677b850..5677b70f10e0 100644 --- a/database/seeders/LanguageSeeder.php +++ b/database/seeders/LanguageSeeder.php @@ -63,6 +63,7 @@ class LanguageSeeder extends Seeder ['id' => 36, 'name' => 'Bulgarian', 'locale' => 'bg'], ['id' => 37, 'name' => 'Hebrew', 'locale' => 'he'], ['id' => 38, 'name' => 'Khmer', 'locale' => 'km_KH'], + ['id' => 39, 'name' => 'Hungarian', 'locale' => 'hu'], ]; foreach ($languages as $language) { diff --git a/lang/fr_CA/texts.php b/lang/fr_CA/texts.php index be3d83503bbf..78ce93005021 100644 --- a/lang/fr_CA/texts.php +++ b/lang/fr_CA/texts.php @@ -5087,6 +5087,16 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette 'upload_certificate' => 'Téléverser le certificat', 'certificate_passphrase' => 'Passphrase du certificat', 'valid_vat_number' => 'Numéro valide de taxe', + 'react_notification_link' => 'Lien de notifications React', + 'react_notification_link_help' => 'Les courriels provenant de l\'administration contiennent des liens vers l\'application React', + 'show_task_billable' => 'Afficher la facturation de tâche', + 'credit_item' => 'Credit Item', + 'drop_file_here' => 'Déposer le fichier ici', + 'files' => 'Fichiers', + 'camera' => 'Caméra', + 'gallery' => 'Galerie', + 'project_location' => 'Emplacement du projet', + 'add_gateway_help_message' => 'Ajouter un passerelle de paiement (Stripe, WePay, ou PayPal) pour accepter les paiements en ligne', ); diff --git a/lang/hu/auth.php b/lang/hu/auth.php new file mode 100644 index 000000000000..2142a42f941d --- /dev/null +++ b/lang/hu/auth.php @@ -0,0 +1,19 @@ + 'Ovi podaci ne odgovaraju našima.', + 'throttle' => 'Previše pokušaja prijave. Molim Vas pokušajte ponovno za :seconds sekundi.', + +]; diff --git a/lang/hu/pagination.php b/lang/hu/pagination.php new file mode 100644 index 000000000000..e0bed173dadf --- /dev/null +++ b/lang/hu/pagination.php @@ -0,0 +1,19 @@ + '« Prethodna', + 'next' => 'Sljedeća »', + +]; diff --git a/lang/hu/passwords.php b/lang/hu/passwords.php new file mode 100644 index 000000000000..59f39af3fe05 --- /dev/null +++ b/lang/hu/passwords.php @@ -0,0 +1,22 @@ + 'Lozinke moraju biti duge barem 6 znakova i moraju odgovarati potvrdi.', + 'reset' => 'Lozinka je postavljena!', + 'sent' => 'Poveznica za ponovono postavljanje lozinke je poslana!', + 'token' => 'Oznaka za ponovno postavljanje lozinke više nije važeća.', + 'user' => 'Korisnik nije pronađen.', + +]; diff --git a/lang/hu/texts.php b/lang/hu/texts.php new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/lang/hu/validation.php b/lang/hu/validation.php new file mode 100644 index 000000000000..8b54e496b08a --- /dev/null +++ b/lang/hu/validation.php @@ -0,0 +1,116 @@ + 'Polje :attribute mora biti prihvaćeno.', + 'active_url' => 'Polje :attribute nije ispravan URL.', + 'after' => 'Polje :attribute mora biti datum nakon :date.', + 'alpha' => 'Polje :attribute smije sadržavati samo slova.', + 'alpha_dash' => 'Polje :attribute smije sadržavati samo slova, brojeve i crtice.', + 'alpha_num' => 'Polje :attribute smije sadržavati samo slova i brojeve.', + 'array' => 'Polje :attribute mora biti niz.', + 'before' => 'Polje :attribute mora biti datum prije :date.', + 'between' => [ + 'numeric' => 'Polje :attribute mora biti između :min - :max.', + 'file' => 'Polje :attribute mora biti između :min - :max kilobajta.', + 'string' => 'Polje :attribute mora biti između :min - :max znakova.', + 'array' => 'Polje :attribute mora imati između :min - :max stavki.', + ], + 'boolean' => 'Polje :attribute mora biti false ili true.', + 'confirmed' => 'Potvrda polja :attribute se ne podudara.', + 'date' => 'Polje :attribute nije ispravan datum.', + 'date_format' => 'Polje :attribute ne podudara s formatom :format.', + 'different' => 'Polja :attribute i :other moraju biti različita.', + 'digits' => 'Polje :attribute mora sadržavati :digits znamenki.', + 'digits_between' => 'Polje :attribute mora imati između :min i :max znamenki.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'Polje :attribute mora biti ispravna e-mail adresa.', + 'exists' => 'Odabrano polje :attribute nije ispravno.', + 'filled' => 'The :attribute field is required.', + 'image' => 'Polje :attribute mora biti slika.', + 'in' => 'Odabrano polje :attribute nije ispravno.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'Polje :attribute mora biti broj.', + 'ip' => 'Polje :attribute mora biti ispravna IP adresa.', + 'json' => 'The :attribute must be a valid JSON string.', + 'max' => [ + 'numeric' => 'Polje :attribute mora biti manje od :max.', + 'file' => 'Polje :attribute mora biti manje od :max kilobajta.', + 'string' => 'Polje :attribute mora sadržavati manje od :max znakova.', + 'array' => 'Polje :attribute ne smije imati više od :max stavki.', + ], + 'mimes' => 'Polje :attribute mora biti datoteka tipa: :values.', + 'min' => [ + 'numeric' => 'Polje :attribute mora biti najmanje :min.', + 'file' => 'Polje :attribute mora biti najmanje :min kilobajta.', + 'string' => 'Polje :attribute mora sadržavati najmanje :min znakova.', + 'array' => 'Polje :attribute mora sadržavati najmanje :min stavki.', + ], + 'not_in' => 'Odabrano polje :attribute nije ispravno.', + 'numeric' => 'Polje :attribute mora biti broj.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'Polje :attribute se ne podudara s formatom.', + 'required' => 'Polje :attribute je obavezno.', + 'required_if' => 'Polje :attribute je obavezno kada polje :other sadrži :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'Polje :attribute je obavezno kada postoji polje :values.', + 'required_with_all' => 'Polje :attribute je obavezno kada postje polja :values.', + 'required_without' => 'Polje :attribute je obavezno kada ne postoji polje :values.', + 'required_without_all' => 'Polje :attribute je obavezno kada nijedno od polja :values ne postoji.', + 'same' => 'Polja :attribute i :other se moraju podudarati.', + 'size' => [ + 'numeric' => 'Polje :attribute mora biti :size.', + 'file' => 'Polje :attribute mora biti :size kilobajta.', + 'string' => 'Polje :attribute mora biti :size znakova.', + 'array' => 'Polje :attribute mora sadržavati :size stavki.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'Polje :attribute mora biti ispravna vremenska zona.', + 'unique' => 'Polje :attribute već postoji.', + 'url' => 'Polje :attribute nije ispravnog formata.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [ + // + ], + +]; diff --git a/routes/client.php b/routes/client.php index 1be22a18ca7f..0a95a333c600 100644 --- a/routes/client.php +++ b/routes/client.php @@ -40,7 +40,7 @@ Route::get('tmp_pdf/{hash}', [App\Http\Controllers\ClientPortal\TempRouteControl Route::get('client/key_login/{contact_key}', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'login'])->name('client.contact_login')->middleware(['domain_db','contact_key_login']); Route::get('client/magic_link/{magic_link}', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'magicLink'])->name('client.contact_magic_link')->middleware(['domain_db','contact_key_login']); -Route::get('documents/{document_hash}', [App\Http\Controllers\ClientPortal\DocumentController::class, 'publicDownload'])->name('documents.public_download')->middleware(['domain_db']); +Route::get('documents/{document_hash}', [App\Http\Controllers\ClientPortal\DocumentController::class, 'publicDownload'])->name('documents.public_download')->middleware(['domain_db','token_auth']); Route::get('error', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'errorPage'])->name('client.error'); Route::get('client/payment/{contact_key}/{payment_id}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'paymentRouter'])->middleware(['domain_db','contact_key_login']); Route::get('client/ninja/{contact_key}/{company_key}', [App\Http\Controllers\ClientPortal\NinjaPlanController::class, 'index'])->name('client.ninja_contact_login')->middleware(['domain_db']);