feat(hyperlinking): hyperlinking URLs in the channel descriptions (#304)

* feat(hyperlinking): hyperlinking URLs in the channel descriptions

* fix(hyperlinking): fixed url detection

* fix(hyperlinking): purify channel descriptions to prevent XSS vulnerability
This commit is contained in:
Amir 2021-07-24 19:47:12 +04:30 committed by GitHub
parent 46aa2cac56
commit 9068564500
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -4,7 +4,7 @@
<div v-if="channel" v-show="!channel.error">
<h1 class="uk-text-center"><img height="48" width="48" v-bind:src="channel.avatarUrl" />{{ channel.name }}</h1>
<img v-if="channel.bannerUrl" v-bind:src="channel.bannerUrl" style="width: 100%" loading="lazy" />
<p style="white-space: pre-wrap">{{ channel.description }}</p>
<p style="white-space: pre-wrap"><span v-html="purifyHTML(urlify(channel.description))"></span></p>
<button
v-if="authenticated"

View File

@ -158,6 +158,13 @@ const mixin = {
timeAgo(time) {
return timeAgo.format(time);
},
urlify(string) {
const regex = /(((https?:\/\/)|(www\.))[^\s]+)/g;
if (!string) return '';
return string.replace(regex, (url) => {
return `<a class="uk-button uk-button-text" href="${url}" target="_blank">${url}</a>`
})
}
},
computed: {
backgroundColor() {