001: /**********************************************************************************
002: * $URL: https://source.sakaiproject.org/svn/user/tags/sakai_2-4-1/user-api/api/src/java/org/sakaiproject/user/api/UserDirectoryProvider.java $
003: * $Id: UserDirectoryProvider.java 9195 2006-05-09 19:52:44Z ggolden@umich.edu $
004: ***********************************************************************************
005: *
006: * Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation.
007: *
008: * Licensed under the Educational Community License, Version 1.0 (the "License");
009: * you may not use this file except in compliance with the License.
010: * You may obtain a copy of the License at
011: *
012: * http://www.opensource.org/licenses/ecl1.php
013: *
014: * Unless required by applicable law or agreed to in writing, software
015: * distributed under the License is distributed on an "AS IS" BASIS,
016: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: * See the License for the specific language governing permissions and
018: * limitations under the License.
019: *
020: **********************************************************************************/package org.sakaiproject.user.api;
021:
022: import java.util.Collection;
023:
024: /**
025: * <p>
026: * UserDirectoryProvider feeds external user information to the UserDirectoryService.
027: * </p>
028: */
029: public interface UserDirectoryProvider {
030: /**
031: * Authenticate a user / password. If the user edit exists it may be modified, and will be stored if...
032: *
033: * @param eid
034: * The user eid.
035: * @param edit
036: * The UserEdit matching the eid to be authenticated (may be updated by the provider).
037: * @param password
038: * The password.
039: * @return true if authenticated, false if not.
040: */
041: boolean authenticateUser(String eid, UserEdit edit, String password);
042:
043: /**
044: * Whether to check provider or internal data first when authenticating a user
045: *
046: * @param eid
047: * The user eid.
048: * @return true if provider data is checked first, false if otherwise
049: */
050: boolean authenticateWithProviderFirst(String eid);
051:
052: /**
053: * Does the provider wish for the service to create an internal User record for this user?
054: *
055: * @param eid
056: * The user eid.
057: */
058: boolean createUserRecord(String eid);
059:
060: /**
061: * Remove any authentication traces for the current user / request
062: */
063: void destroyAuthentication();
064:
065: /**
066: * Find a user object who has this email address. Update the object with the information found.
067: *
068: * @param email
069: * The email address string.
070: * @return true if the user object was found and information updated, false if not.
071: */
072: boolean findUserByEmail(UserEdit edit, String email);
073:
074: /**
075: * Access a user object. Update the object with the information found.
076: *
077: * @param edit
078: * The user object (eid is set) to fill in.
079: * @return true if the user object was found and information updated, false if not.
080: */
081: boolean getUser(UserEdit edit);
082:
083: /**
084: * Access a collection of UserEdit objects; if the user is found, update the information, otherwise remove the UserEdit object from the collection.
085: *
086: * @param users
087: * The UserEdit objects (with eid set) to fill in or remove.
088: */
089: void getUsers(Collection users);
090:
091: /**
092: * Will this provider update user records on successfull authentication? If so, the UserDirectoryService will cause these updates to be stored.
093: *
094: * @return true if the user record may be updated after successfull authentication, false if not.
095: */
096: boolean updateUserAfterAuthentication();
097:
098: /**
099: * See if a user by this eid is known to the provider.
100: *
101: * @param eid
102: * The user eid string.
103: * @return true if a user by this id exists, false if not.
104: */
105: boolean userExists(String eid);
106: }
|