-
Notifications
You must be signed in to change notification settings - Fork 0
/
backend.php
56 lines (44 loc) · 1.63 KB
/
backend.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php declare(strict_types=1);
require_once("./src/Uberpass.php");
use uberpass\Uberpass;
use uberpass\User;
use uberpass\Response;
header("Content-type: application/json");
$app = new Uberpass();
$settings = $app->settings();
$post = $app->post();
$attemptManager = $app->attempmtManager();
$passwordLength = $settings->get("passwordLength", "8");
$password = $post->get("password");
$passwordConfirm = $post->get("passwordConfirm");
$passwordsMatch = $password === $passwordConfirm;
$email = $post->get("email");
$email = $email ? $email : "";
$user = null;
$userError = false;
try {
$user = new User($email);
} catch (Error $error) {
if ($email !== "" && !$post->hasErrors() && $passwordsMatch)
$userError = true;
}
$error = null;
if ($post->hasErrors())
$error = new Error("Es sind nicht alle erforderlichen Felder ausgefüllt.", 400);
else if (strlen($password) < $passwordLength)
$error = new Error("Das Passwort muss mindestens $passwordLength Zeichen lang sein", 401);
else if (!$passwordsMatch)
$error = new Error("Die angegebenen Passwörter stimmen nicht überein", 402);
else if ($userError)
$error = new Error("Benutzername und/oder Passwort sind inkorrekt", 503);
else if (!$attemptManager->canTry($email))
$error = new Error("Maximale Anzahl an Änderungsversuchen erreicht. Versuchen Sie es später nochmal.");
if (!$error && $user) {
if ($user->validPassword($post->get("currentPassword"))) {
$user->setPassword($password);
} else {
$erro = new Error("Benutzername und/oder Passwort sind inkorrekt", 503);
}
}
$response = new Response($error);
echo $response;