new to laravel and Jason. i have this project at hand and i have to give the user the option to delete their account.
now i succeed in deleting the user from the database but there is another issue now.
the issue is. i register. and then i delete my account. but when i try to log in. it says the account exists. but the account no longer exists in the database. but when i tried logging in, it just logged me in and created a new id and username for the user in the database. i tested this on multiple devices, pages, and even after days of deleting the account and they are all like that. (it worked perfectly fine before adding the user delete option)
i thought it might be cookies but even when deleting the cookies it didn't work. someone suggested that there might be a secondary database but i didn't find anything. (note: i noticed the update user info section and the URL is using firebase-auth. i tried searching for how to do that but i didn't find anything so i don't know how to delete the user using auth in laravel using ajax)
for testing, i removed the section of the code where it logs you out after deleting the account and in the console, i still get the user id which is weird. i have also updated the js code too. in the console i get the: the user's id "response it worked"
and in the network, I'm not getting anything worth mentioning.
I'm also not getting anything in the console from logging in
edit: Thanks to Frank van Puffelen who answered i was able to solve this issue. this is how i used it in my code in case someone wanted to know
i just put this code right before the ajaxssetup function when deleting the user
const user=firebase.auth().currentUser;
user.delete().then(()=>{
console.log("account deleted succssfully");
}).catch((error) =>{
console.log(error);
});
this is what the codes look like
public\assets\js\common.js
//this is the login and register code
const firebaseConfig = {
apiKey: fireapiKey,
authDomain: authDomain,
projectId: projectId,
storageBucket: storageBucket,
messagingSenderId: messagingSenderId,
appId: appId,
measurementId: measurementId
};
firebase.initializeApp(firebaseConfig);
firebase.analytics();
$("#loginWithEmail").on("submit", function (event) {
event.preventDefault();
var loginbtn45 = document.getElementById("loginWithEmailBtn");
loginbtn45.textContent = `${localLOGGINGINPLEASEWAIT}`
firebase.auth().signInWithEmailAndPassword($('#inputEmail').val(), $('#inputPassword').val()).then(function (response) {
console.log(response);
$(".loader").show();
loginbtn45.textContent = `${localLOGIN}`
if (response.user.emailVerified == true) {
$.ajax({
type: "POST",
dataType: 'json',
data: {
"_token": "{{ csrf_token() }}",
'identity': $('#inputEmail').val(),
'firstname': "D",
'email': $('#inputEmail').val(),
'lastname': null,
'login_type': "fireBaseLogin",
'device_type': 3,
'device_token': "nothing"
},
headers: {
'apikey': 123
},
url: `${baseUrl}register`,
success: function (data) {
$('.signOutModal').modal('hide');
iziToast.success({
timeout: 2000,
title: `${locallOGINsuccessfully}`,
position: "topRight"
})
localStorage.setItem('userObject', JSON.stringify(data.data));
$(".loader").hide();
},
error: function (data) {
$(".loader").hide();
console.log(data);
}
});
} else {
$(".loader").hide();
iziToast.error({
icon: 'fas fa-times-circle',
message: `${localVerifyYourEmail}`,
position: "topRight"
});
}
})
.catch(function (error) {
console.log(error);
$(".loader").hide();
loginbtn45.textContent = `${localLOGIN}`
iziToast.error({
icon: 'fas fa-times-circle',
message: error.code,
position: "topRight"
});
})
});
//------------
$("#registerForm").on("submit", function (event) {
event.preventDefault();
var fullname = $("#fullname").val();
var email = $("#email").val();
var password = $("#password").val();
var confirmPassword = $("#confirmPassword").val();
if (password.length < 6) {
iziToast.error({
icon: 'fas fa-times-circle',
message: `${localPasswordLength}`,
position: "topRight"
});
} else {
if (password != confirmPassword) {
iziToast.error({
icon: 'fas fa-times-circle',
message: `${localPasswordNotMatch}`,
position: "topRight"
});
} else {
$(".loader").show();
$('#registerUser').text(`${localREGISTERINGPLEASEWAIT}`)
firebase.auth().createUserWithEmailAndPassword(email, password).then(function (response) {
sendingVerifyEmail();
console.log(response);
$('#registerUser').text(`${localREGISTERED}`)
$.ajax({
type: "POST",
dataType: 'json',
data: {
'identity': email,
'firstname': fullname,
'email': email,
'lastname': null,
'login_type': "firebasLogin",
'device_type': 3,
'device_token': "nothing"
},
headers: {
'apikey': 123
},
url: `${baseUrl}firebaseRegister`,
success: function (data) {
console.log(data);
$(".loader").hide();
iziToast.success({
timeout: 2000,
title: `${localRegistersuccessfully}`,
position: "topRight"
})
$('#registerForm')[0].reset();
},
error: function (data) {
$(".loader").hide();
console.log(data);
}
});
})
.catch(function (error) {
$(".loader").hide();
console.log(error);
$('#registerUser').text(`${localREGISTERED}`)
if (error.code == "auth/email-already-in-use") {
iziToast.error({
icon: 'fas fa-times-circle',
message: `${localUserAllreadyExist}`,
position: "topRight"
});
} else {
iziToast.error({
icon: 'fas fa-times-circle',
message: `${localEnterValideEmail}`,
position: "topRight"
});
}
})
function sendingVerifyEmail() {
firebase.auth().currentUser.sendEmailVerification().then(function (response) {
$('#registerUser').text(`${localREGISTERED}`)
console.log(response);
})
.catch(function (error) {
console.log(error);
$('#registerUser').text(`${localREGISTERED}`)
})
}
}
}
});
$(".delteuserbtn").on('click', function (e1){
e1.preventDefault();
$('.deltetemodal').modal('show');
$(".delteuserbtnyes").on('click', function (e2){
e2.preventDefault();
var theuser = localStorage.getItem('userObject');
if(theuser != null){
theuser = JSON.parse(theuser);
userid=theuser.id;
}
console.log(userid);
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: "DELETE",
url: "deleteAccount/" userid,
dataType: "JSON",
success: function (response){
console.log('response it worked');
$(".deltetemodal").modal('hide');
$(".updateProfileModal").modal('hide');
localStorage.removeItem("userObject");
$('.userName').text("")
$('.useremail').text("")
$(".usersideImage").attr('src',"")
$('.signInRemove').removeClass('d-none');
$(".userLoginDiv").css("display", "none");
iziToast.success({timeout: 2000, title: localAccDeletedSuccess,position: "topRight"})
window.location.href = `${appUrl}`;
},
error: function(xhr) {
console.log(xhr.responseText); // this line will save you tons of hours while debugging
// do something here because of error
}
});
});
$(".delteuserno").on('click', function (e){
$(".deltetemodal").modal('hide');
$(".updateProfileModal").modal('hide');
});
});
$("#updateform").on('submit',function(event) {
event.preventDefault();
$(".loader").show();
var updatedata = localStorage.getItem('userObject');
updatedata = JSON.parse(updatedata);
var formdata = new FormData($("#updateform")[0]);
formdata.append('id',updatedata.id);
console.log(formdata);
$.ajax({
url: `${baseUrl}updateProfile`,
type: 'POST',
beforeSend: function(xhr) {
xhr.setRequestHeader('apikey',apikey);
xhr.setRequestHeader('userId',updatedata.id);
},
data: formdata,
dataType: "json",
contentType: false,
cache: false,
processData: false,
success: function(response) {
console.log(response)
$(".loader").hide();
iziToast.success({timeout: 2000, title: `${localUpdateSuccessfull}`,position: "topRight"})
localStorage.setItem('userObject',JSON.stringify(response.data));
$image = `${fimageUrl}${response.data.image}` ;
$(".usersideImage").attr('src',$image)
$('.userName').text(response.data.firstname)
$('.useremail').text(response.data.email)
$('.updateProfileModal').modal('hide');
},
error: function(err) { console.log(JSON.stringify(err)); }
});
});
routes/web.php
<?php
use App\Http\Controllers\ViewController;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Route;
Route::delete('deleteAccount/{id}' , [App\Http\Controllers\UserController::class, 'destroy']) ->name('destroy');
http/Controller/userController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
class UserController extends Controller {
public function destroy($id){
/* $user = users::find($id);
$user ->delete(); */
DB::table('users')->where('id', $id)->delete();
return response()->json([
'status' =>200,
'message'=>'Account Deleted Successfully',
]);
/* $directory=storage_path('framework/views');
$files=\File::allFiles($directory);
\File::delete($files); */
}
}
CodePudding user response:
As far as I can see, you do two things when you create a user:
- You create the user in Firebase Authentication, by calling
createUserWithEmailAndPassword
. - You create a record for the user in your database.
But when you delete the user, you only delete them from the database. So that means the user can indeed still log in with Firebase Authentication, since you didn't delete it from there
To also delete the user from Firebase Authentication, call delete
on their profile as shown in the documentation on deleting the current user.