Resolve some minor final bugs and TODOs
This commit is contained in:
parent
f029c68f1a
commit
2ef6b105ce
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "fwdekker/death-notifier",
|
||||
"description": "Get notified when a famous person dies.",
|
||||
"version": "0.18.1", "_comment_version": "Also update version in `package.json`!",
|
||||
"version": "0.18.2", "_comment_version": "Also update version in `package.json`!",
|
||||
"type": "project",
|
||||
"license": "MIT",
|
||||
"homepage": "https://git.fwdekker.com/tools/death-notifier",
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "death-notifier",
|
||||
"version": "0.18.1", "_comment_version": "Also update version in `composer.json`!",
|
||||
"version": "0.18.2", "_comment_version": "Also update version in `composer.json`!",
|
||||
"description": "Get notified when a famous person dies.",
|
||||
"author": "Florine W. Dekker",
|
||||
"browser": "dist/bundle.js",
|
||||
|
|
|
@ -42,6 +42,9 @@ $logger = LoggerUtil::with_name();
|
|||
// Wrap everything in try-catch to always return *something* to user
|
||||
try {
|
||||
// Preamble
|
||||
session_start();
|
||||
$_SESSION["token"] = $_SESSION["token"] ?? Util::generate_csrf_token();
|
||||
|
||||
$db = new Database(Config::get()["database"]["filename"]);
|
||||
|
||||
$wikipedia = new Wikipedia();
|
||||
|
@ -52,9 +55,6 @@ try {
|
|||
$db->auto_install($email_queue, $user_list, $tracking_list);
|
||||
$db->auto_migrate();
|
||||
|
||||
session_start();
|
||||
$_SESSION["token"] = $_SESSION["token"] ?? Util::generate_csrf_token();
|
||||
|
||||
|
||||
// Set up request handlers
|
||||
$dispatcher = new ActionDispatcher();
|
||||
|
@ -110,7 +110,7 @@ try {
|
|||
else
|
||||
$response = new Response(satisfied: true, payload: null);
|
||||
} catch (Throwable $exception) {
|
||||
$logger->error("An unhandled error occurred. Please try again later.", ["cause" => $exception]);
|
||||
$logger->error("An unhandled error occurred.", ["cause" => $exception]);
|
||||
$response = Response::unsatisfied("An unhandled error occurred. Please try again later.");
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ use Monolog\Logger;
|
|||
*
|
||||
* Contains global state, but reduces unnecessary parameter passing and unused fields.
|
||||
*/
|
||||
// TODO: Improve logging specificity and usefulness
|
||||
class LoggerUtil
|
||||
{
|
||||
/**
|
||||
|
|
|
@ -4,8 +4,8 @@ namespace com\fwdekker\deathnotifier\mailer;
|
|||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\Config;
|
||||
use com\fwdekker\deathnotifier\validator\EqualsCliSecretRule;
|
||||
use com\fwdekker\deathnotifier\UnexpectedException;
|
||||
use com\fwdekker\deathnotifier\validator\EqualsCliSecretRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use PHPMailer\PHPMailer\Exception as PHPMailerException;
|
||||
|
|
|
@ -4,17 +4,17 @@ namespace com\fwdekker\deathnotifier\tracking;
|
|||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\IllegalStateError;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\UnexpectedException;
|
||||
use com\fwdekker\deathnotifier\validator\HasStringLengthRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsNotBlankRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
use com\fwdekker\deathnotifier\wikipedia\ArticleType;
|
||||
use com\fwdekker\deathnotifier\wikipedia\PersonStatus;
|
||||
use com\fwdekker\deathnotifier\wikipedia\Wikipedia;
|
||||
use com\fwdekker\deathnotifier\wikipedia\WikipediaException;
|
||||
use com\fwdekker\deathnotifier\validator\HasStringLengthRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsNotBlankRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
namespace com\fwdekker\deathnotifier\tracking;
|
||||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
namespace com\fwdekker\deathnotifier\tracking;
|
||||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsStringRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
|
||||
|
|
|
@ -8,11 +8,11 @@ use com\fwdekker\deathnotifier\LoggerUtil;
|
|||
use com\fwdekker\deathnotifier\mailer\Email;
|
||||
use com\fwdekker\deathnotifier\mailer\EmailQueue;
|
||||
use com\fwdekker\deathnotifier\UnexpectedException;
|
||||
use com\fwdekker\deathnotifier\validator\EqualsCliSecretRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\wikipedia\Wikipedia;
|
||||
use com\fwdekker\deathnotifier\wikipedia\WikipediaException;
|
||||
use com\fwdekker\deathnotifier\validator\EqualsCliSecretRule;
|
||||
use Monolog\Logger;
|
||||
|
||||
|
||||
|
@ -102,6 +102,7 @@ class UpdateTrackingsAction extends Action
|
|||
// Send mails
|
||||
// TODO: Restrict number of notifications to 1 per hour (excluding "oops we're not sure" message)
|
||||
// TODO: Reuse `stmt`s for listing trackers and queueing emails to reduce overheads
|
||||
// TODO: Detect renaming vandalism
|
||||
foreach ($new_deletions as $new_deletion)
|
||||
foreach ($this->tracking_list->list_trackers($new_deletion) as $user_email)
|
||||
$this->mailer->queue_email(new NotifyArticleDeletedEmail($user_email, $new_deletion));
|
||||
|
|
|
@ -6,11 +6,11 @@ use com\fwdekker\deathnotifier\Action;
|
|||
use com\fwdekker\deathnotifier\Config;
|
||||
use com\fwdekker\deathnotifier\mailer\Email;
|
||||
use com\fwdekker\deathnotifier\mailer\EmailQueue;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\tracking\TrackingList;
|
||||
use com\fwdekker\deathnotifier\UnexpectedException;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
|
||||
|
|
|
@ -6,11 +6,11 @@ use com\fwdekker\deathnotifier\Action;
|
|||
use com\fwdekker\deathnotifier\Config;
|
||||
use com\fwdekker\deathnotifier\mailer\Email;
|
||||
use com\fwdekker\deathnotifier\mailer\EmailQueue;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\UnexpectedException;
|
||||
use com\fwdekker\deathnotifier\validator\HasStringLengthRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsStringRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
namespace com\fwdekker\deathnotifier\user;
|
||||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\UnexpectedException;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
namespace com\fwdekker\deathnotifier\user;
|
||||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsStringRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
namespace com\fwdekker\deathnotifier\user;
|
||||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\UnexpectedException;
|
||||
use com\fwdekker\deathnotifier\Util;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
use Exception;
|
||||
|
|
|
@ -6,10 +6,10 @@ use com\fwdekker\deathnotifier\Action;
|
|||
use com\fwdekker\deathnotifier\Config;
|
||||
use com\fwdekker\deathnotifier\mailer\Email;
|
||||
use com\fwdekker\deathnotifier\mailer\EmailQueue;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\HasStringLengthRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
|
||||
|
|
|
@ -6,10 +6,10 @@ use com\fwdekker\deathnotifier\Action;
|
|||
use com\fwdekker\deathnotifier\Config;
|
||||
use com\fwdekker\deathnotifier\mailer\Email;
|
||||
use com\fwdekker\deathnotifier\mailer\EmailQueue;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\UnexpectedException;
|
||||
use com\fwdekker\deathnotifier\Util;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
|
||||
|
|
|
@ -6,10 +6,10 @@ use com\fwdekker\deathnotifier\Action;
|
|||
use com\fwdekker\deathnotifier\Config;
|
||||
use com\fwdekker\deathnotifier\mailer\Email;
|
||||
use com\fwdekker\deathnotifier\mailer\EmailQueue;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\Util;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
|
||||
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
namespace com\fwdekker\deathnotifier\user;
|
||||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\validator\IsBooleanRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\UnexpectedException;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsBooleanRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
namespace com\fwdekker\deathnotifier\user;
|
||||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\UnexpectedException;
|
||||
use com\fwdekker\deathnotifier\Util;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
use com\fwdekker\deathnotifier\validator\SessionRuleSet;
|
||||
use Exception;
|
||||
|
|
|
@ -8,6 +8,10 @@ use PDO;
|
|||
|
||||
/**
|
||||
* A list of trackings, stored in a {@see Database}.
|
||||
*
|
||||
* @phpstan-type User array{"uuid": string, "email": string, "email_verification_token": string|null,
|
||||
* "email_verification_token_timestamp": int, "email_notifications_enabled": int, "password": string,
|
||||
* "password_last_change": int, "password_reset_token": string|null, "password_reset_token_timestamp": int}
|
||||
*/
|
||||
class UserList
|
||||
{
|
||||
|
@ -150,11 +154,8 @@ class UserList
|
|||
* Returns all data of the user with the given UUID.
|
||||
*
|
||||
* @param string $uuid the UUID of the user to return the data of
|
||||
* @return array{"uuid": string, "email": string, "email_verification_token": string|null,
|
||||
* "email_verification_token_timestamp": int, "email_notifications_enabled": int, "password": string,
|
||||
* "password_last_change": int, "password_reset_token": string|null,
|
||||
* "password_reset_token_timestamp": int}|null all data of the user with the given UUID, or `null` if the user
|
||||
* could not be found
|
||||
* @return User|null all data of the user with the given UUID, or `null` if the user could not be found
|
||||
* @noinspection PhpUndefinedClassInspection defined with `@phpstan-type`
|
||||
*/
|
||||
public function get_user_by_uuid(string $uuid): ?array
|
||||
{
|
||||
|
@ -179,11 +180,8 @@ class UserList
|
|||
* Returns all data of the user with the given email address.
|
||||
*
|
||||
* @param string $email the email address of the user to return the data of
|
||||
* @return array{"uuid": string, "email": string, "email_verification_token": string|null,
|
||||
* "email_verification_token_timestamp": int, "email_notifications_enabled": int, "password": string,
|
||||
* "password_last_change": int, "password_reset_token": string|null,
|
||||
* "password_reset_token_timestamp": int}|null all data of the user with the given email address, or `null` if
|
||||
* the user could not be found
|
||||
* @return User|null all data of the user with the given email address, or `null` if the user could not be found
|
||||
* @noinspection PhpUndefinedClassInspection defined with `@phpstan-type`
|
||||
*/
|
||||
public function get_user_by_email(string $email): ?array
|
||||
{
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
namespace com\fwdekker\deathnotifier\user;
|
||||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\Util;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsStringRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
|
||||
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
namespace com\fwdekker\deathnotifier\user;
|
||||
|
||||
use com\fwdekker\deathnotifier\Action;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\Util;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\InvalidInputException;
|
||||
use com\fwdekker\deathnotifier\validator\IsEmailRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsStringRule;
|
||||
use com\fwdekker\deathnotifier\validator\IsValidCsrfTokenRule;
|
||||
use com\fwdekker\deathnotifier\validator\RuleSet;
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue