mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-31 21:34:35 -04:00
Updates for white label translation
This commit is contained in:
parent
ecc27c2bfa
commit
1856b44f01
@ -89,6 +89,10 @@ class LicenseController extends BaseController
|
|||||||
$license_key = request()->input('license_key');
|
$license_key = request()->input('license_key');
|
||||||
$product_id = 3;
|
$product_id = 3;
|
||||||
|
|
||||||
|
if(substr($license_key, 0, 3) == 'v5_') {
|
||||||
|
return $this->v5ClaimLicense($license_key, $product_id);
|
||||||
|
}
|
||||||
|
|
||||||
$url = config('ninja.license_url')."/claim_license?license_key={$license_key}&product_id={$product_id}&get_date=true";
|
$url = config('ninja.license_url')."/claim_license?license_key={$license_key}&product_id={$product_id}&get_date=true";
|
||||||
$data = trim(CurlUtils::get($url));
|
$data = trim(CurlUtils::get($url));
|
||||||
|
|
||||||
@ -149,15 +153,15 @@ class LicenseController extends BaseController
|
|||||||
return response()->json($error, 400);
|
return response()->json($error, 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function v5ClaimLicense(Request $request)
|
public function v5ClaimLicense(string $license_key)
|
||||||
{
|
{
|
||||||
$this->checkLicense();
|
$this->checkLicense();
|
||||||
|
|
||||||
/* Catch claim license requests */
|
/* Catch claim license requests */
|
||||||
if (config('ninja.environment') == 'selfhost' && request()->has('license_key')) {
|
if (config('ninja.environment') == 'selfhost') {
|
||||||
// $response = Http::get( "http://ninja.test:8000/claim_license", [
|
// $response = Http::get( "http://ninja.test:8000/claim_license", [
|
||||||
$response = Http::get("https://invoicing.co/claim_license", [
|
$response = Http::get("https://invoicing.co/claim_license", [
|
||||||
'license_key' => $request->input('license_key'),
|
'license_key' => $license_key,
|
||||||
'product_id' => 3,
|
'product_id' => 3,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -11,54 +11,55 @@
|
|||||||
|
|
||||||
namespace App\Http;
|
namespace App\Http;
|
||||||
|
|
||||||
use App\Http\Middleware\ApiSecretCheck;
|
use App\Utils\Ninja;
|
||||||
|
use App\Http\Middleware\Cors;
|
||||||
|
use App\Http\Middleware\SetDb;
|
||||||
|
use App\Http\Middleware\Locale;
|
||||||
|
use App\Http\Middleware\SetWebDb;
|
||||||
|
use App\Http\Middleware\UrlSetDb;
|
||||||
|
use App\Http\Middleware\TokenAuth;
|
||||||
|
use App\Http\Middleware\SetEmailDb;
|
||||||
|
use App\Http\Middleware\VerifyHash;
|
||||||
|
use App\Http\Middleware\SetInviteDb;
|
||||||
|
use App\Http\Middleware\TrimStrings;
|
||||||
use App\Http\Middleware\Authenticate;
|
use App\Http\Middleware\Authenticate;
|
||||||
use App\Http\Middleware\CheckClientExistence;
|
use App\Http\Middleware\ContactSetDb;
|
||||||
use App\Http\Middleware\CheckForMaintenanceMode;
|
use App\Http\Middleware\QueryLogging;
|
||||||
use App\Http\Middleware\ClientPortalEnabled;
|
use App\Http\Middleware\TrustProxies;
|
||||||
|
use App\Http\Middleware\UserVerified;
|
||||||
|
use App\Http\Middleware\VendorLocale;
|
||||||
|
use App\Http\Middleware\PhantomSecret;
|
||||||
|
use App\Http\Middleware\SetDocumentDb;
|
||||||
|
use App\Http\Middleware\ApiSecretCheck;
|
||||||
use App\Http\Middleware\ContactAccount;
|
use App\Http\Middleware\ContactAccount;
|
||||||
|
use App\Http\Middleware\EncryptCookies;
|
||||||
|
use App\Http\Middleware\SessionDomains;
|
||||||
use App\Http\Middleware\ContactKeyLogin;
|
use App\Http\Middleware\ContactKeyLogin;
|
||||||
use App\Http\Middleware\ContactRegister;
|
use App\Http\Middleware\ContactRegister;
|
||||||
use App\Http\Middleware\ContactSetDb;
|
|
||||||
use App\Http\Middleware\ContactTokenAuth;
|
|
||||||
use App\Http\Middleware\Cors;
|
|
||||||
use App\Http\Middleware\EncryptCookies;
|
|
||||||
use App\Http\Middleware\Locale;
|
|
||||||
use App\Http\Middleware\PasswordProtection;
|
|
||||||
use App\Http\Middleware\PhantomSecret;
|
|
||||||
use App\Http\Middleware\QueryLogging;
|
|
||||||
use App\Http\Middleware\RedirectIfAuthenticated;
|
|
||||||
use App\Http\Middleware\SessionDomains;
|
|
||||||
use App\Http\Middleware\SetDb;
|
|
||||||
use App\Http\Middleware\SetDbByCompanyKey;
|
|
||||||
use App\Http\Middleware\SetDocumentDb;
|
|
||||||
use App\Http\Middleware\SetDomainNameDb;
|
use App\Http\Middleware\SetDomainNameDb;
|
||||||
use App\Http\Middleware\SetEmailDb;
|
|
||||||
use App\Http\Middleware\SetInviteDb;
|
|
||||||
use App\Http\Middleware\SetWebDb;
|
|
||||||
use App\Http\Middleware\Shop\ShopTokenAuth;
|
|
||||||
use App\Http\Middleware\TokenAuth;
|
|
||||||
use App\Http\Middleware\TrimStrings;
|
|
||||||
use App\Http\Middleware\TrustProxies;
|
|
||||||
use App\Http\Middleware\UrlSetDb;
|
|
||||||
use App\Http\Middleware\UserVerified;
|
|
||||||
use App\Http\Middleware\VendorContactKeyLogin;
|
|
||||||
use App\Http\Middleware\VendorLocale;
|
|
||||||
use App\Http\Middleware\VerifyCsrfToken;
|
use App\Http\Middleware\VerifyCsrfToken;
|
||||||
use App\Http\Middleware\VerifyHash;
|
use App\Http\Middleware\ContactTokenAuth;
|
||||||
use Illuminate\Auth\Middleware\AuthenticateWithBasicAuth;
|
|
||||||
use Illuminate\Auth\Middleware\Authorize;
|
use Illuminate\Auth\Middleware\Authorize;
|
||||||
use Illuminate\Auth\Middleware\EnsureEmailIsVerified;
|
use App\Http\Middleware\SetDbByCompanyKey;
|
||||||
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
|
use App\Http\Middleware\PasswordProtection;
|
||||||
use Illuminate\Foundation\Http\Kernel as HttpKernel;
|
use App\Http\Middleware\ClientPortalEnabled;
|
||||||
use Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull;
|
use App\Http\Middleware\CheckClientExistence;
|
||||||
use Illuminate\Foundation\Http\Middleware\ValidatePostSize;
|
use App\Http\Middleware\VendorContactKeyLogin;
|
||||||
use Illuminate\Http\Middleware\SetCacheHeaders;
|
use Illuminate\Http\Middleware\SetCacheHeaders;
|
||||||
use Illuminate\Routing\Middleware\SubstituteBindings;
|
|
||||||
use Illuminate\Routing\Middleware\ThrottleRequests;
|
|
||||||
use Illuminate\Routing\Middleware\ValidateSignature;
|
|
||||||
use Illuminate\Session\Middleware\StartSession;
|
use Illuminate\Session\Middleware\StartSession;
|
||||||
|
use App\Http\Middleware\CheckForMaintenanceMode;
|
||||||
|
use App\Http\Middleware\RedirectIfAuthenticated;
|
||||||
|
use Illuminate\Routing\Middleware\ThrottleRequests;
|
||||||
|
use Illuminate\Foundation\Http\Kernel as HttpKernel;
|
||||||
|
use Illuminate\Routing\Middleware\ValidateSignature;
|
||||||
|
use Illuminate\Auth\Middleware\EnsureEmailIsVerified;
|
||||||
|
use Illuminate\Routing\Middleware\SubstituteBindings;
|
||||||
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
||||||
|
use Illuminate\Auth\Middleware\AuthenticateWithBasicAuth;
|
||||||
|
use Illuminate\Foundation\Http\Middleware\ValidatePostSize;
|
||||||
|
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
|
||||||
|
use Illuminate\Routing\Middleware\ThrottleRequestsWithRedis;
|
||||||
|
use Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull;
|
||||||
|
|
||||||
class Kernel extends HttpKernel
|
class Kernel extends HttpKernel
|
||||||
{
|
{
|
||||||
@ -75,9 +76,7 @@ class Kernel extends HttpKernel
|
|||||||
TrimStrings::class,
|
TrimStrings::class,
|
||||||
ConvertEmptyStringsToNull::class,
|
ConvertEmptyStringsToNull::class,
|
||||||
TrustProxies::class,
|
TrustProxies::class,
|
||||||
// \Illuminate\Http\Middleware\HandleCors::class,
|
|
||||||
Cors::class,
|
Cors::class,
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -140,7 +139,6 @@ class Kernel extends HttpKernel
|
|||||||
'cors' => Cors::class,
|
'cors' => Cors::class,
|
||||||
'guest' => RedirectIfAuthenticated::class,
|
'guest' => RedirectIfAuthenticated::class,
|
||||||
'signed' => ValidateSignature::class,
|
'signed' => ValidateSignature::class,
|
||||||
'throttle' => ThrottleRequests::class,
|
|
||||||
'verified' => EnsureEmailIsVerified::class,
|
'verified' => EnsureEmailIsVerified::class,
|
||||||
'query_logging' => QueryLogging::class,
|
'query_logging' => QueryLogging::class,
|
||||||
'token_auth' => TokenAuth::class,
|
'token_auth' => TokenAuth::class,
|
||||||
@ -152,7 +150,6 @@ class Kernel extends HttpKernel
|
|||||||
'email_db' => SetEmailDb::class,
|
'email_db' => SetEmailDb::class,
|
||||||
'invite_db' => SetInviteDb::class,
|
'invite_db' => SetInviteDb::class,
|
||||||
'password_protected' => PasswordProtection::class,
|
'password_protected' => PasswordProtection::class,
|
||||||
'signed' => ValidateSignature::class,
|
|
||||||
'portal_enabled' => ClientPortalEnabled::class,
|
'portal_enabled' => ClientPortalEnabled::class,
|
||||||
'url_db' => UrlSetDb::class,
|
'url_db' => UrlSetDb::class,
|
||||||
'web_db' => SetWebDb::class,
|
'web_db' => SetWebDb::class,
|
||||||
@ -162,7 +159,6 @@ class Kernel extends HttpKernel
|
|||||||
'vendor_locale' => VendorLocale::class,
|
'vendor_locale' => VendorLocale::class,
|
||||||
'contact_register' => ContactRegister::class,
|
'contact_register' => ContactRegister::class,
|
||||||
'verify_hash' => VerifyHash::class,
|
'verify_hash' => VerifyHash::class,
|
||||||
'shop_token_auth' => ShopTokenAuth::class,
|
|
||||||
'phantom_secret' => PhantomSecret::class,
|
'phantom_secret' => PhantomSecret::class,
|
||||||
'contact_key_login' => ContactKeyLogin::class,
|
'contact_key_login' => ContactKeyLogin::class,
|
||||||
'vendor_contact_key_login' => VendorContactKeyLogin::class,
|
'vendor_contact_key_login' => VendorContactKeyLogin::class,
|
||||||
@ -170,6 +166,7 @@ class Kernel extends HttpKernel
|
|||||||
'user_verified' => UserVerified::class,
|
'user_verified' => UserVerified::class,
|
||||||
'document_db' => SetDocumentDb::class,
|
'document_db' => SetDocumentDb::class,
|
||||||
'session_domain' => SessionDomains::class,
|
'session_domain' => SessionDomains::class,
|
||||||
|
//we dyanamically add the throttle middleware in RouteServiceProvider
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $middlewarePriority = [
|
protected $middlewarePriority = [
|
||||||
@ -189,7 +186,6 @@ class Kernel extends HttpKernel
|
|||||||
ContactTokenAuth::class,
|
ContactTokenAuth::class,
|
||||||
ContactKeyLogin::class,
|
ContactKeyLogin::class,
|
||||||
Authenticate::class,
|
Authenticate::class,
|
||||||
ShopTokenAuth::class,
|
|
||||||
ContactRegister::class,
|
ContactRegister::class,
|
||||||
PhantomSecret::class,
|
PhantomSecret::class,
|
||||||
CheckClientExistence::class,
|
CheckClientExistence::class,
|
||||||
@ -199,4 +195,5 @@ class Kernel extends HttpKernel
|
|||||||
SubstituteBindings::class,
|
SubstituteBindings::class,
|
||||||
ContactAccount::class,
|
ContactAccount::class,
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,14 +11,17 @@
|
|||||||
|
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
use App\Models\Scheduler;
|
|
||||||
use App\Utils\Ninja;
|
use App\Utils\Ninja;
|
||||||
|
use App\Models\Scheduler;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use Illuminate\Support\Facades\Route;
|
||||||
use Illuminate\Cache\RateLimiting\Limit;
|
use Illuminate\Cache\RateLimiting\Limit;
|
||||||
|
use Illuminate\Support\Facades\RateLimiter;
|
||||||
|
use Illuminate\Routing\Middleware\ThrottleRequests;
|
||||||
|
use Illuminate\Routing\Middleware\ThrottleRequestsWithRedis;
|
||||||
use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundException;
|
use Illuminate\Database\Eloquent\ModelNotFoundException as ModelNotFoundException;
|
||||||
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
|
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
|
||||||
use Illuminate\Support\Facades\RateLimiter;
|
|
||||||
use Illuminate\Support\Facades\Route;
|
|
||||||
|
|
||||||
class RouteServiceProvider extends ServiceProvider
|
class RouteServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
@ -32,6 +35,15 @@ class RouteServiceProvider extends ServiceProvider
|
|||||||
public function boot()
|
public function boot()
|
||||||
{
|
{
|
||||||
parent::boot();
|
parent::boot();
|
||||||
|
|
||||||
|
|
||||||
|
if (Ninja::isHosted()) {
|
||||||
|
app('router')->aliasMiddleware('throttle', ThrottleRequestsWithRedis::class);
|
||||||
|
// app('router')->aliasMiddleware('throttle', ThrottleRequests::class);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
app('router')->aliasMiddleware('throttle', ThrottleRequests::class);
|
||||||
|
}
|
||||||
|
|
||||||
Route::bind('task_scheduler', function ($value) {
|
Route::bind('task_scheduler', function ($value) {
|
||||||
if (is_numeric($value)) {
|
if (is_numeric($value)) {
|
||||||
@ -44,29 +56,30 @@ class RouteServiceProvider extends ServiceProvider
|
|||||||
->where('id', $this->decodePrimaryKey($value))->firstOrFail();
|
->where('id', $this->decodePrimaryKey($value))->firstOrFail();
|
||||||
});
|
});
|
||||||
|
|
||||||
RateLimiter::for('login', function () {
|
RateLimiter::for('login', function (Request $request) {
|
||||||
if (Ninja::isSelfHost()) {
|
if (Ninja::isSelfHost()) {
|
||||||
return Limit::none();
|
return Limit::none();
|
||||||
} else {
|
} else {
|
||||||
return Limit::perMinute(50);
|
return Limit::perMinute(50)->by($request->ip());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
RateLimiter::for('api', function () {
|
RateLimiter::for('api', function (Request $request) {
|
||||||
if (Ninja::isSelfHost()) {
|
if (Ninja::isSelfHost()) {
|
||||||
return Limit::none();
|
return Limit::none();
|
||||||
} else {
|
} else {
|
||||||
return Limit::perMinute(300);
|
return Limit::perMinute(300)->by($request->ip());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
RateLimiter::for('refresh', function () {
|
RateLimiter::for('refresh', function (Request $request) {
|
||||||
if (Ninja::isSelfHost()) {
|
if (Ninja::isSelfHost()) {
|
||||||
return Limit::none();
|
return Limit::none();
|
||||||
} else {
|
} else {
|
||||||
return Limit::perMinute(200);
|
return Limit::perMinute(200)->by($request->ip());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -167,7 +167,7 @@ class SubscriptionService
|
|||||||
{
|
{
|
||||||
//send license to the user.
|
//send license to the user.
|
||||||
$invoice = $payment_hash->fee_invoice;
|
$invoice = $payment_hash->fee_invoice;
|
||||||
$license_key = Str::uuid()->toString();
|
$license_key = "v5_".Str::uuid()->toString();
|
||||||
$invoice->footer = ctrans('texts.white_label_body', ['license_key' => $license_key]);
|
$invoice->footer = ctrans('texts.white_label_body', ['license_key' => $license_key]);
|
||||||
|
|
||||||
$recurring_invoice = $this->convertInvoiceToRecurring($payment_hash->payment->client_id);
|
$recurring_invoice = $this->convertInvoiceToRecurring($payment_hash->payment->client_id);
|
||||||
|
@ -17,6 +17,7 @@ return [
|
|||||||
|
|
||||||
'default' => env('CACHE_DRIVER', 'file'),
|
'default' => env('CACHE_DRIVER', 'file'),
|
||||||
|
|
||||||
|
'limiter' => 'redis',
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Cache Stores
|
| Cache Stores
|
||||||
@ -30,7 +31,6 @@ return [
|
|||||||
| "memcached", "redis", "dynamodb", "octane", "null"
|
| "memcached", "redis", "dynamodb", "octane", "null"
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'stores' => [
|
'stores' => [
|
||||||
|
|
||||||
'apc' => [
|
'apc' => [
|
||||||
|
@ -1191,7 +1191,7 @@ $LANG = array(
|
|||||||
'plan_started' => 'Plan Started',
|
'plan_started' => 'Plan Started',
|
||||||
'plan_expires' => 'Plan Expires',
|
'plan_expires' => 'Plan Expires',
|
||||||
|
|
||||||
'white_label_button' => 'White Label',
|
'white_label_button' => 'Purchase White Label',
|
||||||
|
|
||||||
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
|
'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
|
||||||
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
|
'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.',
|
||||||
|
@ -136,7 +136,6 @@ Route::group(['middleware' => ['throttle:api', 'api_db', 'token_auth', 'locale']
|
|||||||
Route::post('charts/chart_summary', [ChartController::class, 'chart_summary'])->name('chart.chart_summary');
|
Route::post('charts/chart_summary', [ChartController::class, 'chart_summary'])->name('chart.chart_summary');
|
||||||
|
|
||||||
Route::post('claim_license', [LicenseController::class, 'index'])->name('license.index');
|
Route::post('claim_license', [LicenseController::class, 'index'])->name('license.index');
|
||||||
Route::post('v5_claim_license', [LicenseController::class, 'v5ClaimLicense'])->name('license.v5_claim_license');
|
|
||||||
|
|
||||||
Route::resource('clients', ClientController::class); // name = (clients. index / create / show / update / destroy / edit
|
Route::resource('clients', ClientController::class); // name = (clients. index / create / show / update / destroy / edit
|
||||||
Route::put('clients/{client}/upload', [ClientController::class, 'upload'])->name('clients.upload');
|
Route::put('clients/{client}/upload', [ClientController::class, 'upload'])->name('clients.upload');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user