prolif löschen

This commit is contained in:
2023-03-02 22:02:38 +01:00
parent 5c7f9b3b03
commit c3e5b151b0
5 changed files with 76 additions and 13 deletions

View File

@ -179,5 +179,15 @@ function getDogByQrId($qr_id, $conn, $fields = null)
} }
return $returnData; return $returnData;
} }
function deleteDir($dir)
{
foreach(glob($dir . '/*') as $file)
{
if(!is_dir($file))
{
unlink($file);
}
}
return rmdir($dir);
}
?> ?>

View File

@ -18,7 +18,7 @@ require __DIR__.'/classes/lib.php';
$db_connection = new Database(); $db_connection = new Database();
$conn = $db_connection->dbConnection(); $conn = $db_connection->dbConnection();
//var_dump($_POST); $data = json_decode(file_get_contents("php://input"));
//IF REQUEST METHOD IS NOT EQUAL TO POST //IF REQUEST METHOD IS NOT EQUAL TO POST
if($_SERVER["REQUEST_METHOD"] != "POST") if($_SERVER["REQUEST_METHOD"] != "POST")
@ -28,27 +28,45 @@ if($_SERVER["REQUEST_METHOD"] != "POST")
return; return;
} }
$returnData = new CMsg(0);
if( if(
!isset($_POST['qr_id']) !isset($data->qr_id)
|| !isset($_POST['qr_id']) || !isset($data->qr_id)
) )
{ {
$fields = ['fields' => ['qr_id']]; $fields = ['fields' => ['qr_id']];
$returnData = new CMsg(0, 422, 'Please Fill in all Required Fields!', $fields); $returnData = new CMsg(0, 422, 'Please Fill in all Required Fields!', $fields);
echo $returnData->jsonarray();
return;
} }
else else
{ {
try try
{ {
$qr_id = $data->qr_id;
$stmt = $conn->prepare("DELETE FROM `dogs` WHERE `qr_id`=?"); $stmt = $conn->prepare("DELETE FROM `dogs` WHERE `qr_id`=?");
$stmt->execute([$qr_id]); $stmt->execute([$qr_id]);
if($stmt->rowCount()) if($stmt->rowCount())
{ {
// delete upload dir if(deleteDir('../uploads/' . $qr_id))
{
$returnData = new CMsg(1, 200, 'Profile deleted!');
}
else
{
$returnData = new CMsg(0, 500, 'Can\'t delete Directory: '.
'../uploads/' . $qr_id);
}
} }
else
{
$returnData = new CMsg(0, 500, 'Can\'t delete Profil in Database');
}
}
catch(PDOException $e)
{
$returnData = new CMsg(0,500,"deleteProfil ".$e->getMessage());
} }
} }
echo $returnData->jsonarray();
return;

View File

@ -87,7 +87,7 @@ const App: React.FC = () =>
padding={0} padding={0}
fixed fixed
navbarOffsetBreakpoint="sm" navbarOffsetBreakpoint="sm"
navbar={<DogNavbar hidden={!opened} hasUser={user ? true : false} onLogout={userLogout}/>} navbar={<DogNavbar qr_id={user ? user.qr_id : null} hidden={!opened} hasUser={user ? true : false} onLogout={userLogout}/>}
header={ header={
<Header height={'44px'} p="md" className='w-16 bg-orange-500'> <Header height={'44px'} p="md" className='w-16 bg-orange-500'>

View File

@ -4,6 +4,9 @@ import React, { useState } from 'react'
import { Link } from 'react-router-dom' import { Link } from 'react-router-dom'
import { ModalsProvider, openConfirmModal } from '@mantine/modals'; import { ModalsProvider, openConfirmModal } from '@mantine/modals';
import './DogNavbar.css'; import './DogNavbar.css';
import { deleteProfil } from '../services/PhpApi';
import { notificationError, notificationSuccess } from '../services/Notifications';
import { ResponseT } from '../context/UserContext';
const NaveBarIcon = ({ icon, href, text = 'tooltip 💡'}: {icon: JSX.Element, href: string, text: string}) => const NaveBarIcon = ({ icon, href, text = 'tooltip 💡'}: {icon: JSX.Element, href: string, text: string}) =>
( (
@ -20,7 +23,7 @@ const NaveBarIcon = ({ icon, href, text = 'tooltip 💡'}: {icon: JSX.Element, h
const Divider = () => <hr className="sidebar-hr" />; const Divider = () => <hr className="sidebar-hr" />;
const openDeleteModal = () => const openDeleteModal = (qr_id: string | null) =>
openConfirmModal({ openConfirmModal({
title: 'Account löschen!', title: 'Account löschen!',
centered: true, centered: true,
@ -32,10 +35,27 @@ const openDeleteModal = () =>
), ),
labels: { confirm: 'Account löschen', cancel: "Behalten, nicht löschen" }, labels: { confirm: 'Account löschen', cancel: "Behalten, nicht löschen" },
onCancel: () => console.log('Cancel'), onCancel: () => console.log('Cancel'),
onConfirm: () => console.log('Confirmed') onConfirm: () =>
{
console.log('Confirmed');
if(qr_id)
{
const data = deleteProfil({qr_id: qr_id}) as ResponseT;
if(data.success)
{
notificationSuccess('Profil gelöscht!');
}
else if(!data.success && data.message)
{
notificationError(data.message);
}
window.location.href = '/dog/';
}
}
}); });
function DogNavbar({hasUser, hidden, onLogout}:{hasUser: boolean, hidden: boolean, onLogout: () => void}) function DogNavbar({hasUser, qr_id, hidden, onLogout}:
{hasUser: boolean, qr_id: string | null, hidden: boolean, onLogout: () => void})
{ {
return ( return (
<> <>
@ -79,7 +99,7 @@ function DogNavbar({hasUser, hidden, onLogout}:{hasUser: boolean, hidden: boolea
<Divider/> <Divider/>
<Navbar.Section className='InputForm' > <Navbar.Section className='InputForm' >
{hasUser && {hasUser &&
<div onClick={openDeleteModal}> <div onClick={() => openDeleteModal(qr_id)}>
<NaveBarIcon icon={<Icons.UserMinus size={32}/>} href={''} text={'Account löschen'}/> <NaveBarIcon icon={<Icons.UserMinus size={32}/>} href={''} text={'Account löschen'}/>
</div> </div>
} }

View File

@ -299,6 +299,21 @@ export const wantNewPw = async ({email}:{email: string}) =>
} }
} }
export const deleteProfil = async ({qr_id}:{qr_id: string}) =>
{
try
{
const {data} = await Axios.post('deleteProfil.php', {qr_id});
console.log('Api deleteProfil');
console.log(data);
return data;
}
catch(err)
{
return {success:0, message:'Password Request Server Error!'};
}
}
// export const sleep = (ms: number) => // export const sleep = (ms: number) =>
// { // {