Foswiki::AccessControlException
internal 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.