Skip to content

Commit

Permalink
feat: 支持存储mailMd5
Browse files Browse the repository at this point in the history
  • Loading branch information
imaegoo committed Aug 7, 2020
1 parent 7e7b002 commit 87b5636
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Valine 魔改 隐私专版

## Instruction

这是根据 [xCss/Valine#336](https://github.com/xCss/Valine/issues/336) 的需求实现的魔改版本。

*发送请求中响应内容明文暴露评论者IP、邮箱等隐私内容*,博客主需要[手动更改字段权限](https://leancloud.cn/docs/data_security.html#hash723958571),然而,如果设置 mail 客户端不可见,将不会显示评论者的 Gravatar,转为显示默认头像。

该魔改版新增一个可见字段(`mailMd5`)存储 mail 的 MD5,并提供了脚本处理现有数据。

## Usage

1. 访问 LeanCloud 控制台 > 存储 > 结构化数据
2. 选择 Comment Class,分别点击 mail 和 ip 相应字段的下拉菜单,选择编辑
3. 勾选"客户端不可见"后,客户端发起查询的时候,返回的结果将不包含这个字段
4. 使用脚本处理现有数据
5. 替换博客的 Valine
10 changes: 6 additions & 4 deletions valine.js
Original file line number Diff line number Diff line change
Expand Up @@ -1107,6 +1107,7 @@
comment: "",
nick: "",
mail: "",
mailMd5: "",
link: "",
ua: y.default.ua,
url: "",
Expand Down Expand Up @@ -1328,10 +1329,10 @@
var t = m[b],
n = e.$el.find("." + b);
v[t] = n, n.on("input change blur propertychange", function(r) {
e.config.enableQQ && "blur" === r.type && "nick" === t && (isNaN(n.val()) ? y.default.store.get(h.QQCacheKey) && y.default.store.get(h.QQCacheKey).nick != n.val() && (y.default.store.remove(h.QQCacheKey), E.nick = n.val(), E.mail = "", E.QQAvatar = "") : (0, _.fetchQQFn)(n.val(), function(e) {
e.config.enableQQ && "blur" === r.type && "nick" === t && (isNaN(n.val()) ? y.default.store.get(h.QQCacheKey) && y.default.store.get(h.QQCacheKey).nick != n.val() && (y.default.store.remove(h.QQCacheKey), E.nick = n.val(), E.mail = "", E.mailMd5 = "", E.QQAvatar = "") : (0, _.fetchQQFn)(n.val(), function(e) {
var t = e.nick || n.val(),
r = e.qq + "@qq.com";
(0, y.default)(".vnick").val(t), (0, y.default)(".vmail").val(r), E.nick = t, E.mail = r, E.QQAvatar = e.pic
(0, y.default)(".vnick").val(t), (0, y.default)(".vmail").val(r), E.nick = t, E.mail = r, E.mailMd5 = (0, s.default)(r), E.QQAvatar = e.pic
})), "comment" === t ? d(n) : E[t] = y.default.escape(n.val().replace(/(^\s*)|(\s*$)/g, "")).substring(0, 40)
})
}();
Expand Down Expand Up @@ -1390,9 +1391,10 @@
i = t.get("ua"),
a = "";
i && !/ja/.test(e.config.lang) && (i = y.default.detect(i), a = '<span class="vsys">' + i.browser + " " + i.version + '</span> <span class="vsys">' + i.os + " " + i.osVersion + "</span>"), "*" === e.config.path && (a = '<a href="' + t.get("url") + '" class="vsys">' + t.get("url") + "</a>");
var mailMd5 = t.get("mailMd5") || (0, s.default)(t.get("mail"))
var l = t.get("link") ? /^https?\:\/\//.test(t.get("link")) ? t.get("link") : "http://" + t.get("link") : "",
c = l ? '<a class="vnick" rel="nofollow" href="' + l + '" target="_blank" >' + t.get("nick") + "</a>" : '<span class="vnick">' + t.get("nick") + "</span>",
u = T.hide ? "" : e.config.enableQQ && t.get("QQAvatar") ? '<img class="vimg" src="' + t.get("QQAvatar") + '" referrerPolicy="no-referrer"/>' : '<img class="vimg" src="' + (T.cdn + (0, s.default)(t.get("mail")) + T.params) + '">',
u = T.hide ? "" : e.config.enableQQ && t.get("QQAvatar") ? '<img class="vimg" src="' + t.get("QQAvatar") + '" referrerPolicy="no-referrer"/>' : '<img class="vimg" src="' + (T.cdn + mailMd5 + T.params) + '">',
d = u + '<div class="vh"><div class="vhead">' + c + " " + a + '</div><div class="vmeta"><span class="vtime" >' + (0, g.default)(t.get("insertedAt"), e.i18n) + '</span><span class="vat" data-vm-id="' + (t.get("rid") || t.id) + '" data-self-id="' + t.id + '">' + e.i18n.t("reply") + '</span></div><div class="vcontent" data-expand="' + e.i18n.t("expand") + '">' + (0, S.default)(t.get("comment")) + '</div><div class="vreply-wrapper" data-self-id="' + t.id + '"></div><div class="vquote" data-self-id="' + t.id + '"></div></div>';
o.html(d);
var p = o.find(".vat");
Expand Down Expand Up @@ -1479,7 +1481,7 @@
}), e.$loading.show(!0);
var t = AV.Object.extend(e.config.clazzName || "Comment"),
n = new t;
if (E.url = decodeURI(e.config.path), E.insertedAt = new Date, I.rid) {
if (E.url = decodeURI(e.config.path), E.insertedAt = new Date, E.mailMd5 = (0, s.default)(E.mail), I.rid) {
var r = I.pid || I.rid;
n.set("rid", I.rid), n.set("pid", r), E.comment = j.replace("<p>", '<p><a class="at" href="#' + r + '">' + I.at + "</a> , ")
}
Expand Down

0 comments on commit 87b5636

Please sign in to comment.