* @category Class * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License * @link www.splendidbear.org * @since 2026. 07. 27. */ final class Version20260727120000 extends AbstractMigration { public function getDescription(): string { return 'Add expiry timestamps for account activation tokens.'; } public function up(Schema $schema): void { $this->addSql('ALTER TABLE app_user ADD verification_token_expires_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL'); $this->addSql("UPDATE app_user SET verification_token_expires_at = CURRENT_TIMESTAMP + INTERVAL '24 hours' WHERE is_verified = FALSE AND verification_token IS NOT NULL"); $this->addSql('CREATE INDEX IDX_APP_USER_PENDING_ACTIVATION_EXPIRY ON app_user (verification_token_expires_at) WHERE is_verified = FALSE AND verification_token_expires_at IS NOT NULL'); } public function down(Schema $schema): void { $this->addSql('DROP INDEX IDX_APP_USER_PENDING_ACTIVATION_EXPIRY'); $this->addSql('ALTER TABLE app_user DROP verification_token_expires_at'); } }