3 # ACL_OVERRIDE="${ACL_OVERRIDE:-Admin:read,write}"
4 ACL_DEFAULT="${ACL_DEFAULT:-All:read${BR}Known:read,write}"
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"
37 n=20; while read -r head acl; do
38 if [ "$head" = "%acl" ]; then
39 acl_collection="${acl%${CR}}${BR}"
40 printf "%s\n" "${acl%${CR}}"
45 [ "$n" -eq 0 ] && break
49 printf '%s\n' "$ACL_DEFAULT"
53 local page="${1:-${PATH_INFO}}"
58 read|*,read,*|read,*|*,read)
59 acl="${acl%%:*}:read";;
60 *) acl="${acl%%:*}:";;
62 [ "$USER_NAME" ] && case $acl in
63 "Known:read") return 0;;
65 "+Known:read") return 0;;
66 "-Known:read") return 1;;
67 "@${USER_NAME}:read") return 0;;
68 "@${USER_NAME}:") return 1;;
69 "+@{$USER_NAME}:read") return 0;;
70 "-@{$USER_NAME}:read") return 1;;
73 "All:read") return 0;;
75 "+All:read") return 0;;
76 "-All:read") return 1;;
79 $(acl_collect "$page")
85 local page="${1:-${PATH_INFO}}"
90 write|*,write,*|write,*|*,write)
91 acl="${acl%%:*}:write";;
92 *) acl="${acl%%:*}:";;
94 [ "$USER_NAME" ] && case ${acl} in
95 "Known:write") return 0;;
97 "+Known:write") return 0;;
98 "-Known:write") return 1;;
99 "@${USER_NAME}:write") return 0;;
100 "@${USER_NAME}:") return 1;;
101 "+@{$USER_NAME}:write") return 0;;
102 "-@{$USER_NAME}:write") return 1;;
105 "All:write") return 0;;
107 "+All:write") return 0;;
108 "-All:write") return 1;;
111 $(acl_collect "$page")