]> git.plutz.net Git - shellwiki/blobdiff - handlers/10_page.sh
acl scheme for [wiki] special pages
[shellwiki] / handlers / 10_page.sh
index 186b705715231a31c290e5d66dbaac1fe58cb6c9..f8cbbafaae166c9f141af7d548c18f3a5cba47b5 100755 (executable)
@@ -1,5 +1,8 @@
 #!/bin/sh
 
+. "$_EXEC/cgilite/file.sh"
+. "$_EXEC/css.sh"
+
 CACHE_AGE=${CACHE_AGE:-300}
 export MD_MACROS="$_EXEC/macros"
 export MD_HTML="${MD_HTML:-false}"
@@ -34,6 +37,8 @@ wiki() {
 
 case "${PATH_INFO}" in
   /"[.]"/*)
+    # usually some file related to theme
+    # let file server handle errors
     FILE "${_EXEC}/${PATH_INFO#/\[.\]}"
     return 0
     ;;
@@ -47,11 +52,19 @@ case "${PATH_INFO}" in
     theme_error 400
     return 0
     ;;
-  */\[*\]/*)
+  */\[*\]/*|*/\[*\])
+    # looks like some kind of handler
     return 1
     ;;
   */)
-    theme_page "${PATH_INFO}"
+    if [ ! "$(mdfile "$PATH_INFO")" ]; then
+      theme_error 404
+    elif ! acl_read "$PATH_INFO"; then
+      theme_error 403
+    else
+      PAGE_CSS="$(css "${PATH_INFO}")"
+      theme_page "${PATH_INFO}"
+    fi
     return 0
     ;;
 esac