@usersandgroups = ( @{TWiki::Func::getListOfUsers()}, TWiki::Func::getListOfGroups() );
%spec - the identifying marks of the user. The following options are supported: wikiname - the wikiname of the user (web name optional, also supports Main)
login - login name of the user
email - email address of the user *returns an array of users*
my @pa = TWiki::Func::lookupUser( email => "pa@addams.org" ); my $ma = TWiki::Func::lookupUser( wikiname => "%MAINWEB%.MorticiaAddams" );
\@modes - list of access modes you are interested in; e.g. [ "VIEW","CHANGE" ]
$web - the web
$topic - if undef then the setting is taken as a web setting e.g. WEBVIEW. Otherwise it is taken as a topic setting e.g. TOPICCHANGE
\%acls is a hash indexed by user name (web.wikiname). This maps to a hash indexed by access mode e.g. VIEW, CHANGE etc. This in turn maps to a boolean; 0 for access denied, non-zero for access permitted.
my $acls = TWiki::Func::getACLs( [ 'VIEW', 'CHANGE', 'RENAME' ], $web, $topic );
foreach my $user ( keys %$acls ) {
if( $acls->{$user}->{VIEW} ) {
print STDERR "$user can view $web.$topic\n";
}
}
The \%acls object may safely be written to e.g. for subsequent use with setACLs.
Note topic ACLs are not the final permissions used to control access to a topic. Web level restrictions may apply that prevent certain access modes for individual topics.
WARNING when you use setACLs to set the ACLs of a web or topic, the change is not committed to the database until the current session exist. After setACLs has been called on a web or topic, the results of getACLS for that web/topic are undefined.
\@modes - list of access modes you want to set; e.g. [ "VIEW","CHANGE" ]
$web - the web
$topic - if undef, then this is the ACL for the web. otherwise it's for the topic.
\%acls - must be a hash indexed by user name (web.wikiname). This maps to a hash indexed by access mode e.g. VIEW, CHANGE etc. This in turn maps to a boolean value; 1 for allowed, and 0 for denied. See getACLs for an example of this kind of object.
Error::Simple will be thrown.
WARNING when you use setACLs to set the ACLs of a web or topic, the change is not committed to the database until the current session exist. After setACLs has been called on a web or topic, the results of getACLS for that web/topic are undefined.
if( TWiki::Func::isInGroup( "PopGroup" )) {
...
}
| Author: | TWiki:Main/CrawfordCurrie http://www.c-dot.co.uk |
| Version: | 11231 |
| Change History: | |
| 10558 | Now supports ACL stored in META:PREFERENCE |
| 9060 | Removed NOSEARCHALL handling from setACLs |
| 9046 | Was not deleting the old setting out of the file, just writing the new setting at the end. Not a killer, just untidy. |
| 8877 | Item1701 getting install right |
| 8856 | Item1682 Further improvements to the user access, include access to ACL lists (read and write) |
| 8847 | Item1670 didn't realise getAllGroups wasn't in TWiki4 |
| 8837 | Item1670 proof-of-concept demonstrator for functions for user data access from plugins, long overdue. |
| Copyright ©: | Crawford Currie http://c-dot.co.uk 2006 |
| License: | GNU LGPL |
| Dependencies: | None |
| Home: | http://TWiki.org/cgi-bin/view/Plugins/FuncUsersContrib |
| Feedback: | http://TWiki.org/cgi-bin/view/Plugins/FuncUsersContribDev |
Please note that this site is a content mirror of the BNL USATLAS TWiki. To edit the content of this page, click the Edit this page button at the top of the page and log in with your BNL USATLAS account.