Merge branch 'master' into lars-chat

This commit is contained in:
Lars van Hijfte
2017-01-19 14:54:42 +01:00
4 changed files with 107 additions and 34 deletions

2
.gitignore vendored
View File

@@ -8,7 +8,7 @@
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
.idea/*
# User-specific stuff: # User-specific stuff:
.idea/workspace.xml .idea/workspace.xml
.idea/tasks.xml .idea/tasks.xml

View File

@@ -14,6 +14,7 @@
<?php <?php
include("../views/main.php"); include("../views/main.php");
$notImplemented = new settingsMessage("angry", "Deze functie werkt nog niet :(");
if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($_SERVER["REQUEST_METHOD"] == "POST") {
switch ($_POST["form"]) { switch ($_POST["form"]) {
@@ -24,16 +25,10 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
$result = updatePassword(); $result = updatePassword();
break; break;
case "email": case "email":
$result = array ( $result = changeEmail();
"type" => "settings-message-angry",
"message" => "Deze functie werkt nog niet :("
);
break; break;
case "picture": case "picture":
$result = array ( $result = $notImplemented;
"type" => "settings-message-angry",
"message" => "Deze functie werkt nog niet :("
);
break; break;
} }
} }

View File

@@ -1,5 +1,42 @@
<?php <?php
class settingsMessage {
private $class;
private $message;
/**
* settingsMessage constructor.
* @param string $type Happy or angry
* @param string $message The message to display
*/
public function __construct($type, $message) {
$this->message = $message;
switch ($type) {
case "happy":
$this->class = "settings-message-happy";
break;
case "angry":
$this->class = "settings-message-angry";
break;
default:
$this->class = "settings-message";
break;
}
}
public function getClass() {
return $this->class;
}
public function getMessage() {
return $this->message;
}
}
/**
* Gets the settings form the database.
* @return mixed Setting as an array.
*/
function getSettings() { function getSettings() {
$stmt = $GLOBALS["db"]->prepare(" $stmt = $GLOBALS["db"]->prepare("
SELECT SELECT
@@ -59,40 +96,28 @@ function updateSettings() {
$stmt->execute(); $stmt->execute();
return array ( return new settingsMessage("happy", "Instellingen zijn opgeslagen.");
"type" => "settings-message-happy",
"message" => "Instellingen zijn opgeslagen."
);
} }
function updatePassword() { function updatePassword() {
$user = getPasswordHash(); $user = getPasswordHash();
if (password_verify($_POST["password-old"].strtolower($user["username"]), $user["password"])) { if (password_verify($_POST["password-old"], $user["password"])) {
if ($_POST["password-new"] == $_POST["password-confirm"] && (strlen($_POST["password-new"]) >= 8)) { if ($_POST["password-new"] == $_POST["password-confirm"] && (strlen($_POST["password-new"]) >= 8)) {
if (changePassword($user)) { if (changePassword()) {
return array ("type" => "settings-message-happy", return new settingsMessage("happy", "Wachtwoord gewijzigd.");
"message" => "Wachtwoord gewijzigd.");
} else { } else {
return array ( return new settingsMessage("angry", "Er is iets mis gegaan.");
"type" => "settings-message-angry",
"message" => "Er is iets mis gegaan.");
} }
} else { } else {
return array ( return new settingsMessage("angry", "Wachtwoorden komen niet oveen.");
"type" => "settings-message-angry",
"message" => "Wachtwoorden komen niet oveeen."
);
} }
} else { } else {
return array( return new settingsMessage("angry", "Oud wachtwoord niet correct.");
"type" => "settings-message-angry",
"message" => "Oud wachtwoord niet correct."
);
} }
} }
function changePassword($user) { function changePassword() {
$stmt =$GLOBALS["db"]->prepare(" $stmt = $GLOBALS["db"]->prepare("
UPDATE UPDATE
`user` `user`
SET SET
@@ -101,9 +126,62 @@ function changePassword($user) {
`userID` = :userID `userID` = :userID
"); ");
$hashed_password = password_hash($_POST["password-new"].strtolower($user["username"]), PASSWORD_DEFAULT); $hashed_password = password_hash($_POST["password-new"], PASSWORD_DEFAULT);
$stmt->bindParam(":new_password", $hashed_password); $stmt->bindParam(":new_password", $hashed_password);
$stmt->bindParam(":userID", $_SESSION["userID"]); $stmt->bindParam(":userID", $_SESSION["userID"]);
$stmt->execute(); $stmt->execute();
return $stmt->rowCount(); return $stmt->rowCount();
} }
function changeEmail() {
if ($_POST["email"] == $_POST["email-confirm"]) {
$email = strtolower($_POST["email"]);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
//check if email exists
if (emailIsAvailableInDatabase($email)) {
if (doChangeEmail($email)) {
return new settingsMessage("happy", "Emailadres is veranderd.");
} else {
return new settingsMessage("angry", "Er is iets mis gegaan.");
}
} else {
return new settingsMessage("angry", "Emailadres bestaat al.");
}
} else {
return new settingsMessage("angry", "Geef een geldig emailadres.");
}
} else {
return new settingsMessage("angry", "Emailadressen komen niet overeen.");
}
}
function emailIsAvailableInDatabase($email) {
$stmt = $GLOBALS["db"]->prepare("
SELECT
`email`
FROM
`user`
WHERE
`email` = :email
");
$stmt->bindParam(":email", $email);
$stmt->execute();
return !$stmt->rowCount();
}
function doChangeEmail($email) {
$stmt = $GLOBALS["db"]->prepare("
UPDATE
`user`
SET
`email` = :email
WHERE
`userID` = :userID
");
$stmt->bindParam(":email", $email);
$stmt->bindParam(":userID", $_SESSION["userID"]);
$stmt->execute();
return $stmt->rowCount();
}

View File

@@ -6,9 +6,9 @@ $settings = getSettings();
<div class="settings"> <div class="settings">
<?php <?php
if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($_SERVER["REQUEST_METHOD"] == "POST") {
echo "<div class='platform settings-message ${result["type"]}'> echo "<div class='platform settings-message ". $result->getClass()."'>".
${result["message"]} $result->getMessage().
</div>"; "</div>";
} }
?> ?>
<form class="settings-profile platform" method="post"> <form class="settings-profile platform" method="post">