之前的帖子中,和大家分享了HIVE的分布式黑名单以及如何通过HiveSQL数据库来查询黑名单一些相关的数据。
(图源 :pixabay)
不过在查询到一些黑名单相关信息后,我意识到其实对于普通用户而言,维护一个自己黑名单并无太大意义,不如直接在小本本上记下黑名单用户呢。
真正有意义的是DAPP或者应用的开发者,他们可以对根据黑名单来对一些用户的行为进行限制,或者反之,根据用户的行为来决定是否将其加入黑名单。
其实社区(Communities),也有一个黑名单功能,不过它并没有使用去中心化黑名单这个机制,而是使用了社区角色(Community Roles)来实现相关功能。
如果你是社区管理者(Owner、Admin、Moderator ),那么可以通过社区的Edit Roles入口来管理角色:
比如在我的测试社区中,会进入如下界面:
如果我们想把某个用户加入社区黑名单,那么点击Add User按钮,会弹出如下界面:
我们输入对应用户的id,然后选择对应的Role,其中Muted就是将其加入到社区黑名单啦。
我们可以通过这个功能,来屏蔽社区中不受欢迎的用户。实际上他还是可以在社区内发帖,但是发帖后会自动变灰,如果能加一个禁止黑名单用户在社区发帖,比如说加一个新角色blacklisted,那就完美啦。
好,写到这里,大家应该已经了解了社区黑名单的功能,以及如何使用他屏蔽不受欢迎的用户(当然了,只有所有者、管理员、版主才能进行这些操作)。
那么新问题来了,假设我被某个社区的某个管理者列为不受欢迎的用户(Muted),除了在相应的社区发帖测试,还有其它方法嘛?虽然Edit Roles入口管理角色时能看到角色列表,但那是管理员、版主们才有的特权啊。(咦,我发现一条捷径,不过我假装我没发现)。
或者更严重一点,假设我被N个社区标记为不受欢迎的用户(Muted),那么我如何知道都有哪个社区拉黑我了呢?
所以,是时候请出HiveSQL啦,其中CommunitiesRoles表,就是对应社区角色啦,比如查询oflyhigh.test都被哪些社区拉黑,使用如下语句即可:
SELECT * from CommunitiesRoles where Role = 'muted' and account = 'oflyhigh.test'
返回结果如下(原来我被这么多社区拉黑了呀?哭):
更进一步的话,我想查出这些社区的名字(否则看id,不知道到底是些啥社区啊?),那么SQL如下:
SELECT CommunitiesRoles.*, Communities.title
FROM CommunitiesRoles, Communities
WHERE CommunitiesRoles.Role = 'muted' AND CommunitiesRoles.account = 'oflyhigh.test' AND Communities.name = CommunitiesRoles.community;
返回结果如下:
怒,到底是谁(哪个管理员或者版主)把我加入了社区黑名单?咦,好像都是我自己干的。晕,这次怎么忘记了用刘美女 (@deanliu )做测试呢?失误失误呀。
(图源 :pixabay)
有关社区黑名单,就讲到这里啦,你学废了嘛?
有谁想进HIVE CN中文社区小黑屋的,请举手!🙋