From 83dfd84b3868a8eec375fb7550508b5b1b68ded3 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Mon, 30 Dec 2019 07:44:51 -0600 Subject: [PATCH 1/5] use common mark for safety features --- composer.json | 2 ++ src/Illuminate/Mail/Markdown.php | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index c8e37e9ca14c..d5ea584299e1 100644 --- a/composer.json +++ b/composer.json @@ -23,6 +23,8 @@ "dragonmantank/cron-expression": "^2.0", "egulias/email-validator": "^2.1.10", "erusev/parsedown": "^1.7", + "league/commonmark": "^1.1", + "league/commonmark-ext-table": "^2.1", "league/flysystem": "^1.0.8", "monolog/monolog": "^1.12|^2.0", "nesbot/carbon": "^2.0", diff --git a/src/Illuminate/Mail/Markdown.php b/src/Illuminate/Mail/Markdown.php index 9d147f1e3cb3..92ef6cd1fdde 100644 --- a/src/Illuminate/Mail/Markdown.php +++ b/src/Illuminate/Mail/Markdown.php @@ -5,6 +5,9 @@ use Illuminate\Contracts\View\Factory as ViewFactory; use Illuminate\Support\HtmlString; use Illuminate\Support\Str; +use League\CommonMark\CommonMarkConverter; +use League\CommonMark\Environment; +use League\CommonMark\Ext\Table\TableExtension; use Parsedown; use TijsVerkoyen\CssToInlineStyles\CssToInlineStyles; @@ -98,9 +101,15 @@ public function renderText($view, array $data = []) */ public static function parse($text) { - $parsedown = new Parsedown; + $environment = Environment::createCommonMarkEnvironment(); - return new HtmlString($parsedown->text($text)); + $environment->addExtension(new TableExtension); + + $converter = new CommonMarkConverter([ + 'allow_unsafe_links' => false, + ], $environment); + + return new HtmlString($converter->convertToHtml($text)); } /** From a1f2ef4b46347a5d35d7395997453cdcd0a1c62d Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Mon, 30 Dec 2019 07:46:00 -0600 Subject: [PATCH 2/5] Apply fixes from StyleCI (#30981) --- src/Illuminate/Mail/Markdown.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Illuminate/Mail/Markdown.php b/src/Illuminate/Mail/Markdown.php index 92ef6cd1fdde..ff099d10cf3c 100644 --- a/src/Illuminate/Mail/Markdown.php +++ b/src/Illuminate/Mail/Markdown.php @@ -8,7 +8,6 @@ use League\CommonMark\CommonMarkConverter; use League\CommonMark\Environment; use League\CommonMark\Ext\Table\TableExtension; -use Parsedown; use TijsVerkoyen\CssToInlineStyles\CssToInlineStyles; class Markdown From 344a3a383d184300173486c261893b4119a8bb3b Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Mon, 30 Dec 2019 07:56:44 -0600 Subject: [PATCH 3/5] fix test --- tests/Mail/MailMarkdownTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/Mail/MailMarkdownTest.php b/tests/Mail/MailMarkdownTest.php index 0bee16fc14af..21421200bb14 100644 --- a/tests/Mail/MailMarkdownTest.php +++ b/tests/Mail/MailMarkdownTest.php @@ -66,6 +66,7 @@ public function testParseReturnsParsedMarkdown() $result = $markdown->parse('# Something')->toHtml(); - $this->assertSame('

Something

', $result); + $this->assertSame('

Something

+', $result); } } From 2a0c55b0597d7738c34c6b791e48b2a4e217be35 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Mon, 30 Dec 2019 07:58:45 -0600 Subject: [PATCH 4/5] update composer files --- composer.json | 1 - src/Illuminate/Mail/composer.json | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index d5ea584299e1..1f413f34eeb7 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,6 @@ "doctrine/inflector": "^1.1", "dragonmantank/cron-expression": "^2.0", "egulias/email-validator": "^2.1.10", - "erusev/parsedown": "^1.7", "league/commonmark": "^1.1", "league/commonmark-ext-table": "^2.1", "league/flysystem": "^1.0.8", diff --git a/src/Illuminate/Mail/composer.json b/src/Illuminate/Mail/composer.json index a0254a722b5b..e29ab4d0e211 100755 --- a/src/Illuminate/Mail/composer.json +++ b/src/Illuminate/Mail/composer.json @@ -16,7 +16,8 @@ "require": { "php": "^7.2", "ext-json": "*", - "erusev/parsedown": "^1.7", + "league/commonmark": "^1.1", + "league/commonmark-ext-table": "^2.1", "illuminate/container": "^6.0", "illuminate/contracts": "^6.0", "illuminate/support": "^6.0", From a68d163379afeff1cd5b71bafc4ddf43c409c5fc Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Mon, 30 Dec 2019 08:04:17 -0600 Subject: [PATCH 5/5] fix test --- tests/Mail/MailMarkdownTest.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/Mail/MailMarkdownTest.php b/tests/Mail/MailMarkdownTest.php index 21421200bb14..7ad78c8d7b24 100644 --- a/tests/Mail/MailMarkdownTest.php +++ b/tests/Mail/MailMarkdownTest.php @@ -66,7 +66,6 @@ public function testParseReturnsParsedMarkdown() $result = $markdown->parse('# Something')->toHtml(); - $this->assertSame('

Something

-', $result); + $this->assertSame("

Something

\n", $result); } }