From f2fa8e46e9f11571256e7f8849d23b62f335b5ff Mon Sep 17 00:00:00 2001 From: Peter Hoppe Date: Tue, 28 Feb 2023 23:46:33 +0100 Subject: [PATCH] =?UTF-8?q?passwort=20=C3=A4ndern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dog.sql | 66 --------------- docs/dogs.sql | 76 ----------------- docs/k200835_dog.sql | 132 ++++++++++++++++++++++++++++++ php/php-dog/passwordReset.php | 5 ++ src/App.tsx | 2 + src/components/DogNavbar.tsx | 5 ++ src/components/PasswordChange.tsx | 105 ++++++++++++++++++++++++ src/components/PreviewUpload.tsx | 2 +- 8 files changed, 250 insertions(+), 143 deletions(-) delete mode 100644 docs/dog.sql delete mode 100644 docs/dogs.sql create mode 100644 docs/k200835_dog.sql create mode 100644 src/components/PasswordChange.tsx diff --git a/docs/dog.sql b/docs/dog.sql deleted file mode 100644 index 3654740..0000000 --- a/docs/dog.sql +++ /dev/null @@ -1,66 +0,0 @@ --- phpMyAdmin SQL Dump --- version 5.2.0 --- https://www.phpmyadmin.net/ --- --- Host: localhost --- Erstellungszeit: 17. Dez 2022 um 00:33 --- Server-Version: 10.4.27-MariaDB --- PHP-Version: 8.1.12 - -SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; -START TRANSACTION; -SET time_zone = "+00:00"; - - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; - --- --- Datenbank: `k200835_dog` --- - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `dogs` --- - -CREATE TABLE `dogs` ( - `id` int(11) NOT NULL, - `email` varchar(255) NOT NULL, - `qr_id` char(31) NOT NULL, - `name` varchar(255) NOT NULL DEFAULT '', - `password` varchar(255) NOT NULL, - `phone` varchar(255) NOT NULL DEFAULT '', - `qr_code` varchar(255) DEFAULT NULL, - `picture` varchar(255) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - --- --- Indizes der exportierten Tabellen --- - --- --- Indizes für die Tabelle `dogs` --- -ALTER TABLE `dogs` - ADD PRIMARY KEY (`id`), - ADD UNIQUE KEY `index_qr_id` (`qr_id`), - ADD UNIQUE KEY `index_email` (`email`); - --- --- AUTO_INCREMENT für exportierte Tabellen --- - --- --- AUTO_INCREMENT für Tabelle `dogs` --- -ALTER TABLE `dogs` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; -COMMIT; - -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/docs/dogs.sql b/docs/dogs.sql deleted file mode 100644 index ddff612..0000000 --- a/docs/dogs.sql +++ /dev/null @@ -1,76 +0,0 @@ --- phpMyAdmin SQL Dump --- version 5.1.3 --- https://www.phpmyadmin.net/ --- --- Host: 10.35.232.188:3306 --- Erstellungszeit: 29. Dez 2022 um 20:55 --- Server-Version: 8.0.31 --- PHP-Version: 7.4.32 - -SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; -START TRANSACTION; -SET time_zone = "+00:00"; - - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; - --- --- Datenbank: `k200835_dog` --- - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `dogs` --- - -CREATE TABLE `dogs` ( - `id` int NOT NULL, - `email` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, - `qr_id` char(31) COLLATE utf8mb3_unicode_ci NOT NULL, - `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', - `password` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, - `phone` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', - `qr_code` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, - `picture` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; - --- --- Daten für Tabelle `dogs` --- - -INSERT INTO `dogs` (`id`, `email`, `qr_id`, `name`, `password`, `phone`, `qr_code`, `picture`) VALUES -(4, 'a@q.q', 'r0hhpZ', 'ddddd', '$2y$10$kQWHhEr9m3w5BfqRMN0WauUBI.OaRR86X8lssTlOX5UnMOTdqEKOa', '', NULL, NULL), -(5, 'conny.rankl@web.de', 'm7MdMK', 'Melly', '$2y$10$2WscecdKZv73sl2E1cdg5OKNGpfDzSRyrQeu8ebZIgIiLexztgbHa', '+49 171 7328974', '/m7MdMK/7a0LA4ZlWVXYhPArDRU8.png', '/m7MdMK/eywPirFAyg9jSIvoK4KZ.jpg'), -(11, 'p.para@gmx.de', 'YQiwEB', 'Conny', '$2y$10$/W.2pZLhhxoW7j6M5KcXJ.HWDJBc98fpapTaWm9hxKXYfA5YZiinK', '+49 179 5035966', '/YQiwEB/PbygxRtUBkhQrekdIdER.png', '/YQiwEB/8w0iUcSKM0bvSmC8i6cL.png'), -(12, 'eva-maria-cat@web.de', '17dg43', 'Bonny', '$2y$10$AsTXWioe5pyMNqAPN8DoJuovIkkfZkYci2Z5VG3a9uf545jbCqUta', '+49 171 7923900', '/17dg43/0GH7skrnnzBYUDuIIybR.png', '/17dg43/GmFlF0nh7GU02wNuIFcX.jpg'); - --- --- Indizes der exportierten Tabellen --- - --- --- Indizes für die Tabelle `dogs` --- -ALTER TABLE `dogs` - ADD PRIMARY KEY (`id`), - ADD UNIQUE KEY `index_qr_id` (`qr_id`), - ADD UNIQUE KEY `index_email` (`email`); - --- --- AUTO_INCREMENT für exportierte Tabellen --- - --- --- AUTO_INCREMENT für Tabelle `dogs` --- -ALTER TABLE `dogs` - MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13; -COMMIT; - -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/docs/k200835_dog.sql b/docs/k200835_dog.sql new file mode 100644 index 0000000..d054103 --- /dev/null +++ b/docs/k200835_dog.sql @@ -0,0 +1,132 @@ +-- phpMyAdmin SQL Dump +-- version 5.1.3 +-- https://www.phpmyadmin.net/ +-- +-- Host: 10.35.232.188:3306 +-- Erstellungszeit: 28. Feb 2023 um 23:17 +-- Server-Version: 8.0.32 +-- PHP-Version: 7.4.33 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Datenbank: `k200835_dog` +-- + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `contact_emails` +-- + +CREATE TABLE `contact_emails` ( + `id` int NOT NULL, + `dogs_id` int NOT NULL, + `from_email` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL, + `msg` varchar(1023) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- +-- Daten für Tabelle `contact_emails` +-- + +INSERT INTO `contact_emails` (`id`, `dogs_id`, `from_email`, `msg`, `created`) VALUES +(20, 14, 'p.hoppe@gmx.de', 'Jo josef', '2023-02-10 00:23:16'), +(21, 11, 'x@hope-para.de', 'sdsdsdsdsd', '2023-02-20 14:39:52'), +(22, 4, 'p.hoppe@gmx.de', 'sssss', '2023-02-27 11:46:56'); + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `dogs` +-- + +CREATE TABLE `dogs` ( + `id` int NOT NULL, + `email` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `qr_id` char(31) COLLATE utf8mb3_unicode_ci NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `password` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `phone` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `qr_width_cm` decimal(5,3) NOT NULL DEFAULT '2.400', + `qr_height_cm` decimal(5,3) NOT NULL DEFAULT '3.700', + `qr_fontsize` smallint NOT NULL DEFAULT '100', + `qr_visible_items` tinyint NOT NULL DEFAULT '7', + `qr_item_sequence` smallint NOT NULL DEFAULT '123', + `qr_code` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `picture` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pwtoken` varchar(31) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, + `pwt_time` datetime DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; + +-- +-- Daten für Tabelle `dogs` +-- + +INSERT INTO `dogs` (`id`, `email`, `qr_id`, `name`, `password`, `phone`, `qr_width_cm`, `qr_height_cm`, `qr_fontsize`, `qr_visible_items`, `qr_item_sequence`, `qr_code`, `picture`, `pwtoken`, `pwt_time`) VALUES +(4, 'a@q.q', 'r0hhpZ', 'dddddaa', '$2y$10$kQWHhEr9m3w5BfqRMN0WauUBI.OaRR86X8lssTlOX5UnMOTdqEKOa', '8888888888', '2.400', '3.700', 110, 7, 123, '/r0hhpZ/TvkmuvJPiot9VFI8vVkm.png', '/r0hhpZ/29tpdCSammHXrCKrBxyQ.png', NULL, NULL), +(5, 'conny.rankl@web.de', 'm7MdMK', 'Melly', '$2y$10$2WscecdKZv73sl2E1cdg5OKNGpfDzSRyrQeu8ebZIgIiLexztgbHa', '+49 171 7328974', '2.400', '3.700', 100, 7, 123, '/m7MdMK/A8fd7A4eKBizfwmcKWDZ.png', '/m7MdMK/45kijmZnCxA3SokB1Z8a.jpg', NULL, NULL), +(11, 'p.para@gmx.de', 'YQiwEB', 'Conny', '$2y$10$U5DXObAjyf5TxqVUMGT2euw7v7t2uNCWswSRUUQ6l3oq9Vk44tARe', '+49 179 5035966', '2.400', '3.700', 100, 7, 123, '/YQiwEB/Fi3eVHjUW8grFDh2O1ZV.png', '/YQiwEB/8w0iUcSKM0bvSmC8i6cL.png', NULL, NULL), +(12, 'eva-maria-cat@web.de', '17dg43', 'Bonny', '$2y$10$AsTXWioe5pyMNqAPN8DoJuovIkkfZkYci2Z5VG3a9uf545jbCqUta', '+49 171 7923900', '2.400', '3.700', 100, 7, 123, '/17dg43/0GH7skrnnzBYUDuIIybR.png', '/17dg43/GmFlF0nh7GU02wNuIFcX.jpg', NULL, NULL), +(14, 'x@hope-para.de', 'D4O1aH', 'Josef', '$2y$10$g0FbTtmjX/sK3Uj1owXDrO2vIsYfcVW/bq8EIPfkS9nEd8lZY8fG2', '0123 456789', '2.400', '3.700', 100, 7, 123, '/D4O1aH/Pky1kjndY4rUhU6ZXxvU.png', '/D4O1aH/gW06nnKfS1vlOkxIPxES.png', NULL, NULL), +(15, 'p.hoppe@gmx.de', '4ZYMvA', 'Robert', '$2y$10$Obiy2keQLxA04iFZpiL2fOawbCUQS6Cj9NnHy/GnVdpLbny6zyBli', '89898989', '2.400', '3.700', 100, 7, 123, '/4ZYMvA/s0I5nhHNQJA09BRvXXZO.png', '/4ZYMvA/fidQuIifNGGhVJGfFkqG.jpg', NULL, NULL); + +-- +-- Indizes der exportierten Tabellen +-- + +-- +-- Indizes für die Tabelle `contact_emails` +-- +ALTER TABLE `contact_emails` + ADD PRIMARY KEY (`id`), + ADD KEY `FK_dogs_id` (`dogs_id`); + +-- +-- Indizes für die Tabelle `dogs` +-- +ALTER TABLE `dogs` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `index_qr_id` (`qr_id`), + ADD UNIQUE KEY `index_email` (`email`), + ADD UNIQUE KEY `ui_pwtoken` (`pwtoken`); + +-- +-- AUTO_INCREMENT für exportierte Tabellen +-- + +-- +-- AUTO_INCREMENT für Tabelle `contact_emails` +-- +ALTER TABLE `contact_emails` + MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=23; + +-- +-- AUTO_INCREMENT für Tabelle `dogs` +-- +ALTER TABLE `dogs` + MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16; + +-- +-- Constraints der exportierten Tabellen +-- + +-- +-- Constraints der Tabelle `contact_emails` +-- +ALTER TABLE `contact_emails` + ADD CONSTRAINT `FK_dogs_id` FOREIGN KEY (`dogs_id`) REFERENCES `dogs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/php/php-dog/passwordReset.php b/php/php-dog/passwordReset.php index 3de1442..d0323e5 100644 --- a/php/php-dog/passwordReset.php +++ b/php/php-dog/passwordReset.php @@ -1,4 +1,9 @@ { @@ -118,6 +119,7 @@ const App: React.FC = () => } /> } /> {user && } />} + {user && } />} {user && } />} diff --git a/src/components/DogNavbar.tsx b/src/components/DogNavbar.tsx index 5dbb176..be6bd21 100644 --- a/src/components/DogNavbar.tsx +++ b/src/components/DogNavbar.tsx @@ -64,6 +64,11 @@ function DogNavbar({hasUser, hidden, onLogout}:{hasUser: boolean, hidden: boolea } href={'/qr'} text={'QrCode drucken'} /> } + + {hasUser && + } href={'/chngpw'} text={'Passwort ändern'} /> + } + {hasUser &&
{onLogout()}}> diff --git a/src/components/PasswordChange.tsx b/src/components/PasswordChange.tsx new file mode 100644 index 0000000..eaa628b --- /dev/null +++ b/src/components/PasswordChange.tsx @@ -0,0 +1,105 @@ +import React, { useState } from 'react'; +import { Link } from 'react-router-dom'; +import { passwordReset, getUser } from '../services/PhpApi'; +import useSWR from 'swr'; +import './InputForm.css'; +import { notificationError, notificationSuccess } from '../services/Notifications'; +import { PasswordInput } from '@mantine/core'; + +export default function PasswordChange() +{ + const [formData, setFormData] = useState({ + password1:'', + password2:'' + }); + + const { data, error, isLoading } = useSWR('pwchange', getUser); + if (error) return (
failed to load
); + if (isLoading) return (
loading...
); + + const onChangeInput = (e: React.FormEvent ) => { + setFormData({ + ...formData, + [e.currentTarget.name]:e.currentTarget.value + }) + + //console.log(e.currentTarget.value); + } + + if(!data.success) + { + notificationError('Kein Benutzer?!'); + } + + const submitForm = async (e: React.FormEvent) => + { + e.preventDefault(); + + if(!Object.values(formData).every(val => val.trim() !== '')) + { + notificationError('Bitte alle Felder ausfüllen!'); + return; + } + + if(formData.password1 !== formData.password2) + { + notificationError('Bitte 2mal das gleiche Passwort eingeben!'); + return; + } + + const sendData = new FormData(); + const values = Object.values(formData); + const keys = Object.keys(formData); + + for (const key of keys) + { + const index = keys.indexOf(key); + sendData.append(key, values[index]); + } + + sendData.append('id', data.data.id); + + const dataRes = await passwordReset(sendData); + if(dataRes.success) + { + notificationSuccess('Erfolgreich Passwort geändert!'); + e.currentTarget?.reset(); + } + else if(!dataRes.success && dataRes.message) + { + notificationError(dataRes.message); + } + } + + return ( +
+

Passwort ändern!

+
+
+
+ + + +
Login
+ +
+
+
+ ) +} diff --git a/src/components/PreviewUpload.tsx b/src/components/PreviewUpload.tsx index dd4d427..ce82e3b 100644 --- a/src/components/PreviewUpload.tsx +++ b/src/components/PreviewUpload.tsx @@ -58,7 +58,7 @@ function PreviewUpload({chgFile}:{chgFile: any}) // return ( <> ); return (
-