From 7934707b9bb634983854df5842bca9b9aeeb64dc Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 9 Nov 2017 21:21:08 +1100 Subject: [PATCH] Delete push token (#1737) * Remove push notification token when a user logs out * bug * logging * json encode array values only * use Token as Key instead of email * fix duplicate tokens appearing * refactor get User Accounts from API * refactor get User Accounts from API --- app/Http/Controllers/AccountApiController.php | 33 +++++++++++++++++-- app/Http/routes.php | 1 + 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/AccountApiController.php b/app/Http/Controllers/AccountApiController.php index cf6b3647559e..a5f8af6adf2a 100644 --- a/app/Http/Controllers/AccountApiController.php +++ b/app/Http/Controllers/AccountApiController.php @@ -16,6 +16,7 @@ use Auth; use Cache; use Exception; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; use Response; use Socialite; use Utils; @@ -91,7 +92,7 @@ class AccountApiController extends BaseAPIController return $this->response($data); } - + public function show(Request $request) { $account = Auth::user()->account; @@ -118,7 +119,13 @@ class AccountApiController extends BaseAPIController public function getUserAccounts(Request $request) { - return $this->processLogin($request); + $user = Auth::user(); + + $users = $this->accountRepo->findUsers($user, 'account.account_tokens'); + $transformer = new UserAccountTransformer($user->account, $request->serializer, $request->token_name); + $data = $this->createCollection($users, $transformer, 'user_account'); + + return $this->response($data); } public function update(UpdateAccountRequest $request) @@ -140,7 +147,7 @@ class AccountApiController extends BaseAPIController $devices = json_decode($account->devices, true); for ($x = 0; $x < count($devices); $x++) { - if ($devices[$x]['email'] == Auth::user()->username) { + if ($devices[$x]['email'] == $request->email) { $devices[$x]['token'] = $request->token; //update $devices[$x]['device'] = $request->device; $account->devices = json_encode($devices); @@ -171,6 +178,26 @@ class AccountApiController extends BaseAPIController return $this->response($newDevice); } + public function removeDeviceToken(Request $request) { + + $account = Auth::user()->account; + + $devices = json_decode($account->devices, true); + + foreach($devices as $key => $value) + { + + if($request->token == $value['token']) + unset($devices[$key]); + + } + + $account->devices = json_encode(array_values($devices)); + $account->save(); + + return $this->response(['success']); + } + public function updatePushNotifications(Request $request) { $account = Auth::user()->account; diff --git a/app/Http/routes.php b/app/Http/routes.php index b82309989c64..d9ea859b0019 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -356,6 +356,7 @@ Route::group(['middleware' => ['lookup:api', 'api'], 'prefix' => 'api/v1'], func Route::resource('users', 'UserApiController'); Route::resource('expenses', 'ExpenseApiController'); Route::post('add_token', 'AccountApiController@addDeviceToken'); + Route::post('remove_token', 'AccountApiController@removeDeviceToken'); Route::post('update_notifications', 'AccountApiController@updatePushNotifications'); Route::get('dashboard', 'DashboardApiController@index'); Route::resource('documents', 'DocumentAPIController');