Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

权限验证 API 规范及功能需求收集 #35

Open
IceCream-QAQ opened this issue Sep 6, 2021 · 0 comments
Open

权限验证 API 规范及功能需求收集 #35

IceCream-QAQ opened this issue Sep 6, 2021 · 0 comments
Labels
大饼 相对于饼而言,它获得实现的时间要稍晚。 需求 一个新的功能建议 需要补充信息 需要提供更多信息

Comments

@IceCream-QAQ
Copy link
Member

IceCream-QAQ commented Sep 6, 2021

提供快速确定好友,临时会话目标,群成员的权限,同时允许更多精细化的操作方式。

对于受检查目标

目标具有的权限区分应该更加细腻。
应该按照不同场景,区分目标拥有不同的权限列表。
同一个 ID 下,一个人应在好友状态,群聊状态,临时会话状态拥有不同的权限。
同时不同群中同一个人拥有的权限也应该是不同的。

权限组

一个权限组为一组权限的集合。
同时权限组有具体的生效范围。
一个权限组可以仅在某个群生效,也可以在多个群生效,也可以在全部群同时生效。
同时也可以在好友私聊和临时会话中同时生效。
一个目标,允许有多个权限组。
但是同生效范围仅允许有一个权限组。
一个权限组可以继承自另外一个权限组,继承其权限和生效范围。

默认权限组

对于群内提供一些默认权限组。

群成员组

所有群成员都会被默认添加进本组。
也是理论上最基础的用户组。

管理员组

继承自群成员组。
所有管理员会被自动添加进本组。
当目标失去管理员身份时,会被自动移出本组,并移动至群成员组。
如果目标拥有其他权限组,如若权限组小于管理员组级别,则会自动移动至管理员组。

群主组

继承自管理员组
群主会被自动添加进本组。
当群主失去群主资格的时候会被自动移出本组。

私聊

临时会话组

TODO

好友组

继承自临时会话组

权限名

权限名不限制格式,但多级权限将使用 ”.“ 分割。
如授予用户上级权限,则代表用户可拥有其所有子权限。
举例:当用户拥有 moe.chat 权限时,可正常使用 moe.chat.sendMessage 权限的指令。

API

权限操作

对目标

应当为 Contact 提供
boolean hasPermission(String permissionName)
方法来确定目标用户是否有具体权限。

应当为 Contact 提供
boolean addPermission(String permissionName)
方法来为目标用户新增具体权限。

应当为 Contact 提供
boolean delPermission(String permissionName)
方法来为目标用户移除具体权限。

应当为 Contact 提供
boolean moveToPermissionGroup(String groupName)
方法来确定来将目标移动至某一权限组。

对权限组

TODO

Controller

应当为 Controller Action 提供 @PermissionCheck 注解用以提供权限检查。

如果有什么更好的想法与操作方式,或者优化设计思路,请回复。

@IceCream-QAQ IceCream-QAQ added 大饼 相对于饼而言,它获得实现的时间要稍晚。 需求 一个新的功能建议 需要补充信息 需要提供更多信息 labels Sep 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
大饼 相对于饼而言,它获得实现的时间要稍晚。 需求 一个新的功能建议 需要补充信息 需要提供更多信息
Projects
None yet
Development

No branches or pull requests

1 participant