mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-03 05:04:34 -04:00
Invitation routing
This commit is contained in:
parent
d5ec342764
commit
1e1be26980
46
app/Http/Controllers/ClientPortal/InvitationController.php
Normal file
46
app/Http/Controllers/ClientPortal/InvitationController.php
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2019. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://opensource.org/licenses/AAL
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\ClientPortal;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\InvoiceInvitation;
|
||||||
|
use App\Utils\Traits\MakesDates;
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class InvitationController
|
||||||
|
* @package App\Http\Controllers\ClientPortal\InvitationController
|
||||||
|
*/
|
||||||
|
|
||||||
|
class InvitationController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
use MakesHash;
|
||||||
|
use MakesDates;
|
||||||
|
|
||||||
|
public function invoiceRouter(string $invitation_key)
|
||||||
|
{
|
||||||
|
|
||||||
|
$invitation = InvoiceInvitation::whereInvitationKey($invitation_key)->first();
|
||||||
|
|
||||||
|
if($invitation){
|
||||||
|
$invitation->markViewed();
|
||||||
|
Auth::guard('contact')->loginUsingId($invitation->client_contact_id, true);
|
||||||
|
return redirect()->route('client.invoice.show', ['invoice' => $this->encodePrimaryKey($invitation->invoice_id)]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
abort(404);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -34,9 +34,10 @@ class SetDomainNameDb
|
|||||||
**/
|
**/
|
||||||
if( $request->getHttpHost() && config('ninja.db.multi_db_enabled') && ! MultiDB::findAndSetDbByDomain($request->getHttpHost()))
|
if( $request->getHttpHost() && config('ninja.db.multi_db_enabled') && ! MultiDB::findAndSetDbByDomain($request->getHttpHost()))
|
||||||
{
|
{
|
||||||
|
if(request()->json)
|
||||||
return response()->json(json_encode($error, JSON_PRETTY_PRINT) ,403);
|
return response()->json(json_encode($error, JSON_PRETTY_PRINT) ,403);
|
||||||
|
else
|
||||||
|
abort(404);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
|
@ -34,7 +34,7 @@ class UrlSetDb
|
|||||||
|
|
||||||
if (config('ninja.db.multi_db_enabled'))
|
if (config('ninja.db.multi_db_enabled'))
|
||||||
{
|
{
|
||||||
$hashids = new Hashids('', 15); //decoded output is _always_ an array.
|
$hashids = new Hashids('', 10); //decoded output is _always_ an array.
|
||||||
|
|
||||||
//parse URL hash and set DB
|
//parse URL hash and set DB
|
||||||
$segments = explode("-", $request->route('confirmation_code'));
|
$segments = explode("-", $request->route('confirmation_code'));
|
||||||
|
@ -14,6 +14,7 @@ namespace App\Models;
|
|||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
use App\Utils\Traits\MakesDates;
|
use App\Utils\Traits\MakesDates;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Carbon;
|
||||||
|
|
||||||
class InvoiceInvitation extends BaseModel
|
class InvoiceInvitation extends BaseModel
|
||||||
{
|
{
|
||||||
@ -79,4 +80,10 @@ class InvoiceInvitation extends BaseModel
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function markViewed()
|
||||||
|
{
|
||||||
|
$this->viewed_date = Carbon::now();
|
||||||
|
$this->save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ class RandomDataSeeder extends Seeder
|
|||||||
$account = factory(\App\Models\Account::class)->create();
|
$account = factory(\App\Models\Account::class)->create();
|
||||||
$company = factory(\App\Models\Company::class)->create([
|
$company = factory(\App\Models\Company::class)->create([
|
||||||
'account_id' => $account->id,
|
'account_id' => $account->id,
|
||||||
'domain' => 'ninja.test',
|
'domain' => 'ninja.test:8000',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$account->default_company_id = $company->id;
|
$account->default_company_id = $company->id;
|
||||||
|
@ -40,4 +40,11 @@ Route::group(['middleware' => ['auth:contact'], 'prefix' => 'client', 'as' => 'c
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Route::group(['middleware' => ['domain_db'], 'prefix' => 'client', 'as' => 'client.'], function () {
|
||||||
|
|
||||||
|
/*Invitation catches*/
|
||||||
|
Route::get('invoice/{invitation_id}','ClientPortal\InvitationController@invoiceRouter');
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
Route::fallback('BaseController@notFoundClient');
|
Route::fallback('BaseController@notFoundClient');
|
Loading…
x
Reference in New Issue
Block a user