---+ Package =TWiki::Users::BaseUserMapping= 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. The BaseMapper provides support for a small number of predefined users. No registration - this is a read only usermapper. It uses the mapper prefix 'BaseUserMapping_'. ---+++!! Users * TWikiAdmin - uses the password that was set in Configure (IF its not null) * TWikiGuest * UnknownUser * TWikiContributor - 1 Jan 2005 * TWikiRegistrationAgent - 1 Jan 2005 ---+++!! Groups * $TWiki::cfg{SuperAdminGroup} * TWikiBaseGroup %TOC% ---++ ClassMethod *new* ($session) Construct the BaseUserMapping object ---++ ObjectMethod *finish* () Break circular references. ---++ ObjectMethod *loginTemplateName* () -> templateFile allows UserMappings to come with customised login screens - that should preffereably only over-ride the UI function ---++ ObjectMethod *handlesUser* ($cUID,$login,$wikiname) -> $boolean See baseclass for documentation. In the BaseUserMapping case, we know all the details of the users we specialise in. ---++ ObjectMethod *login2cUID* ($login) -> $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) ---++ ObjectMethod *getLoginName* ($cUID) -> login converts an internal cUID to that user's login (undef on failure) ---++ ObjectMethod *getWikiName* ($cUID) -> wikiname Map a canonical user name to a wikiname ---++ ObjectMethod *userExists* ($user) -> $boolean Determine if the user already exists or not. ---++ ObjectMethod *eachUser* () -> listIteratorofcUIDs See baseclass for documentation. ---++ ObjectMethod *eachGroupMember* ($group) -> listIteratorofcUIDs See baseclass for documentation. The basemapper implementation assumes that there are no nested groups in the basemapper. ---++ ObjectMethod *isGroup* ($name) -> boolean See baseclass for documentation. ---++ ObjectMethod *eachGroup* () -> ListIteratorofgroupnames See baseclass for documentation. ---++ ObjectMethod *eachMembership* ($cUID) -> ListIteratorofgroupsthisuserisin See baseclass for documentation. ---++ ObjectMethod *isAdmin* ($cUID) -> $boolean True if the user is an admin * is a member of the $TWiki::cfg{SuperAdminGroup} ---++ ObjectMethod *getEmails* ($name) -> @emailAddress If $name is a cUID, return their email addresses. If it is a group, return the addresses of everyone in the group. ---++ ObjectMethod *getUserData* ($cUID) -> $dataRef Return a reference to an array of hashes with user data, used to manage users. Each item is a hash with: * ={name}= - name of field, such as "email" * ={title}= - title of field, such as "E-mail" * ={value}= - value of field, such as "jimmy@example.com" * ={type}= - type of field: =text=, =password=, =checkbox=, =label= * ={size}= - size of field, such as =40= * ={note}= - comment note, if any User management forms can be build dynamically from this data structure. Each password manager may return a different set of fields. ---++ ObjectMethod *findUserByWikiName* ($wikiname) -> listofcUIDsassociatedwiththatwikiname See baseclass for documentation. ---++ ObjectMethod *checkPassword* ($login,$passwordU) -> $boolean Finds if the password is valid for the given user. Returns 1 on success, undef on failure. ---++ ObjectMethod *setPassword* ($cUID,$newPassU,$oldPassU) -> $boolean If the $oldPassU matches matches the user's password, then it will replace it with $newPassU. If $oldPassU is not correct and not 1, will return 0. If $oldPassU is 1, will force the change irrespective of the existing password, adding the user if necessary. Otherwise returns 1 on success, undef on failure. ---++ ObjectMethod *passwordError* () -> $string returns a string indicating the error that happened in the password handlers TODO: these delayed error's should be replaced with Exceptions. returns undef if no error