From 17a986d9d054d7a8298a51cd9a44264e7ba97991 Mon Sep 17 00:00:00 2001 From: Karsten Heiken Date: Mon, 1 Aug 2011 10:40:37 +0200 Subject: [PATCH] Enable hooks and implement global login checking Controllers that have to be publicly available can be introduced in application/hooks/global.php --- application/config/config.sample.php | 2 +- application/config/hooks.php | 6 ++++ application/hooks/global.php | 41 ++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 application/hooks/global.php diff --git a/application/config/config.sample.php b/application/config/config.sample.php index 35e6a32..3010061 100644 --- a/application/config/config.sample.php +++ b/application/config/config.sample.php @@ -91,7 +91,7 @@ $config['charset'] = 'UTF-8'; | setting this variable to TRUE (boolean). See the user guide for details. | */ -$config['enable_hooks'] = false; +$config['enable_hooks'] = true; /* diff --git a/application/config/hooks.php b/application/config/hooks.php index a4ad2be..490a2c1 100755 --- a/application/config/hooks.php +++ b/application/config/hooks.php @@ -10,6 +10,12 @@ | */ +$hook['post_controller_constructor'] = array( + 'class' => '', + 'function' => 'check_login', + 'filename' => 'global.php', + 'filepath' => 'hooks' +); /* End of file hooks.php */ diff --git a/application/hooks/global.php b/application/hooks/global.php new file mode 100644 index 0000000..23c53b1 --- /dev/null +++ b/application/hooks/global.php @@ -0,0 +1,41 @@ + + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Check if the user is logged in. + * + * If the user is not logged in, he is redirected to the login screen. + * Controllers that have to be globally available can be added to the array + * $public_controllers. + */ +function check_login() { + + // whitelisted (publicly available) controllers + $public_controllers = array('auth'); + + $CI = & get_instance(); + if (!$CI->access->loggedIn() && !in_array($CI->router->class, $public_controllers)) { + redirect('auth/login'); + } +} \ No newline at end of file