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
This commit is contained in:
David Bomba 2017-11-09 21:21:08 +11:00 committed by GitHub
parent 51a16de01b
commit 7934707b9b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 3 deletions

View File

@ -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;

View File

@ -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');