57 lines
1.2 KiB
PHP
57 lines
1.2 KiB
PHP
<?php
|
|
declare(strict_types = 1);
|
|
namespace Kimendisch\Sbgg_Jetzt;
|
|
use Flake\Error;
|
|
|
|
// DECODE REQUEST //
|
|
// get json string
|
|
$json_body = file_get_contents("php://input");
|
|
if(strlen($json_body) <= 0){
|
|
http_response_code(400);
|
|
echo("malformed request body");
|
|
die();
|
|
}
|
|
|
|
// try decoding json
|
|
$request = json_decode($json_body, true);
|
|
if(json_last_error() != JSON_ERROR_NONE){
|
|
http_response_code(400);
|
|
echo("malformed request body");
|
|
die();
|
|
}
|
|
|
|
|
|
// VALIDATE VALUES //
|
|
// mail address
|
|
$mail_address = $request["mail_address"] ?? "";
|
|
if(!is_string($mail_address)){
|
|
http_response_code(400);
|
|
echo("invalid mail address");
|
|
die();
|
|
}
|
|
if(!preg_match("/^[a-zA-Z0-9\.\-\_\+]+@([a-z0-9\-]+\.)+[a-z0-9\-]{2,}$/", $mail_address)){
|
|
http_response_code(400);
|
|
echo("invalid mail address");
|
|
die();
|
|
}
|
|
|
|
// language
|
|
$language = $request["language"] ?? "";
|
|
if(!in_array($language, ["de", "en"])){
|
|
http_response_code(400);
|
|
echo("invalid language");
|
|
die();
|
|
}
|
|
|
|
|
|
// VERIFY //
|
|
Newsletter::verify(mail_address: $mail_address, language: $language);
|
|
|
|
|
|
// POSITIVE RESPONSE //
|
|
http_response_code(200);
|
|
echo(json_encode([
|
|
"success" => true
|
|
]));
|
|
?>
|