3 # ACL_OVERRIDE="${ACL_OVERRIDE:-Admin:read,write}"
4 ACL_DEFAULT="${ACL_DEFAULT:-Known:read,write${BR}All:read}"
10 local path="${1:-${PATH_INFO}}"
11 # Get directory part of PATH_INFO
12 local path="${path%/*}/./"
13 local pagefile head acl
15 if [ "$acl_cachepath" = "$path" ]; then
16 printf '%s\n' "$ACL_OVERRIDE" "$acl_collection" "$ACL_DEFAULT"
23 printf '%s\n' "$ACL_OVERRIDE"
26 [ "$path" = / ] && break
29 if [ -f "$_DATA/pages/$path/#page.md" ]; then
30 pagefile="$_DATA/pages/$path/#page.md"
31 elif [ -f "$_EXEC/pages/$path/#page.md" ]; then
32 pagefile="$_EXEC/pages/$path/#page.md"
39 /^%acl([\t ]+.*)?$/bACL;
46 /^(%[ \t]+|%acl[ \t]+|[ \t]+)[^ \t\r]+$/bACL;
47 /^(%[ \t]*|%acl[ \t]*)$/bACL;
51 acl_collection="${acl_collection}${acl}${BR}"
54 printf '%s\n' "$ACL_DEFAULT"
58 local page="${1:-${PATH_INFO}}"
63 read|*,read,*|read,*|*,read)
64 acl="${acl%%:*}:read";;
65 *) acl="${acl%%:*}:";;
67 [ "$USER_NAME" ] && case $acl in
68 "Known:read") return 0;;
70 "+Known:read") return 0;;
71 "-Known:read") return 1;;
72 "@${USER_NAME}:read") return 0;;
73 "@${USER_NAME}:") return 1;;
74 "+@{$USER_NAME}:read") return 0;;
75 "-@{$USER_NAME}:read") return 1;;
78 "All:read") return 0;;
80 "+All:read") return 0;;
81 "-All:read") return 1;;
84 $(acl_collect "$page")
90 local page="${1:-${PATH_INFO}}"
95 write|*,write,*|write,*|*,write)
96 acl="${acl%%:*}:write";;
97 *) acl="${acl%%:*}:";;
99 [ "$USER_NAME" ] && case ${acl} in
100 "Known:write") return 0;;
102 "+Known:write") return 0;;
103 "-Known:write") return 1;;
104 "@${USER_NAME}:write") return 0;;
105 "@${USER_NAME}:") return 1;;
106 "+@{$USER_NAME}:write") return 0;;
107 "-@{$USER_NAME}:write") return 1;;
110 "All:write") return 0;;
112 "+All:write") return 0;;
113 "-All:write") return 1;;
116 $(acl_collect "$page")