Register und login gefixt
This commit is contained in:
@@ -8,115 +8,115 @@ use PDOException;
|
||||
|
||||
class AuthModel extends Database
|
||||
{
|
||||
public function login($email, $password){
|
||||
$params = [":email" => $email];
|
||||
$sql = "SELECT email, password, validUntil FROM user WHERE email = :email";
|
||||
|
||||
public function login(string $email, string $password)
|
||||
{
|
||||
$pdo = $this->linkDB();
|
||||
$sql = "SELECT email, password, validUntil FROM user WHERE email = :email";
|
||||
$params = [":email" => $email];
|
||||
|
||||
try {
|
||||
$sth = $pdo->prepare($sql);
|
||||
$sth->execute($params);
|
||||
$user = $sth->fetch(PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Abrufen der Daten.", $e);
|
||||
die;
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Abrufen der Benutzerdaten.", $e);
|
||||
return "Interner Datenbankfehler."; // Nur für Debug sichtbar machen, sonst besser allgemein halten
|
||||
}
|
||||
|
||||
|
||||
if (!$user) {
|
||||
return false;
|
||||
return "Benutzer mit dieser E-Mail wurde nicht gefunden.";
|
||||
}
|
||||
|
||||
if (!password_verify($password, $user['password'])) {
|
||||
return false;
|
||||
return "Das eingegebene Passwort ist falsch.";
|
||||
}
|
||||
|
||||
$now = new DateTime();
|
||||
$validUntil = new DateTime($user['validUntil']);
|
||||
try {
|
||||
$now = new DateTime();
|
||||
$validUntil = new DateTime($user['validUntil']);
|
||||
|
||||
if ($now > $validUntil) {
|
||||
return "Ihr Passwort ist abgelaufen. Bitte setzen Sie ein neues über: \"Passwort vergessen\".";
|
||||
if ($now > $validUntil) {
|
||||
return "Ihr Passwort ist abgelaufen. Bitte setzen Sie ein neues über \"Passwort vergessen\".";
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Verarbeiten des Gültigkeitsdatums.", $e);
|
||||
return "Fehler bei der Passwortprüfung.";
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function register($email, $password, $street, $houseNumber, $city, $postalCode, $country, $firstName, $lastName, $phone, $isAdmin) {
|
||||
$rtn = $this->pwRequirementCheck($password);
|
||||
if($rtn !== true){
|
||||
public function register($data)
|
||||
{
|
||||
$rtn = $this->pwRequirementCheck($data['password']);
|
||||
if ($rtn !== true) {
|
||||
return $rtn;
|
||||
}
|
||||
|
||||
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
||||
if (!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
|
||||
return "Bitte geben Sie eine gültige E-Mail ein.";
|
||||
}
|
||||
|
||||
$requiredFields = [$email, $password, $street, $houseNumber, $city, $postalCode, $country, $firstName, $lastName, $phone];
|
||||
$requiredFields = [
|
||||
'email', 'password', 'straße', 'hausnr', 'ort', 'postleitzahl',
|
||||
'land', 'vorname', 'nachname', 'tel'
|
||||
];
|
||||
|
||||
foreach ($requiredFields as $field) {
|
||||
if (empty($field)) {
|
||||
return "Bitte füllen Sie alle Felder aus";
|
||||
if (empty($data[$field])) {
|
||||
return "Bitte füllen Sie alle Felder aus.";
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->userExistsByEmail($data['email'])) {
|
||||
return "Ein Account mit dieser E-Mail existiert bereits.";
|
||||
}
|
||||
|
||||
$hashedPassword = password_hash($data['password'], PASSWORD_DEFAULT);
|
||||
|
||||
$sql = "INSERT INTO user (email, password, straße, hausnr, ort, postleitzahl, land,vorname, nachname, tel, isAdmin)
|
||||
VALUES (:email, :password, :straße, :hausnr, :ort, :postleitzahl, :land,:vorname, :nachname, :tel, :isAdmin)";
|
||||
|
||||
$params = [
|
||||
':email' => $data['email'],
|
||||
':password' => $hashedPassword,
|
||||
':straße' => $data['straße'],
|
||||
':hausnr' => $data['hausnr'],
|
||||
':ort' => $data['ort'],
|
||||
':postleitzahl'=> $data['postleitzahl'],
|
||||
':land'=> $data['land'],
|
||||
':vorname' => $data['vorname'],
|
||||
':nachname'=> $data['nachname'],
|
||||
':tel' => $data['tel'],
|
||||
':isAdmin' => $data['isAdmin'] ? 1 : 0,
|
||||
];
|
||||
|
||||
try {
|
||||
$pdo = $this->linkDB();
|
||||
$stmt = $pdo->prepare("SELECT userid FROM user WHERE email = :email");
|
||||
$stmt->execute([':email' => $email]);
|
||||
if($stmt-> fetch()){
|
||||
return "Der Account mit der Email, existiert bereits.";
|
||||
}
|
||||
} catch (PDOException $e){
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Abrufen der Daten", $e);
|
||||
die;
|
||||
}
|
||||
|
||||
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
|
||||
|
||||
$sql = "INSERT INTO user (email, password, straße, hausnr, ort, postleitzahl,land, vorname, nachname, tel, isAdmin)
|
||||
VALUES (:email, :password, :straße, :hausnr, :ort, :postleitzahl, :land, :vorname, :nachname, :tel, :isAdmin)";
|
||||
|
||||
try{
|
||||
$pdo = $this->linkDB();
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([
|
||||
':email' => $email,
|
||||
':password' => $hashedPassword,
|
||||
':straße' => $street,
|
||||
':hausnr' => $houseNumber,
|
||||
':ort' => $city,
|
||||
':postleitzahl' => $postalCode,
|
||||
':land' => $country,
|
||||
':vorname' => $firstName,
|
||||
':nachname' => $lastName,
|
||||
':tel' => $phone,
|
||||
':isAdmin' => $isAdmin
|
||||
]);
|
||||
$stmt->execute($params);
|
||||
return true;
|
||||
} catch (PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler beim Schreiben der Daten.", $e);
|
||||
die;
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private function pwRequirementCheck($password){
|
||||
$error = [];
|
||||
private function userExistsByEmail($email) {
|
||||
try {
|
||||
$pdo = $this->linkDB();
|
||||
|
||||
if(strlen($password) <= 8)
|
||||
$error[] = "min 8 Charackter";
|
||||
if(!preg_match("/[A-Z]/", $password))
|
||||
$error[] = "min one large Character";
|
||||
if(!preg_match("/[a-z]/", $password))
|
||||
$error[] = "min one small charakter";
|
||||
if(!preg_match("/[0-9]/", $password))
|
||||
$error[] = "min one number";
|
||||
if(!preg_match("[^a-zA-Z0-9\s]", $password));
|
||||
$error[] = "min one special character";
|
||||
$sql = "SELECT userid FROM user WHERE email = :email";
|
||||
$params = [':email' => $email];
|
||||
|
||||
if(empty($error))
|
||||
return true;
|
||||
else
|
||||
return $error;
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute($params);
|
||||
|
||||
return (bool) $stmt->fetch();
|
||||
} catch (\PDOException $e) {
|
||||
new \Blog\Library\ErrorMsg("Fehler bei der E-Mail-Prüfung", $e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function pwForgot($email){
|
||||
|
Reference in New Issue
Block a user