Package TWiki::UserMapping
This is a virtual base class (a.k.a an interface) for all user mappers. It is
not useable as a mapping in TWiki - use the BaseUserMapping for default
behaviour.
User mapping is the process by which TWiki maps from a username (a login name)
to a display name and back. It is also where groups are maintained.
See TWiki::Users::BaseUserMapping and TWiki::Users::TWikiUserMapping for
the default implementations of this interface.
If you want to write a user mapper, you will need to implement the methods
described in this class.
User mappings work by mapping both login names and display names to a
canonical user id. This user id is composed from a prefix that defines
the mapper in use (something like 'BaseUserMapping_' or 'LdapUserMapping_')
and a unique user id that the mapper uses to identify the user.
The null prefix is reserver for the TWikiUserMapping for compatibility
with old TWiki releases.
Note: in all the following documentation, $user
refers to a
canonical user id.
On this page:
- PROTECTED ClassMethod new ($session, $mapping_id)
- ObjectMethod finish ()
- ObjectMethod loginTemplateName () -> $templateFile
- ObjectMethod supportsRegistration () -> $boolean
- ObjectMethod handlesUser ($cUID,$login,$wikiname) -> $boolean
- ObjectMethod getCanonicalUserID ($login,$dontcheck) -> cUID
- ObjectMethod getLoginName ($cUID) -> login
- ObjectMethod addUser ($login,$wikiname,$password,$emails) -> cUID
- ObjectMethod removeUser ($user) -> $boolean
- ObjectMethod getWikiName ($cUID) -> wikiname
- ObjectMethod userExists ($cUID) -> $boolean
- ObjectMethod eachUser () -> listIteratorofcUIDs
- ObjectMethod eachGroupMember ($group) -> TWiki::ListIteratorofcUIDs
- ObjectMethod isGroup ($user) -> boolean
- ObjectMethod eachGroup () -> ListIteratorofgroupnames
- ObjectMethod eachMembership ($cUID) -> ListIteratorofgroupsthisuserisin
- ObjectMethod isAdmin ($user) -> $boolean
- ObjectMethod isInGroup ($user,$group,$scanning) -> bool
- ObjectMethod findUserByEmail ($email) -> \@users
- ObjectMethod getEmails ($user) -> @emailAddress
- ObjectMethod setEmails ($user,@emails)
- ObjectMethod findUserByWikiName ($wikiname) -> listofcUIDsassociatedwiththatwikiname
- ObjectMethod checkPassword ($userName,$passwordU) -> $boolean
- ObjectMethod setPassword ($user,$newPassU,$oldPassU) -> $boolean
- ObjectMethod passwordError () -> $string
- ObjectMethod ASSERT_IS_CANONICAL_USER_ID ($user_id) -> $boolean
- ObjectMethod ASSERT_IS_USER_LOGIN_ID ($user_login) -> $boolean
- ObjectMethod ASSERT_IS_USER_DISPLAY_NAME ($user_display) -> $boolean
PROTECTED ClassMethod new ($session, $mapping_id)
Construct a user mapping object, using the given mapping id.ObjectMethod finish ()
Break circular references.ObjectMethod loginTemplateName () -> $templateFile
Allows UserMappings to come with customised login screens - that should preferably only over-ride the UI function Default is "login"ObjectMethod supportsRegistration () -> $boolean
Return true if the UserMapper supports registration (ie can create new users) Default is falseObjectMethod handlesUser ($cUID,$login,$wikiname) -> $boolean
Called by the TWiki::Users object to determine which loaded mapping to use for a given user (must be fast). Default is falseObjectMethod getCanonicalUserID ($login,$dontcheck) -> cUID
Convert a login name to the corresponding canonical user name. The canonical name can be any string of 7-bit alphanumeric and underscore characters, and must correspond 1:1 to the login name. (undef on failure) (if dontcheck is true, return a cUID for a nonexistant user too - used for registration) Subclasses must implement this method.ObjectMethod getLoginName ($cUID) -> login
Converts an internal cUID to that user's login (undef on failure) Subclasses must implement this method.ObjectMethod addUser ($login,$wikiname,$password,$emails) -> cUID
Add a user to the persistant mapping that maps from usernames to wikinames and vice-versa, via a canonical user id (cUID). $login and $wikiname must be acceptable to $TWiki::cfg{NameFilter}. $login must always be specified. $wikiname may be undef, in which case the user mapper should make one up. This function must return a canonical user id that it uses to uniquely identify the user. This can be the login name, or the wikiname if they are all guaranteed unigue, or some other string consisting only of 7-bit alphanumerics and underscores. If you fail to create a new user (for eg your Mapper has read only access),throw Error::Simple('Failed to add user: '.$error);where $error is a descriptive string. Throws an Error::Simple if user adding is not supported (the default).
ObjectMethod removeUser ($user) -> $boolean
Delete the users entry from this mapper. Throws an Error::Simple if user removal is not supported (the default).ObjectMethod getWikiName ($cUID) -> wikiname
Map a canonical user name to a wikiname. Returns the $cUID by default.ObjectMethod userExists ($cUID) -> $boolean
Determine if the user already exists or not. Whether a user exists or not is determined by the password manager. Subclasses must implement this method.ObjectMethod eachUser () -> listIteratorofcUIDs
Called from TWiki::Users. See the documentation of the corresponding method in that module for details. Subclasses must implement this method.ObjectMethod eachGroupMember ($group) -> TWiki::ListIteratorofcUIDs
Called from TWiki::Users. See the documentation of the corresponding method in that module for details. Subclasses must implement this method.ObjectMethod isGroup ($user) -> boolean
Called from TWiki::Users. See the documentation of the corresponding method in that module for details. Subclasses must implement this method.ObjectMethod eachGroup () -> ListIteratorofgroupnames
Called from TWiki::Users. See the documentation of the corresponding method in that module for details. Subclasses must implement this method.ObjectMethod eachMembership ($cUID) -> ListIteratorofgroupsthisuserisin
Called from TWiki::Users. See the documentation of the corresponding method in that module for details. Subclasses must implement this method.ObjectMethod isAdmin ($user) -> $boolean
True if the user is an administrator. Default is falseObjectMethod isInGroup ($user,$group,$scanning) -> bool
Called from TWiki::Users. See the documentation of the corresponding method in that module for details. Default is falseObjectMethod findUserByEmail ($email) -> \@users
-
$email
- email address to look up