joint-online-judge / horse

The new generation of JOJ Backend.
https://joint-online-judge.github.io/horse/
MIT License
5 stars 3 forks source link

提案:为Domain增加tag字段 #71

Closed nichujie closed 2 years ago

nichujie commented 2 years ago

Discussed in https://github.com/joint-online-judge/horse/discussions/69

Originally posted by **nichujie** November 26, 2021 ## 提案背景 ![image](https://user-images.githubusercontent.com/17191827/143507883-39d1af14-813b-4a17-9b5b-fc96b4f105af.png) 目前clone problem和problem group相关功能的权限问题比较模糊,例如: * 在domain A中有clone权限的人进行跨domain clone时,究竟可以看见哪些题: * 不可以是所有题:假设Eve为VG101的TA,它正在上VE482,它尝试克隆VE482的题目到自己的domain并获取了数据集 * 单次clone授权:难以实现,找谁审批? * 谁可以修改一个problem group;如果可以修改,哪些题可以被加入这个group? ## 提案内容 以上权限问题可以通过为domain增加一个tag字段来解决(名字待定)。该字段为可选的限制长度的varchar,建议限制为32以内,建立索引。 具体维护和使用: * 全站Root在创建/修改domain时可以修改tag字段 * tag字段不进行额外的校验;理论上可以为任何字符,鼓励ASCII * tag相同的domain认定为同一派系,可以互相clone或者互通problem group * 当属于某组别的一个domain被删除了tag,不产生任何副作用(已经被加入/克隆的problem不受影响) ## 总结 增加一个varchar字段,仅在某些情况下用于校验;几乎无副作用
tc-imba commented 2 years ago

added in e2e4bb01011a352ef3d0ff240b0e39396457971a, not completely tested