HydroOJ 从入门到入土(11) 管理域-设置详解
域权限相对于系统权限, 更加细致. 功能上能玩出的花样更多, 但有些设置可能会带来较高的潜在风险, 小心处理.
管理域
功能中, 主要有属性
和访问控制
两大类.
一. 属性
1. 管理域
管理域标签中, 是 2 块域信息显示面板.
- 上边是首页的公告板
- 公告板由控制面板中的
bulletin: true
控制是否显示, 在编辑域资料
的公告
里修改.
- 公告板由控制面板中的
- 下边是信息栏
- 头像在
编辑域资料
的avatar
里修改. - 名称在
编辑域资料
的名称
里修改. - 所有者, 如果是默认的域(system), 则为
1
号用户, 其他的为创建者. 如需修改1
号用户信息, 需要进数据库修改.- 注意⚠️, 不要试图通过管理员的
切换账户
功能进入1
号用户, 因为此用户默认没有人权
(PRIV_USER_PROFILE), 所以会反复提示未登录. 如果出现, 可以在域名后手动输入/login
进入登陆界面重新登陆. - 如果不想进入数据库, 就想用管理员修改
1
号账户的头像, 可以先在控制面板中给1
号用户人权
, 然后再切换, 再改头像. 记得修改完在把权限撤销. 此方法仅限于改头像.
- 注意⚠️, 不要试图通过管理员的
- 初始化讨论结点
- 注意⚠️, 国内对内容管理是零容忍态度, 建议没有 7x24h 审核能力的公开 oj, 不要开启讨论板块. 参考博客园21 年因为多年前的内容被罚几十万的故事.
- 讨论结点类似于 tag 或者分类, 或者板块, 不初始化无法使用讨论功能.
- 讨论节点在
控制面板
-系统设置
-discussion.nodes
里边设置.
- 头像在
2. 编辑域资料
-
名称
-
avatar:
- 支持 Gravatar.
- 如需使用自定义图片, 可以用
url: /xxx.png
的方法实现. 这个/
对应的是/root/.hydro/static
文件夹, 或者是任意插件的public
目录(执行插件时自动复制public
所有文件到static
).
-
允许引用该域题目的域(* 表示所有域均允许):
- 哪些域可以从这个域复制题目, 一般就填
*
就行.
- 哪些域可以从这个域复制题目, 一般就填
-
公告:
-
这里虽然使用了Markdown, 但是不是所有的语法都支持. 同时, 出于安全考虑, 使用了
safe
白名单防止 xss 攻击. -
如需分栏显示, 可以使用以下代码:
<div class="row"> <div class="medium-6 columns"> ``` aaa ``` </div><div class="medium-6 columns"> ``` output ``` </div></div>
-
-
域内允许使用的提交语言:
- 如果用不到那么多的小众语言, 可以设置的简单点, 比如
C++14
,C++14(O2)
,Python
,Java
等, 减少选择切换时的眼花缭乱.
- 如果用不到那么多的小众语言, 可以设置的简单点, 比如
3. 加域申请
- 对于默认的域(system), 注册的用户会自动进入该域, 成为
default
权限的用户, 不需要手动添加. 所以要管理默认用户权限, 只需要去管理权限
里修改default
组的权限即可. - 对于其他用户创建的域, 有以下 4 种设置:
方法
,角色分配
,过期
,邀请码
. 以下详细说明.
3.1 方法:
- 没有用户可以自助加入此域:
- 注意, 这是一个比较迷惑的说法. 事实上, 所有在 oj 注册了的用户, 在任何域都是
default
权限. 所有未登录用户, 都是guest
权限. - 所以针对注册用户, 希望将此域改为私有的话, 需要先将
default
的用户权限改为不能查看此域
, 这里才会有用. - 需要配合下边的
角色分配
使用, 给加入域的用户一些不同于default
注册用户的权限, 这个设置才有意义.
- 注意, 这是一个比较迷惑的说法. 事实上, 所有在 oj 注册了的用户, 在任何域都是
- 任意用户都可以加入此域:
- 跟刚才的类似, 需要配合下边的
角色分配
使用, 控制权限.
- 跟刚才的类似, 需要配合下边的
- 任意用户都可以通过邀请码加入此域:
- 配合较为封闭的适用场景, 可以减少大量人工审核工作.
3.2 角色分配
加入之后自动获得的身份.
前置: 需要先在管理角色
中添加好角色, 并在管理权限
中设置好相应角色权限.
3.3 过期
安全性设置. 以保存设置时刻为基准, 过期后,用户将不能加入此域。
3.4 邀请码
配合方法 3 使用. 平衡安全性和管理成本.
二. 访问控制
1. 管理角色
-
内置了 3 种角色
guest
,default
,root
, 分别对应于未登录用户
,已登录用户
,域管理员
用户. 这三个角色都不可删除. -
右上角可以点击创建角色, 会显示
用户定义的角色: xxx
, 可以删除. -
新创建的角色默认跟
default
的权限一样, 可以随后在管理权限
中修改. -
旁边的
用户
, 指的是用户数量, 不是用户uid
2. 管理用户
- 需要手动一个一个添加并设置权限.
- 在右侧
角色
的下拉列表中, 更改角色之后会直接生效, 不需要点保存. - 如果将某个
角色
设置成default
权限, 则相当于将所选用户移出
, 即时生效, 刷新后能看到效果. - 如果多选, 可以批量修改权限.
- 总结: 用户角色设置主要面向各种不同级别的管理员, 或者特殊的比赛场景等等. 普通用户的设置应该去设置
default
权限.
3. 管理权限
用户组:
root
默认拥有所有权限, 不可更改guest
默认只有查看权限. 如果希望此域登录后查看, 可以关闭guest
用户的查看此域
权限.default
默认用户权限, 相对合理, 不太需要修改. 如果希望此域成为私有域, 可以关闭default
用户的查看此域
权限. 并使用.- 其他用户组: 配合
加域申请
和管理用户
使用.
具体权限:
大部分的权限顾名思义, 不再解释, 列几个不好理解的权限.
权限 | 解释 |
---|---|
显示域中用户的显示名 | 普通用户可以设置在此域中的显示名 , 相当于备注名, 如果具有此权限, 会以括号的形式显示在用户名 后边. |
展示 MOD 徽章 | 如果设置了自定义用户标签, 或者安装了插件徽章管理页面插件, 需要勾选显示 |
读取题目数据 | 可以直接下载题目数据的权限, 危险设置!!! |
读取记录的代码 | 和下边的通过后... 都指的是读取别人的代码的权限 |
创建题解 | 注意定期检查是否有不合适的内容 |
查看讨论 | 上边解释过, 可以直接把这个选项关掉, 用户界面的上方导航栏将不会出现讨论 这个板块. |
查看隐藏的比赛递交状态和成绩表 | 未参加比赛的情况下, 查看比赛递交状态和成绩表 |
查看隐藏的作业递交状态和成绩表 | 未参加作业的情况下, 可以在作业详情页查看作业题目, 但是看不到所有递交(没有按钮) |
4. 管理小组
-
创建好后, 名称不可在网页端修改, 需要进入数据库修改.
-
布置好后, 可以将
作业
或者比赛
分配给指定组, 别人就看不到了, 相当于班级管理. -
在
作业
或者比赛
分配组的时候, 需要打字输入, 不会弹出选项, 也不会进行校验, 所以这里可以设置的简单点, 不然打错会导致目标组员无法看到. -
创建用户时, 可以设置用户组, 也就是
group
属性, 就是这个组, 是一次性设置一批, 不是追加. 如果新建用户是设置了group
属性, 原有的组员会被清空, 请谨慎设置. 顺便, 创建用户时, 无法设置域角色(注册时批量设置域角色的场景: 组织临时比赛可能会需要批量注册参赛人, 而且希望参赛人都只有受限的权限).