prolif löschen
This commit is contained in:
@ -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);
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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'>
|
||||||
|
|||||||
@ -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>
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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) =>
|
||||||
// {
|
// {
|
||||||
|
|||||||
Reference in New Issue
Block a user