权限系统

载入时

参见a_loadnames

1.0 有PERM_SYSOP则一切可见。否则:

  • 1.1 BM: SYSOPS: 需要PERM_SYSOP可见
  • 1.2 BM: BMS: 需要PERM_BOARDS可见
  • 1.3 BM: ZIXIAs: 需要PERM_SECANC可见(……)

显示时

参见a_menu

上层传入参数:是否有权限,是否需要权限,本层只会在此基础上增加。也就是说,一旦有权限则在下层都有;一旦需要权限则下层都需要。

2.0 如果本层标题内有BM:,则

  • 2.1 如果用户有PERM_BOARDS且出现在本层标题内,或者用户是SYSOP,则有权限
  • 2.2 否则如果需要权限并且没权限,则返回(退出本层)

3 接下来:如果本层标题有BM: BMS或者BM: SECRET或者BM: SYSOPS,则需要权限

注意,设置需要权限要在下一层才生效……

效果

综上,可以对不同的目录的效果进行分析:

  • BM: SYSOPS: 根据1.1,只有PERM_SYSOP的人可见。反正都是SYSOP了,啥都可以
  • BM: BMS: 根据1.2,只有PERM_BOARDS可见。
    • 但如果这人在一路上都没有拿到权限,那么
      • 如果上层需要权限,根据2.0以及2.2,他进不去。
      • 如果路上都不需要权限,他可以进去。之后根据2.0和2.1,对于有他名字的BM:,他可以进去并获得权限。对其他BM:,根据2.0和2.2,他进不去。对其他项目他可以进去。
    • 如果他路上拿到权限了,那么根据2.0以及2.2,他可以进去。根据3,从本层开始,接下来都需要权限。
  • BM: ZIXIAs: 根据1.3,只有PERM_SECANC可见,可见的都能进去。
  • BM: SECRET: 谁都可见。
    • 如果他一路上都没有拿到权限,那么
      • 如果上层需要权限,那根据2.0和2.2,他进不去。
      • 如果上层不需要,他可以进去,还是没权限,之后都要权限。根据2.0-2.2,他可以进去没有BM:的目录。对于有BM:的,如果他有PERM_BOARDS并且有名字出现,那么可以进去并获得权限,否则进不去。
    • 如果他有权限了,那就都可以进了。
  • BM: 其他: 谁都可见。
    • 如果他都没拿到权限,那么
      • 如果已经需要权限,那他进不去。
      • 如果不需要权限,他可以进去。如果他名字出现了,他能够拿到权限。
    • 如果他有权限了,那随意。