权限系统
载入时
参见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: 其他: 谁都可见。
- 如果他都没拿到权限,那么
- 如果已经需要权限,那他进不去。
- 如果不需要权限,他可以进去。如果他名字出现了,他能够拿到权限。
- 如果他有权限了,那随意。
- 如果他都没拿到权限,那么