aboutsummaryrefslogtreecommitdiff
path: root/src/services/entity_normalizer/entity_normalizer.service.js
diff options
context:
space:
mode:
authorShpuld Shpludson <shp@cock.li>2021-01-05 08:09:09 +0000
committerShpuld Shpludson <shp@cock.li>2021-01-05 08:09:09 +0000
commit3e7d1fbf23b5ca1b382381b49affc481404137da (patch)
treee4c7dde4130783066d103512869118f60f569dae /src/services/entity_normalizer/entity_normalizer.service.js
parentbc23266d7087dca0653097fe48ae9eba3f6f55b8 (diff)
parentef6e2087aeff1cf76cd4e5a3f04685e228c169d4 (diff)
Merge branch 'fix/punycode-screen-names' into 'develop'
fix #1036 convert screen name to unicode with punycode Closes #1036 See merge request pleroma/pleroma-fe!1320
Diffstat (limited to 'src/services/entity_normalizer/entity_normalizer.service.js')
-rw-r--r--src/services/entity_normalizer/entity_normalizer.service.js14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js
index b1e68df5..206e6281 100644
--- a/src/services/entity_normalizer/entity_normalizer.service.js
+++ b/src/services/entity_normalizer/entity_normalizer.service.js
@@ -1,6 +1,7 @@
import escape from 'escape-html'
import parseLinkHeader from 'parse-link-header'
import { isStatusNotification } from '../notification_utils/notification_utils.js'
+import punycode from 'punycode.js'
/** NOTICE! **
* Do not initialize UI-generated data here.
@@ -197,6 +198,19 @@ export const parseUser = (data) => {
output.rights = output.rights || {}
output.notification_settings = output.notification_settings || {}
+ // Convert punycode to unicode
+ if (output.screen_name.includes('@')) {
+ const parts = output.screen_name.split('@')
+ console.log(parts)
+ let unicodeDomain = punycode.toUnicode(parts[1])
+ if (unicodeDomain !== parts[1]) {
+ // Add some identifier so users can potentially spot spoofing attempts:
+ // lain.com and xn--lin-6cd.com would appear identical otherwise.
+ unicodeDomain = '🌏' + unicodeDomain
+ output.screen_name = [parts[0], unicodeDomain].join('@')
+ }
+ }
+
return output
}