mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Dedicated update route for company user preferences
This commit is contained in:
parent
3081907cad
commit
a4c14084da
@ -11,12 +11,13 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Http\Requests\CompanyUser\UpdateCompanyUserRequest;
|
|
||||||
use App\Models\CompanyUser;
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use App\Models\CompanyUser;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
use App\Transformers\CompanyUserTransformer;
|
use App\Transformers\CompanyUserTransformer;
|
||||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||||
use Illuminate\Http\Response;
|
use App\Http\Requests\CompanyUser\UpdateCompanyUserRequest;
|
||||||
|
use App\Http\Requests\CompanyUser\UpdateCompanyUserPreferencesRequest;
|
||||||
|
|
||||||
class CompanyUserController extends BaseController
|
class CompanyUserController extends BaseController
|
||||||
{
|
{
|
||||||
@ -131,6 +132,24 @@ class CompanyUserController extends BaseController
|
|||||||
return $this->itemResponse($company_user->fresh());
|
return $this->itemResponse($company_user->fresh());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updatePreferences(UpdateCompanyUserPreferencesRequest $request, User $user)
|
||||||
|
{
|
||||||
|
$company = auth()->user()->company();
|
||||||
|
|
||||||
|
$company_user = CompanyUser::whereUserId($user->id)->whereCompanyId($company->id)->first();
|
||||||
|
|
||||||
|
if (! $company_user) {
|
||||||
|
throw new ModelNotFoundException(ctrans('texts.company_user_not_found'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$company_user->react_settings = $request->react_settings;
|
||||||
|
$company_user->save();
|
||||||
|
|
||||||
|
return $this->itemResponse($company_user->fresh());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the specified resource from storage.
|
* Remove the specified resource from storage.
|
||||||
*
|
*
|
||||||
|
@ -179,6 +179,7 @@ Route::group(['middleware' => ['throttle:api', 'api_db', 'token_auth', 'locale']
|
|||||||
Route::post('company_gateways/bulk', [CompanyGatewayController::class, 'bulk'])->name('company_gateways.bulk');
|
Route::post('company_gateways/bulk', [CompanyGatewayController::class, 'bulk'])->name('company_gateways.bulk');
|
||||||
|
|
||||||
Route::put('company_users/{user}', [CompanyUserController::class, 'update']);
|
Route::put('company_users/{user}', [CompanyUserController::class, 'update']);
|
||||||
|
Route::put('company_users/{user}/preferences', [CompanyUserController::class, 'updatePreferences']);
|
||||||
|
|
||||||
Route::resource('credits', CreditController::class); // name = (credits. index / create / show / update / destroy / edit
|
Route::resource('credits', CreditController::class); // name = (credits. index / create / show / update / destroy / edit
|
||||||
Route::put('credits/{credit}/upload', [CreditController::class, 'upload'])->name('credits.upload');
|
Route::put('credits/{credit}/upload', [CreditController::class, 'upload'])->name('credits.upload');
|
||||||
|
@ -35,6 +35,71 @@ class UpdateCompanyUserTest extends TestCase
|
|||||||
$this->makeTestData();
|
$this->makeTestData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testUpdatingCompanyUserReactSettings()
|
||||||
|
{
|
||||||
|
|
||||||
|
$company_user = CompanyUser::whereUserId($this->user->id)->whereCompanyId($this->company->id)->first();
|
||||||
|
|
||||||
|
$this->user->company_user = $company_user;
|
||||||
|
|
||||||
|
$settings = [
|
||||||
|
'react_settings' => [
|
||||||
|
'show_pdf_preview' => true,
|
||||||
|
'react_notification_link' => false
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $this->token,
|
||||||
|
])->put('/api/v1/company_users/'.$this->encodePrimaryKey($this->user->id).'/preferences', $settings);
|
||||||
|
} catch (ValidationException $e) {
|
||||||
|
$message = json_decode($e->validator->getMessageBag(), 1);
|
||||||
|
$this->assertNotNull($message);
|
||||||
|
}
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
|
||||||
|
$arr = $response->json();
|
||||||
|
|
||||||
|
$this->assertTrue($arr['data']['react_settings']['show_pdf_preview']);
|
||||||
|
$this->assertFalse($arr['data']['react_settings']['react_notification_link']);
|
||||||
|
|
||||||
|
|
||||||
|
$settings = [
|
||||||
|
'react_settings' => [
|
||||||
|
'show_pdf_preview' => false,
|
||||||
|
'react_notification_link' => true
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $this->token,
|
||||||
|
])->put('/api/v1/company_users/'.$this->encodePrimaryKey($this->user->id).'/preferences', $settings);
|
||||||
|
} catch (ValidationException $e) {
|
||||||
|
$message = json_decode($e->validator->getMessageBag(), 1);
|
||||||
|
$this->assertNotNull($message);
|
||||||
|
}
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
|
||||||
|
$arr = $response->json();
|
||||||
|
|
||||||
|
$this->assertFalse($arr['data']['react_settings']['show_pdf_preview']);
|
||||||
|
$this->assertTrue($arr['data']['react_settings']['react_notification_link']);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public function testUpdatingCompanyUserAsAdmin()
|
public function testUpdatingCompanyUserAsAdmin()
|
||||||
{
|
{
|
||||||
// User::unguard();
|
// User::unguard();
|
||||||
@ -67,4 +132,6 @@ class UpdateCompanyUserTest extends TestCase
|
|||||||
|
|
||||||
$this->assertEquals('ninja', $arr['data']['settings']['invoice']);
|
$this->assertEquals('ninja', $arr['data']['settings']['invoice']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user