public package Foswiki::AccessControlException

See PublishedAPI for packages intended to be used by Plugin and Contrib authors, or browse all packages.
See also Developing plugins, Developer's Bible, Technical Overview

public package Foswiki::AccessControlException is a Error

Exception used raise an access control violation. This exception has the following fields:
  • web - the web which was being accessed
  • topic - the topic being accessed (if any)
  • user - canonical username of the person doing the accessing. Use the methods of the Foswiki::Users class to get more information about the user.
  • mode - the access mode e.g. CHANGE, VIEW etc
  • reason a text string giving the reason for the refusal.

The exception may be thrown by plugins. If a plugin throws the exception, it will normally be caught and the browser redirected to a login screen (if the user is not logged in) or reported (if they are and just don't have access).

Throwing an exception

If your code needs to abort processing and inform the user (or the higher level caller) that some operation was denied, throw an AccessControlException.

    use Error qw(:try);
    use Foswiki::AccessControlException;
    ...
    unless (
        Foswiki::Func::checkAccessPermission(
            "VIEW", $session->{user}, undef, $topic, $web
        )
      )
    {
        throw Foswiki::AccessControlException( "VIEW", $session->{user}, $web,
            $topic,  $Foswiki::Meta::reason );
    }

Catching an exception

If you are calling a function that can detect and throw an access violation, and you would prefer to intercept the exception to perform some further processing, use the try { } catch { } structure.

    my $exception;
    try {
        Foswiki::Func::moveWeb( "Oldweb", "Newweb" );
    } catch Foswiki::AccessControlException with {
        $exception = shift;
    } otherwise {
        ...
    };

Notes

Since date indicates where functions or parameters have been added since the baseline of the API (TWiki release 4.2.3). The date indicates the earliest date of a Foswiki release that will support that function or parameter.

Deprecated date indicates where a function or parameters has been deprecated. Deprecated functions will still work, though they should not be called in new plugins and should be replaced in older plugins as soon as possible. Deprecated parameters are simply ignored in Foswiki releases after date.

Until date indicates where a function or parameter has been removed. The date indicates the latest date at which Foswiki releases still supported the function or parameter.

ClassMethod new($mode, $user, $web, $topic, $reason)

  • $mode - mode of access (view, change etc)
  • $user - canonical user name of user doing the accessing
  • $web - web being accessed
  • $topic - topic being accessed
  • $reason - string reason for failure

All the above fields are accessible from the object in a catch clause in the usual way e.g. $e->{web} and $e->{reason}

ObjectMethod stringify() → $string

Generate a summary string. This is mainly for debugging.

Topic revision: r1 - 18 May 2021, UnknownUser
This site is powered by FoswikiCopyright © by the contributing authors. All material on this site is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback