From a1727381baa985f4496c154f7d606d9d509cb714 Mon Sep 17 00:00:00 2001 From: Peter Hoppe Date: Thu, 15 Dec 2022 23:32:34 +0100 Subject: [PATCH] qr_id route php getDog --- docs/dog-face.png | Bin 0 -> 21897 bytes docs/dog.sql | 28 +++++--- docs/options.json | 1 + docs/qr-hope-fly.png | Bin 0 -> 6209 bytes docs/qr-localhost-3000.png | Bin 0 -> 6300 bytes docs/qr-localhost.png | Bin 0 -> 6145 bytes package.json | 2 +- php/php-dog/classes/Database.php | 24 +++++++ php/php-dog/getDog.php | 69 ++++++++++++++++++++ php/php-dog/getUser.php | 18 ++++++ php/php-dog/login.php | 106 +++++++++++++++++++++++++++++++ php/php-dog/logout.php | 11 ++++ php/php-dog/register.php | 94 +++++++++++++++++++++++++++ php/php-dog/session.php | 23 +++++++ public/logo192.png | Bin 5347 -> 0 bytes public/logo512.png | Bin 9664 -> 0 bytes src/App.tsx | 2 + src/components/Dog.tsx | 13 ++++ 18 files changed, 381 insertions(+), 10 deletions(-) create mode 100644 docs/dog-face.png create mode 100644 docs/options.json create mode 100644 docs/qr-hope-fly.png create mode 100644 docs/qr-localhost-3000.png create mode 100644 docs/qr-localhost.png create mode 100644 php/php-dog/classes/Database.php create mode 100644 php/php-dog/getDog.php create mode 100644 php/php-dog/getUser.php create mode 100644 php/php-dog/login.php create mode 100644 php/php-dog/logout.php create mode 100644 php/php-dog/register.php create mode 100644 php/php-dog/session.php delete mode 100644 public/logo192.png delete mode 100644 public/logo512.png create mode 100644 src/components/Dog.tsx diff --git a/docs/dog-face.png b/docs/dog-face.png new file mode 100644 index 0000000000000000000000000000000000000000..321b51de338efdc64bfeb29c71475148eac2a35c GIT binary patch literal 21897 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 literal 0 HcmV?d00001 diff --git a/docs/dog.sql b/docs/dog.sql index c6d301b..77fda9e 100644 --- a/docs/dog.sql +++ b/docs/dog.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- Host: localhost --- Erstellungszeit: 14. Dez 2022 um 22:08 +-- Erstellungszeit: 15. Dez 2022 um 22:02 -- Server-Version: 10.4.27-MariaDB -- PHP-Version: 8.1.12 @@ -18,7 +18,7 @@ SET time_zone = "+00:00"; /*!40101 SET NAMES utf8mb4 */; -- --- Datenbank: `dog` +-- Datenbank: `k200835_dog` -- -- -------------------------------------------------------- @@ -29,13 +29,13 @@ SET time_zone = "+00:00"; CREATE TABLE `dogs` ( `id` int(11) NOT NULL, - `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `qr_id` char(31) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, - `qr_code` mediumblob NOT NULL, - `picture` mediumblob NOT NULL + `email` varchar(255) NOT NULL, + `qr_id` char(31) NOT NULL, + `name` varchar(255) NOT NULL, + `password` varchar(255) NOT NULL, + `phone` varchar(255) NOT NULL, + `qr_code` mediumblob DEFAULT NULL, + `picture` mediumblob DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -- @@ -49,6 +49,16 @@ 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 */; diff --git a/docs/options.json b/docs/options.json new file mode 100644 index 0000000..9c90a92 --- /dev/null +++ b/docs/options.json @@ -0,0 +1 @@ +{"width":200,"height":200,"data":"https://hope-fly.de/dog/m7MdMK","margin":0,"qrOptions":{"typeNumber":"0","mode":"Byte","errorCorrectionLevel":"Q"},"imageOptions":{"hideBackgroundDots":true,"imageSize":0.3,"margin":0},"dotsOptions":{"type":"square","color":"#000000"},"backgroundOptions":{"color":"#ffffff"},"image":"data:image/png;base64,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","dotsOptionsHelper":{"colorType":{"single":true,"gradient":false},"gradient":{"linear":true,"radial":false,"color1":"#6a1a4c","color2":"#6a1a4c","rotation":"0"}},"cornersSquareOptions":{"type":"extra-rounded","color":"#000000"},"cornersSquareOptionsHelper":{"colorType":{"single":true,"gradient":false},"gradient":{"linear":true,"radial":false,"color1":"#000000","color2":"#000000","rotation":"0"}},"cornersDotOptions":{"type":"","color":"#000000"},"cornersDotOptionsHelper":{"colorType":{"single":true,"gradient":false},"gradient":{"linear":true,"radial":false,"color1":"#000000","color2":"#000000","rotation":"0"}},"backgroundOptionsHelper":{"colorType":{"single":true,"gradient":false},"gradient":{"linear":true,"radial":false,"color1":"#ffffff","color2":"#ffffff","rotation":"0"}}} \ No newline at end of file diff --git a/docs/qr-hope-fly.png b/docs/qr-hope-fly.png new file mode 100644 index 0000000000000000000000000000000000000000..eec5aca76707cbec6c387192b80360714743c29c GIT binary patch literal 6209 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 RfPVrMI#>e?S>t}xe*iJQc5DCu literal 0 HcmV?d00001 diff --git a/docs/qr-localhost-3000.png b/docs/qr-localhost-3000.png new file mode 100644 index 0000000000000000000000000000000000000000..53d6368888fa6f9b2dab40f61de4c41fb64a6ce3 GIT binary patch literal 6300 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 V1yVg%B%tZjXsPRAsj7D){sqAxV!;3a literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 5af2a39..710ee60 100644 --- a/package.json +++ b/package.json @@ -41,5 +41,5 @@ "last 1 safari version" ] }, - "homepage": "http://localhost/li" + "homepage": "http://localhost/dog" } diff --git a/php/php-dog/classes/Database.php b/php/php-dog/classes/Database.php new file mode 100644 index 0000000..b686705 --- /dev/null +++ b/php/php-dog/classes/Database.php @@ -0,0 +1,24 @@ +db_host.';dbname='.$this->db_name,$this->db_username,$this->db_password); + $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + return $conn; + } + catch(PDOException $e){ + echo "Connection error ".$e->getMessage(); + exit; + } + + } +} \ No newline at end of file diff --git a/php/php-dog/getDog.php b/php/php-dog/getDog.php new file mode 100644 index 0000000..c4c85f6 --- /dev/null +++ b/php/php-dog/getDog.php @@ -0,0 +1,69 @@ + $success, + 'status' => $status, + 'message' => $message, + 'fields' => $message, + 'data' => $data + ]); +} + +$db_connection = new Database(); +$conn = $db_connection->dbConnection(); + +$data = json_decode(file_get_contents("php://input")); +$returnData = []; +$fields = ['fields' => ['qr_id']]; + +// IF REQUEST METHOD IS NOT EQUAL TO POST +if($_SERVER["REQUEST_METHOD"] != "POST") +{ + $returnData = msg(0,404,'Page Not Found!',$fields,null); +} + // CHECKING EMPTY FIELDS +elseif(!isset($data->qr_id) +|| empty(trim($data->qr_id)) +) +{ + $returnData = msg(0,422,'Please Fill in all Required Fields!',$fields, null); + +} +// IF THERE ARE NO EMPTY FIELDS THEN- +else +{ + $qr_id = trim($data->qr_id); + + try + { + + $fetch_user_by_email = "SELECT * FROM `dogs` WHERE `qr_id`=:qr_id"; + $query_stmt = $conn->prepare($fetch_user_by_email); + $query_stmt->bindValue(':qr_id', $email,PDO::PARAM_STR); + $query_stmt->execute(); + + // IF THE dog IS FOUNDED BY qr_id + if($query_stmt->rowCount()) + { + $row = $query_stmt->fetch(PDO::FETCH_ASSOC); + $returnData = msg(1,200,'get dog',$fields,$row); + } + } + catch(PDOException $e) + { + $returnData = msg(0,500,$e->getMessage(),$fields,null); + } + +} +echo json_encode($returnData); \ No newline at end of file diff --git a/php/php-dog/getUser.php b/php/php-dog/getUser.php new file mode 100644 index 0000000..3a33f5e --- /dev/null +++ b/php/php-dog/getUser.php @@ -0,0 +1,18 @@ +dbConnection(); +$auth = new Auth($conn, $allHeaders); + +echo json_encode($auth->isValid()); \ No newline at end of file diff --git a/php/php-dog/login.php b/php/php-dog/login.php new file mode 100644 index 0000000..5e3ce36 --- /dev/null +++ b/php/php-dog/login.php @@ -0,0 +1,106 @@ + $success, + 'status' => $status, + 'message' => $message + ],$extra); +} + +$db_connection = new Database(); +$conn = $db_connection->dbConnection(); + +$data = json_decode(file_get_contents("php://input")); +$returnData = []; + +// IF REQUEST METHOD IS NOT EQUAL TO POST +if($_SERVER["REQUEST_METHOD"] != "POST"): + $returnData = msg(0,404,'Page Not Found!'); + +// CHECKING EMPTY FIELDS +elseif(!isset($data->email) + || !isset($data->password) + || empty(trim($data->email)) + || empty(trim($data->password)) + ): + + $fields = ['fields' => ['email','password']]; + $returnData = msg(0,422,'Please Fill in all Required Fields!',$fields); + +// IF THERE ARE NO EMPTY FIELDS THEN- +else: + $email = trim($data->email); + $password = trim($data->password); + + // CHECKING THE EMAIL FORMAT (IF INVALID FORMAT) + if(!filter_var($email, FILTER_VALIDATE_EMAIL)): + $returnData = msg(0,422,'Invalid Email Address!'); + + // IF PASSWORD IS LESS THAN 8 THE SHOW THE ERROR + elseif(strlen($password) < 8): + $returnData = msg(0,422,'Your password must be at least 8 characters long!'); + + // THE USER IS ABLE TO PERFORM THE LOGIN ACTION + else: + try{ + + $fetch_user_by_email = "SELECT * FROM `users` WHERE `email`=:email"; + $query_stmt = $conn->prepare($fetch_user_by_email); + $query_stmt->bindValue(':email', $email,PDO::PARAM_STR); + $query_stmt->execute(); + + // IF THE USER IS FOUNDED BY EMAIL + if($query_stmt->rowCount()): + $row = $query_stmt->fetch(PDO::FETCH_ASSOC); + $check_password = password_verify($password, $row['password']); + + // VERIFYING THE PASSWORD (IS CORRECT OR NOT?) + // IF PASSWORD IS CORRECT THEN SEND THE LOGIN TOKEN + if ($check_password): + + // $jwt = new JwtHandler(); + $user = array( + 'id' => $row['id'], + 'vorname' => $row['vorname'], + 'nachname' => $row['nachname'], + 'email' => $row['email'] + ); + $_SESSION['user'] = $user; + + $returnData = [ + 'success' => 1, + 'message' => 'You have successfully logged in.', + 'user' => $user, + 'session' => $_SESSION + ]; + + // IF INVALID PASSWORD + else: + $returnData = msg(0,422,'Invalid Password!'); + endif; + + // IF THE USER IS NOT FOUNDED BY EMAIL THEN SHOW THE FOLLOWING ERROR + else: + $returnData = msg(0,422,'Invalid Email Address!'); + endif; + } + catch(PDOException $e){ + $returnData = msg(0,500,$e->getMessage()); + } + + endif; + +endif; + +echo json_encode($returnData); \ No newline at end of file diff --git a/php/php-dog/logout.php b/php/php-dog/logout.php new file mode 100644 index 0000000..db82b7b --- /dev/null +++ b/php/php-dog/logout.php @@ -0,0 +1,11 @@ + diff --git a/php/php-dog/register.php b/php/php-dog/register.php new file mode 100644 index 0000000..b7f6f37 --- /dev/null +++ b/php/php-dog/register.php @@ -0,0 +1,94 @@ +dbConnection(); + +function msg($success, $status, $message, $extra = []) +{ + return array_merge([ + 'success' => $success, + 'status' => $status, + 'message' => $message + ], $extra); +} + +// DATA FORM REQUEST +$data = json_decode(file_get_contents("php://input")); +$returnData = []; + +if ($_SERVER["REQUEST_METHOD"] != "POST") : + + $returnData = msg(0, 404, 'Page Not Found!'); + +elseif ( + !isset($data->vorname) + || !isset($data->nachname) + || !isset($data->email) + || !isset($data->password) + || empty(trim($data->vorname)) + || empty(trim($data->nachname)) + || empty(trim($data->email)) + || empty(trim($data->password)) +) : + + $fields = ['fields' => ['vorname', 'nachname', 'email', 'password']]; + $returnData = msg(0, 422, 'Please Fill in all Required Fields!', $fields); + +// IF THERE ARE NO EMPTY FIELDS THEN- +else : + + $vorname = trim($data->vorname); + $nachname = trim($data->nachname); + $email = trim($data->email); + $password = trim($data->password); + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) : + $returnData = msg(0, 422, 'Invalid Email Address!'); + + elseif (strlen($password) < 8) : + $returnData = msg(0, 422, 'Your password must be at least 8 characters long!'); + + elseif (strlen($nachname) < 3) : + $returnData = msg(0, 422, 'Your name must be at least 3 characters long!'); + + else : + try { + + $check_email = "SELECT `email` FROM `users` WHERE `email`=:email"; + $check_email_stmt = $conn->prepare($check_email); + $check_email_stmt->bindValue(':email', $email, PDO::PARAM_STR); + $check_email_stmt->execute(); + + if ($check_email_stmt->rowCount()) : + $returnData = msg(0, 422, 'This E-mail already in use!'); + + else : + $insert_query = "INSERT INTO `users`(`vorname`,`nachname`,`email`,`password`) VALUES(:vorname,:nachname,:email,:password)"; + + $insert_stmt = $conn->prepare($insert_query); + + // DATA BINDING + $insert_stmt->bindValue(':vorname', htmlspecialchars(strip_tags($vorname)), PDO::PARAM_STR); + $insert_stmt->bindValue(':nachname', htmlspecialchars(strip_tags($nachname)), PDO::PARAM_STR); + $insert_stmt->bindValue(':email', $email, PDO::PARAM_STR); + $insert_stmt->bindValue(':password', password_hash($password, PASSWORD_DEFAULT), PDO::PARAM_STR); + + $insert_stmt->execute(); + + $returnData = msg(1, 201, 'You have successfully registered.'); + + endif; + } catch (PDOException $e) { + $returnData = msg(0, 500, $e->getMessage()); + } + endif; +endif; + +echo json_encode($returnData); \ No newline at end of file diff --git a/php/php-dog/session.php b/php/php-dog/session.php new file mode 100644 index 0000000..9d7ecde --- /dev/null +++ b/php/php-dog/session.php @@ -0,0 +1,23 @@ + 0, + "user" => null +]; + +if (isset($_SESSION['user'])) { + $return = + [ + "success" => 1, + "user" => $_SESSION['user'] + ]; +} +echo json_encode($return); +?> \ No newline at end of file diff --git a/public/logo192.png b/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/src/App.tsx b/src/App.tsx index 78b45b5..c11dbd8 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,6 +5,7 @@ import "./App.css"; import Login from './components/Login'; import Register from './components/Register'; import Home from './components/Home'; +import Dog from './components/Dog'; type UserT = { @@ -28,6 +29,7 @@ function App() { user && } /> } {user && ( <> + } /> } /> } /> diff --git a/src/components/Dog.tsx b/src/components/Dog.tsx new file mode 100644 index 0000000..6b95f1f --- /dev/null +++ b/src/components/Dog.tsx @@ -0,0 +1,13 @@ +import React from 'react' +import { useParams } from "react-router-dom"; + +export default function Dog() +{ + const params = useParams(); + return ( +
+

Dog

+

{Object.keys(params)[0]}: {Object.values(params)[0]}

+
+ ) +} \ No newline at end of file