Skip to content

Commit

Permalink
API CHANGE: Add Security::ignore_disallowed_actions() to allow site f…
Browse files Browse the repository at this point in the history
…eatures to be disabled when permissions have failed, rather than redirecting to the log-in form. (Trac #7097)
  • Loading branch information
Sam Minnee committed Jun 15, 2012
1 parent 09e821e commit 3f01367
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
16 changes: 16 additions & 0 deletions security/Security.php
Expand Up @@ -158,6 +158,8 @@ static function set_default_message_set($messageSet) {
* to log in. * to log in.
*/ */
static function permissionFailure($controller = null, $messageSet = null) { static function permissionFailure($controller = null, $messageSet = null) {
self::set_ignore_disallowed_actions(true);

if(!$controller) $controller = Controller::curr(); if(!$controller) $controller = Controller::curr();


if(Director::is_ajax()) { if(Director::is_ajax()) {
Expand Down Expand Up @@ -864,4 +866,18 @@ public static function default_login_dest() {
return self::$default_login_dest; return self::$default_login_dest;
} }


protected static $ignore_disallowed_actions = false;

/**
* Set to true to ignore access to disallowed actions, rather than returning permission failure
* Note that this is just a flag that other code needs to check with Security::ignore_disallowed_actions()
* @param $flag True or false
*/
public static function set_ignore_disallowed_actions($flag) {
self::$ignore_disallowed_actions = $flag;
}
public static function ignore_disallowed_actions() {
return self::$ignore_disallowed_actions;
}

} }
4 changes: 3 additions & 1 deletion view/SSViewer.php
Expand Up @@ -612,7 +612,9 @@ public function __construct($templateList) {
if(Director::isDev() || Director::is_cli() || Permission::check('ADMIN')) { if(Director::isDev() || Director::is_cli() || Permission::check('ADMIN')) {
self::flush_template_cache(); self::flush_template_cache();
} else { } else {
return Security::permissionFailure(null, 'Please log in as an administrator to flush the template cache.'); if(!Security::ignore_disallowed_actions()) {
return Security::permissionFailure(null, 'Please log in as an administrator to flush the template cache.');
}
} }
} }


Expand Down

0 comments on commit 3f01367

Please sign in to comment.