001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.jetspeed.administration;
018:
019: import java.util.List;
020: import java.util.Map;
021:
022: import javax.portlet.PortletConfig;
023: import javax.portlet.PortletRequest;
024: import javax.portlet.PortletResponse;
025: import org.apache.jetspeed.security.User;
026:
027: /**
028: * PortalAdministration
029: *
030: * Aggregate portal administration functions:
031: * - Emails
032: * - Registration
033: * - Password Generation
034: *
035: * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
036: * @version $Id: $
037: */
038: public interface PortalAdministration {
039: /**
040: * Registers and creates a new user, assigning userInfo, roles, groups,
041: * profiling rules and a folder template. If any values are null, defaults
042: * are used from the system wide configuration.
043: *
044: * @param userName Unique user principal identifier
045: * @param password Password for this user
046: * @param roles A list of roles to assign to this user
047: * @param groups A list of groups to assign to this user
048: * @param userInfo Portlet API User Information Attributes name value pairs (PLT.D)
049: * @param rules A map of name value pairs of profiling rules.
050: * Well known rules names are 'page' and 'menu'
051: * @param folderTemplate The full PSML path name of a folder to be deep
052: * copied as the new user's set of folders, pages, links
053: * @param subsite The subsite folder to place the new user in
054: * @since 2.1.2
055: */
056: void registerUser(String userName, String password, List roles,
057: List groups, Map userInfo, Map rules, String template,
058: String subsiteFolder) throws RegistrationException;
059:
060: void registerUser(String userName, String password, List roles,
061: List groups, Map userInfo, Map rules, String template)
062: throws RegistrationException;
063:
064: /**
065: * Register a new user using all default values
066: *
067: * @param userName
068: * @param password
069: */
070: void registerUser(String userName, String password)
071: throws RegistrationException;
072:
073: /**
074: * Generate a unique password
075: *
076: * @return unique password
077: */
078: String generatePassword();
079:
080: /**
081: * Helper to send an email to a recipient
082: *
083: * @param recipient the email address of the recipient
084: * @param localizedSubject the subject of the email as a localized string
085: * @param message the email message content
086: * @parm userAttributes map of user attributes
087: * @throws AdministrationEmailException
088: */
089: public void sendEmail(PortletConfig portletConfig,
090: String emailAddress, String localizedSubject,
091: String templatePath, Map userAttributes)
092: throws AdministrationEmailException;
093:
094: /**
095: * Helper to send an email to a recipient without the portal default sender, and without mail merge
096: *
097: * @param from the email address of the sender
098: * @param subject the subject of the email
099: * @param to the recipient email address
100: * @param text the message text
101: * @throws AdministrationEmailException
102: */
103: public void sendEmail(String from, String subject, String to,
104: String text) throws AdministrationEmailException;
105:
106: /**
107: * Lookup a user given an email address
108: *
109: * @param email Given email address
110: * @return a Jetspeed <code>User</code>, or throw exception if not found
111: * @throws AdministrationEmailException
112: */
113: public User lookupUserFromEmail(String email)
114: throws AdministrationEmailException;
115:
116: /**
117: * Provide a common way to get portal URLs
118: * Necessary for generating return URLs for features such as
119: * forgotten password. The URL generated will be a combination
120: * of the Jetspeed base URL plus the path parameter appended
121: * Example:
122: * base URL = http://www.apache.org/jetspeed/portal
123: * path = /system/forgotten-password.psml
124: * Returns:
125: * http://www.apache.org/jetspeed/portal/system/forgotten-password.psml
126: *
127: * @param request The portlet request.
128: * @param response The portlet response, used to encode the path
129: * @param path The relative path to a portal resource
130: * @return the base Jetspeed portal URL plus the appended path parameter
131: */
132: String getPortalURL(PortletRequest request,
133: PortletResponse response, String path);
134:
135: /**
136: * @param guid The ID which is passed throughte URL to the user
137: * @return
138: */
139: public Map getNewLoginInfo(String guid);
140:
141: /**
142: * @param guid the ID which is passed through the URL to the user..
143: * @param info a Map, info from which will be used to reset the password
144: * the password in this case is NOT encrypted, but this should probably
145: * change if this information is stored on disk... ie a database
146: */
147: public void putNewLoginInfo(String guid, Map info);
148:
149: /**
150: * @param guid the ID which will be removed from the storage when the info is no longer valid
151: */
152: public void removeNewLoginInfo(String guid);
153:
154: }
|