Confirm Register
This commit is contained in:
parent
06ce614c2b
commit
2fde820942
@ -30,4 +30,21 @@ class Register extends Api
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function patch(): void
|
||||||
|
{
|
||||||
|
$code = Input::post("code");
|
||||||
|
if (empty($code)) throw new Exception("Missing code", 400);
|
||||||
|
|
||||||
|
try {
|
||||||
|
Response::json(User::confirm($code));
|
||||||
|
} catch (Exception $err) {
|
||||||
|
switch ($err->getMessage()) {
|
||||||
|
case "NotFound":
|
||||||
|
throw new Exception("User not found", 404);
|
||||||
|
default:
|
||||||
|
throw $err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -119,6 +119,45 @@ paths:
|
|||||||
}
|
}
|
||||||
tags:
|
tags:
|
||||||
- Register
|
- Register
|
||||||
|
patch:
|
||||||
|
summary: Confirm register
|
||||||
|
description: Confirm a registration
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ConfirmRequest"
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: Success
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/BooleanResponse"
|
||||||
|
examples:
|
||||||
|
Success:
|
||||||
|
value: true
|
||||||
|
400:
|
||||||
|
description: Missing fields
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing fields:
|
||||||
|
value: { "message": "Missing code" }
|
||||||
|
404:
|
||||||
|
description: User not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
User not found:
|
||||||
|
value: { "message": "User not found" }
|
||||||
|
tags:
|
||||||
|
- Register
|
||||||
/user{id}:
|
/user{id}:
|
||||||
get:
|
get:
|
||||||
summary: Get user
|
summary: Get user
|
||||||
@ -312,11 +351,20 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
password:
|
password:
|
||||||
type: string
|
type: string
|
||||||
|
ConfirmRequest:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- code
|
||||||
|
properties:
|
||||||
|
code:
|
||||||
|
type: string
|
||||||
|
format: uuid4
|
||||||
securitySchemes:
|
securitySchemes:
|
||||||
BasicAuth:
|
BasicAuth:
|
||||||
type: apiKey
|
type: apiKey
|
||||||
name: token
|
name: token
|
||||||
in: header
|
in: header
|
||||||
|
format: uuid4
|
||||||
tags:
|
tags:
|
||||||
- name: Login/Logout
|
- name: Login/Logout
|
||||||
- name: Register
|
- name: Register
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -34,6 +34,28 @@ class User implements JsonSerializable
|
|||||||
$this->postCount = $postCount;
|
$this->postCount = $postCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function getByConfirmCode(string $code): User
|
||||||
|
{
|
||||||
|
$db = Database::getInstance();
|
||||||
|
|
||||||
|
$stmt = $db->prepare(
|
||||||
|
"SELECT
|
||||||
|
b.id, b.benutzer, b.status, b.email, b.image, b.isadmin, b.zeitstempel,
|
||||||
|
(SELECT COUNT(*) FROM egb_gaestebuch WHERE benutzer_id = b.id) as postCount
|
||||||
|
FROM
|
||||||
|
egb_benutzer AS b
|
||||||
|
WHERE
|
||||||
|
confirmationcode = :COD"
|
||||||
|
);
|
||||||
|
$stmt->bindValue(":COD", $code);
|
||||||
|
$stmt->execute();
|
||||||
|
$data = $stmt->fetch();
|
||||||
|
|
||||||
|
if (!$data) throw new Exception("NotFound");
|
||||||
|
|
||||||
|
return new User($data["id"], $data["benutzer"], $data["status"], $data["email"], $data["zeitstempel"], $data["image"], $data["isadmin"] === 1, $data["postCount"]);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Statics
|
* Statics
|
||||||
*/
|
*/
|
||||||
@ -189,7 +211,21 @@ class User implements JsonSerializable
|
|||||||
|
|
||||||
public static function confirm(string $confirmCode): bool
|
public static function confirm(string $confirmCode): bool
|
||||||
{
|
{
|
||||||
|
$db = Database::getInstance();
|
||||||
|
$user = User::getByConfirmCode($confirmCode);
|
||||||
|
|
||||||
|
$stmt = $db->prepare(
|
||||||
|
"UPDATE
|
||||||
|
egb_benutzer
|
||||||
|
SET
|
||||||
|
status = 1,
|
||||||
|
confirmationcode = NULL
|
||||||
|
WHERE id = :UID"
|
||||||
|
);
|
||||||
|
$stmt->bindValue(":UID", $user->getID());
|
||||||
|
return $stmt->execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Members
|
* Members
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -19,6 +19,7 @@ SimpleRouter::all("/", function () {
|
|||||||
// Login
|
// Login
|
||||||
SimpleRouter::post("/login", [Api\Login\Login::class, "post"]);
|
SimpleRouter::post("/login", [Api\Login\Login::class, "post"]);
|
||||||
SimpleRouter::post("/register", [Api\Register\Register::class, "post"]);
|
SimpleRouter::post("/register", [Api\Register\Register::class, "post"]);
|
||||||
|
SimpleRouter::patch("/register", [Api\Register\Register::class, "patch"]);
|
||||||
/*
|
/*
|
||||||
* Normal Auth routes
|
* Normal Auth routes
|
||||||
*/
|
*/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user