in blade
<button class="btn-xs btn-info grant_access" data-options='{"user_id":"{{ $user->id }}", "action": "remove", "role_id" : {{ $role_id }}, "_token": "{{ Session::token() }}" }'>Has Access<h;/button> <script> $('.grant_access').click(function(){ var options = $(this).data( "options"); var sel = $(this); //console.log(options); $.ajax({ method: 'post', url: '/pat-admin-access', data: options, dataType: 'JSON', }).done( function( response ) { //console.log(response); if (response['result']) { sel.addClass((response['action'] == 'grant')? 'btn-info' : 'btn-warning'); sel.removeClass((response['action'] == 'grant')? 'btn-warning' : 'btn-info'); sel.text((response['action'] == 'grant') ? "Has Access" : "Grant Access"); sel.data('options').action = (response['action'] == 'grant') ? 'remove' : 'grant'; } else { sel.text('There was problem'); } }); }); </script>
in route
Route::post('/pat-admin-access/', [ 'middleware' => 'AppControl:pat-admin-access', 'redirect' => 'request_access', 'uses' => 'PatController@updateUserForAdminControl' ]) ->name('pat-admin-access') ;
in controller
public function updateUserForAdminControl(Request $request) { // $data = $request->only('action', 'user_id', 'role_id'); $data = $request->all(); if ($data['action'] == 'grant') { \DB::table('role_users')->insert([ 'user_id' => $data['user_id'], 'role_id' => $data['role_id'] ]); } else if ($data['action'] == 'remove') { \DB::table('role_users') ->where('user_id', '=', $data['user_id']) ->where('role_id', '=', $data['role_id']) ->delete(); } return $response = ['action'=>$data['action'], 'msg'=>'success', 'result' => true]; }