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 攻击.

      • 可用的 html 标签和属性值看这里.
      • 可用的 css 属性看这里.
      • 总结一下, 就是基本只能改文字大小 / 颜色 / 字体 / 对齐, 改变图片尺寸, div 指定一下 id / class.
    • 如需分栏显示, 可以使用以下代码:

      <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注册用户的权限, 这个设置才有意义.
  • 任意用户都可以加入此域:
    • 跟刚才的类似, 需要配合下边的角色分配使用, 控制权限.
  • 任意用户都可以通过邀请码加入此域:
    • 配合较为封闭的适用场景, 可以减少大量人工审核工作.

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属性, 原有的组员会被清空, 请谨慎设置. 顺便, 创建用户时, 无法设置域角色(注册时批量设置域角色的场景: 组织临时比赛可能会需要批量注册参赛人, 而且希望参赛人都只有受限的权限).

posted @ 2023-12-22 13:04  Bowen404  阅读(1289)  评论(0编辑  收藏  举报