diff --git a/.gitignore b/.gitignore index b1a2ad1..49adb33 100644 --- a/.gitignore +++ b/.gitignore @@ -117,7 +117,7 @@ Temporary Items # *.pdf ## Generated if empty string is given at "Please type another file name for output:" -projectplan.pdf +projectplan/projectplan.pdf ## Bibliography auxiliary files (bibtex/biblatex/biber): *.bbl diff --git a/projectplan/projectplan.pdf b/projectplan/projectplan.pdf deleted file mode 100644 index e41b19d..0000000 Binary files a/projectplan/projectplan.pdf and /dev/null differ diff --git a/projectplan/projectplan.tex b/projectplan/projectplan.tex index 42c6475..bcd0fce 100644 --- a/projectplan/projectplan.tex +++ b/projectplan/projectplan.tex @@ -14,6 +14,9 @@ \documentclass{uva-inf-article} \usepackage[dutch]{babel} \usepackage{enumitem} +\usepackage{pgfgantt} +\usepackage{pdflscape} +\usepackage{geometry} %------------------------------------------------------------------------------- % GEGEVENS VOOR IN DE TITEL @@ -173,6 +176,83 @@ Voor deze opdracht hebben we met 5 mensen 4 weken de tijd. %Zet de planning indien gewenst in een apart document %\input{planning} +\newgeometry{top=20mm, bottom=20mm, left=10mm, right=10mm} +\begin{landscape} +\section{Planning} +\begin{ganttchart}[ + vgrid, + hgrid, + x unit=1cm, + y unit title=.6cm, + y unit chart=.7cm, + group left peak width=.2, + group right peak width=.2 + ]{1}{21} + \gantttitle{MyHyvesBook+}{21} \ganttnewline + \gantttitle{Week 1}{5} + \gantttitle{Week 2}{5} + \gantttitle{Week 3}{5} + \gantttitle{Week 4}{5} \ganttnewline + \gantttitlelist{9,...,13}{1} + \gantttitlelist{16,...,20}{1} + \gantttitlelist{23,...,27}{1} + \gantttitlelist{30,31,1,2,3}{1} \ganttnewline + + \ganttbar{Inleiden}{1}{1} \ganttnewline + + \ganttlinkedgroup{Frontend}{2}{5} \ganttnewline + + \ganttbar{html/views}{2}{5} \ganttnewline + \ganttbar{css/styles}{2}{5} \ganttnewline + \ganttbar{javascript}{2}{5} \ganttnewline + \ganttmilestone{Week 1}{5} \ganttnewline + + \ganttlink[link mid=.833]{elem2}{elem5} + \ganttlink[link mid=.75]{elem3}{elem5} + \ganttlink[link mid=.5]{elem4}{elem5} + + \ganttlinkedgroup{Backend}{6}{10} \ganttnewline + + \ganttbar{Database/PhpMyAdmin}{6}{6} \ganttnewline + \ganttbar{SQL-queries/MySql}{7}{10} \ganttnewline + \ganttbar{Forms/php}{6}{10} \ganttnewline + \ganttbar{Livechat/AJAX, PHP}{6}{10} \ganttnewline + \ganttmilestone{Week 2}{10} \ganttnewline + + \ganttlink[link mid=.5]{elem7}{elem8} + \ganttlink[link mid=.833]{elem8}{elem11} + \ganttlink[link mid=.75]{elem9}{elem11} + \ganttlink[link mid=.5]{elem10}{elem11} + + \ganttbar{Beveiliging/testen}{6}{15} \ganttnewline + + \ganttgroup{Gebruiksvriendleijk}{11}{15} \ganttnewline + \ganttbar{Mobileformaat}{11}{15} \ganttnewline + \ganttbar{Restyle}{11}{15} \ganttnewline + \ganttbar{Extra's}{11}{15} \ganttnewline + \ganttbar{Code opschonen}{14}{15} \ganttnewline + + \ganttmilestone{Week 3}{15} \ganttnewline + \ganttlink[link mid=.75]{elem11}{elem13} + \ganttlink[link mid=.917]{elem12}{elem18} + \ganttlink[link mid=.875]{elem14}{elem18} + \ganttlink[link mid=.833]{elem15}{elem18} + \ganttlink[link mid=.75]{elem16}{elem18} + \ganttlink[link mid=.5]{elem17}{elem18} + + \ganttlinkedgroup{Afronding}{16}{20} \ganttnewline + \ganttbar{Rapport}{16}{20} \ganttnewline + \ganttbar{Documentatie}{16}{20} \ganttnewline + \ganttbar{Demo}{18}{20} \ganttnewline + + \ganttmilestone{Finshed!}{20} + \ganttlink[link mid=.833]{elem20}{elem23} + \ganttlink[link mid=.75]{elem21}{elem23} + \ganttlink[link mid=.5]{elem22}{elem23} + +\end{ganttchart} +\end{landscape} + %------------------------------------------------------------------------------- % BIJLAGEN EN EINDE diff --git a/website/public/login.php b/website/public/login.php index e20c204..82570a6 100644 --- a/website/public/login.php +++ b/website/public/login.php @@ -1,7 +1,9 @@ diff --git a/website/public/register.php b/website/public/register.php index 1d65102..2299cf0 100644 --- a/website/public/register.php +++ b/website/public/register.php @@ -3,6 +3,7 @@ @@ -10,8 +11,8 @@ session_start(); // define variables and set to empty values - $name = $surname = $bday = $username = $password = $confirmpassword = $streetname = $housenumber = $email = ""; - $genericErr = $nameErr = $surnameErr = $bdayErr = $usernameErr = $passwordErr = $confirmpasswordErr = $streetnameErr = $housenumberErr = $emailErr = ""; + $name = $surname = $bday = $username = $password = $confirmpassword = $location = $housenumber = $email = ""; + $genericErr = $nameErr = $surnameErr = $bdayErr = $usernameErr = $passwordErr = $confirmpasswordErr = $locationErr = $housenumberErr = $emailErr = ""; $correct = true; // Saves information of filling in the form @@ -35,8 +36,8 @@ $password = $_POST["password"]; } - if (isset($_POST["streetname"])) { - $streetname = $_POST["streetname"]; + if (isset($_POST["location"])) { + $location = $_POST["location"]; } if (isset($_POST["housenumber"])) { @@ -87,6 +88,10 @@ $usernameErr = "Gebruikersnaam moet minstens 6 karakters bevatten"; $correct = false; + } else if (getExistingUsername() == 1){ + $usernameErr = "Gebruikersnaam bestaat al"; + $correct = false; + } } @@ -108,30 +113,24 @@ } - if ($_POST["password"]!= $_POST["confirmpassword"]) { + if ($_POST["password"] != $_POST["confirmpassword"]) { $confirmpasswordErr = "Wachtwoorden matchen niet"; $correct = false; } - if (empty($_POST["streetname"])) { - $streetnameErr = "Straatnaam is verplicht!"; + if (empty($_POST["location"])) { + $locationErr = "Straatnaam is verplicht!"; $correct = false; } else { - if (!preg_match("/^[a-zA-Z ]*$/",$streetname)) { - $streetnameErr = "Alleen letters en spaties zijn toegestaan!"; + if (!preg_match("/^[a-zA-Z ]*$/",$location)) { + $locationErr = "Alleen letters en spaties zijn toegestaan!"; $correct = false; } } - if (empty($_POST["housenumber"])) { - $housenumberErr = "Huisnummer is verplicht!"; - $correct = false; - - } - if (empty($_POST["email"])) { $emailErr = "Email is verplicht!"; $correct = false; @@ -140,6 +139,11 @@ if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Geldige email invullen!"; $correct = false; + + } else if (getExistingEmail() == 1){ + $emailErr = "Email bestaat al"; + $correct = false; + } } @@ -148,48 +152,9 @@ $genericErr = "Bepaalde velden zijn verkeerd of niet ingevuld!"; } else { - $servername = "agile136.science.uva.nl"; - $username = "mhbp"; - $password = "qdtboXhCHJyL2szC"; + registerAccount(); + header("location: login.php"); - // Creates connection - $conn = new mysqli($servername, $username, $password); - - // Checks connection - if ($conn->connect_error) { - die("Connection failed: " . $conn->connect_error); - } - - // Query for inserting all the data in the database - $sql = "INSERT INTO - VALUES ($name, $surname, $bday, $username, $password, - $confirmpassword, $streetname, $housenumber, $email)"; - - // Checks if able to insert into database - if (mysqli_query($conn, $sql)) { - echo "New record created successfully"; - } else { - echo "Error: " . $sql . "
" . mysqli_error($conn); - } - - - - prepare('SELECT name, colour, calories - FROM fruit - WHERE calories < :calories AND colour = :colour'); - $sth->bindParam(':calories', $calories, PDO::PARAM_INT); - $sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12); - $sth->execute(); - ?> - - - - // Closing connection - mysql_close($connection); } } diff --git a/website/public/settings.php b/website/public/settings.php index b018569..22ae99c 100644 --- a/website/public/settings.php +++ b/website/public/settings.php @@ -3,7 +3,6 @@ @@ -13,22 +12,26 @@ + switch ($_POST["form"]) { + case "profile": + $result = updateSettings(); + break; + case "password": + $result = updatePassword(); + break; + case "email": + break; + case "picture": + break; + } +} - diff --git a/website/public/styles/index.css b/website/public/styles/index.css index 5978f9d..a368066 100644 --- a/website/public/styles/index.css +++ b/website/public/styles/index.css @@ -59,8 +59,9 @@ div[data-title]:hover:after{ body { height: 900px; - background-image: url(https://images2.pixlis.com/background-image-plaid-checkered-seamless-tileable-235ftm.png); + background-image: url(https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTEnqKdVtLbxjKuNsCSCxFRhTOpp3Gm0gsU8bMgA_MeUYyzrUFy); background-size: contain; + background-repeat: repeat-x; background-attachment: fixed; /*background-color: #B78996;*/ diff --git a/website/public/styles/settings.css b/website/public/styles/settings.css index f1648c8..933e7fd 100644 --- a/website/public/styles/settings.css +++ b/website/public/styles/settings.css @@ -5,6 +5,17 @@ .settings-password { margin-right: 15px; } +.settings-message { + color: white; +} +.settings-message-angry { + background-color: firebrick; +} + +.settings-message-happy { + background-color: forestgreen; + +} .settings li { diff --git a/website/queries/connect.php b/website/queries/connect.php index ef3e1ba..ddb3c9b 100644 --- a/website/queries/connect.php +++ b/website/queries/connect.php @@ -8,6 +8,4 @@ else { $GLOBALS["db"] = new PDO("mysql:host=$dbconf->mysql_host;dbname=$dbconf->mysql_database;charset=utf8", "$dbconf->mysql_username", "$dbconf->mysql_password") or die('Error connecting to mysql server'); -} - -?> +} \ No newline at end of file diff --git a/website/queries/login.php b/website/queries/login.php new file mode 100644 index 0000000..c710833 --- /dev/null +++ b/website/queries/login.php @@ -0,0 +1,19 @@ +prepare(" + SELECT + `password`, + `userID` + FROM + `user` + WHERE + `username` LIKE :username + "); + + $stmt->bindParam(":username", $_POST["uname"]); + $stmt->execute(); + return $stmt->fetch(PDO::FETCH_ASSOC); +} + +?> diff --git a/website/queries/register.php b/website/queries/register.php new file mode 100644 index 0000000..9881872 --- /dev/null +++ b/website/queries/register.php @@ -0,0 +1,62 @@ +prepare(" + SELECT + `username` + FROM + `user` + WHERE + `username` LIKE :username + "); + + $stmt->bindParam(":username", $_POST["username"]); + $stmt->execute(); + return $stmt->rowCount(); + +} + +function getExistingEmail() { + $stmt = $GLOBALS["db"]->prepare(" + SELECT * FROM `user` WHERE `email` = :email + "); + + $stmt->bindParam(":email", $_POST["email"]); + $stmt->execute(); + return $stmt->rowCount(); +} + +function registerAccount() { + $stmt = $GLOBALS["db"]->prepare(" + INSERT INTO + `user`(fname, + lname, + birthdate, + username, + password, + location, + email) + VALUES( + :fname, + :lname, + :bday, + :username, + :password, + :location, + :email + )"); + + $hash=password_hash($_POST["password"].(strtolower($_POST["username"])), PASSWORD_DEFAULT); + + $stmt->bindParam(":fname", $_POST["name"]); + $stmt->bindParam(":lname", $_POST["surname"]); + $stmt->bindParam(":bday", $_POST["bday"]); + $stmt->bindParam(":username", $_POST["username"]); + $stmt->bindParam(":password", $hash); + $stmt->bindParam(":location", $_POST["location"]); + $stmt->bindParam(":email", $_POST["email"]); + + $stmt->execute(); + $stmt->rowCount(); +} +?> diff --git a/website/queries/settings.php b/website/queries/settings.php index 66ddda8..c59ff7f 100644 --- a/website/queries/settings.php +++ b/website/queries/settings.php @@ -10,9 +10,9 @@ function getSettings() { `birthdate`, `bio`, `profilepicture` - FROM + FROM `user` - WHERE + WHERE `userID` = :userID "); @@ -21,6 +21,21 @@ function getSettings() { return $stmt->fetch(); } +function getPasswordHash() { + $stmt = $GLOBALS["db"]->prepare(" + SELECT + `password`, + `username` + FROM + `user` + WHERE + `userID` = :userID + "); + $stmt->bindParam(":userID", $_SESSION["userID"]); + $stmt->execute(); + return $stmt->fetch(); +} + function updateSettings() { $stmt = $GLOBALS["db"]->prepare(" UPDATE @@ -43,4 +58,52 @@ function updateSettings() { $stmt->bindParam(":userID", $_SESSION["userID"]); $stmt->execute(); + + return array ( + "type" => "settings-message-happy", + "message" => "Instellingen zijn opgeslagen." + ); +} + +function updatePassword() { + $user = getPasswordHash(); + if (password_verify($_POST["password-old"].strtolower($user["username"]), $user["password"])) { + if ($_POST["password-new"] == $_POST["password-confirm"] && (strlen($_POST["password-new"]) >= 8)) { + if (changePassword($user)) { + return array ("type" => "settings-message-happy", + "message" => "Wachtwoord gewijzigd."); + } else { + return array ( + "type" => "settings-message-angry", + "message" => "Er is iets mis gegaan."); + } + } else { + return array ( + "type" => "settings-message-angry", + "message" => "Wachtwoorden komen niet oveeen." + ); + } + } else { + return array( + "type" => "settings-message-angry", + "message" => "Oud wachtwoord niet correct." + ); + } +} + +function changePassword($user) { + $stmt =$GLOBALS["db"]->prepare(" + UPDATE + `user` + SET + `password` = :new_password + WHERE + `userID` = :userID + "); + + $hashed_password = password_hash($_POST["password-new"].strtolower($user["username"]), PASSWORD_DEFAULT); + $stmt->bindParam(":new_password", $hashed_password); + $stmt->bindParam(":userID", $_SESSION["userID"]); + $stmt->execute(); + return $stmt->rowCount(); } \ No newline at end of file diff --git a/website/views/register-view.php b/website/views/register-view.php index a184f71..3ccc978 100644 --- a/website/views/register-view.php +++ b/website/views/register-view.php @@ -94,28 +94,16 @@ * - +
- + - * -
- - -
- - - * + *
diff --git a/website/views/settings-view.php b/website/views/settings-view.php index 49ad1f9..3e68fe4 100644 --- a/website/views/settings-view.php +++ b/website/views/settings-view.php @@ -4,6 +4,13 @@ $settings = getSettings();
+ + ${result["message"]} +
"; + } + ?>
Profiel Instellingen
@@ -108,9 +116,10 @@ $settings = getSettings(); >
  • - +
  • @@ -143,9 +152,10 @@ $settings = getSettings(); >
  • - +