This is an old revision of the document!
Table of Contents
ondeniedlogin plugin
Compatible with DokuWiki
No compatibility info given!
This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.
Similar to showlogin, showlogin2
Download and Installation
Download and install the plugin using the Plugin Manager using the following URL.
Or copy paste this code into your lib/plugins/ondeniedlogin/action.php .
- action.php
<?php if(!defined('DOKU_INC')) die(); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once(DOKU_PLUGIN.'action.php'); class action_plugin_ondeniedlogin extends DokuWiki_Action_Plugin { function getInfo(){ return array( 'author' => 'Samuel Fischer', 'email' => 'sf@notomorrow.de', 'date' => '2009-04-21', 'name' => 'ondeniedlogin', 'desc' => 'redirects unknown users to a login form on denied requests', 'url' => 'http://www.dokuwiki.org/plugin:ondeniedlogin', ); } function register(Doku_Event_Handler $controller) { $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'ondeniedlogin'); } function ondeniedlogin(&$event, $param) { global $ACT, $INFO; if($ACT!='denied') return; if(!is_array($INFO['userinfo'])) $ACT = 'login'; } }
Patches
Show Search Page for Authenticated Users
This adds the following functionality to this plugin: When your ACLs allow someone to see some pages but maybe not the start page, this helps him because he gets some search hits instead of “Permission denied”…
- ondenied-search.patch
--- ondeniedlogin/action.php 2011-08-26 16:47:00.000000000 +0200 +++ ondeniedlogin/action.php 2011-08-26 16:54:23.000000000 +0200 @@ -26,6 +26,8 @@ if($ACT!='denied') return; if(!is_array($INFO['userinfo'])) $ACT = 'login'; + else + $ACT = 'search'; } }
Use Earlier Event
Some templates (e.g. dokuwiki) set html classes on outer elements describing the action. The TPL_ACT_RENDER event is too late to alter this. The change below switches to use ACTION_HEADERS_SEND, so immediately after DokuWiki sends the 403 permission denied header.
$controller->register_hook('ACTION_HEADERS_SEND', 'AFTER', $this, 'ondeniedlogin');