1 40 package org.dspace.eperson; 41 42 import javax.servlet.ServletException ; 43 import javax.servlet.http.HttpServletRequest ; 44 import javax.servlet.http.HttpServletResponse ; 45 import javax.servlet.jsp.PageContext ; 46 import javax.servlet.jsp.jstl.fmt.LocaleSupport; 47 import java.sql.SQLException ; 48 import java.util.ArrayList ; 49 50 import org.apache.log4j.Logger; 51 import org.dspace.core.Context; 52 import org.dspace.core.LogManager; 53 import org.dspace.eperson.EPerson; 54 import org.dspace.eperson.AuthenticationMethod; 55 import org.dspace.authorize.AuthorizeException; 56 57 77 public class PasswordAuthentication 78 implements AuthenticationMethod { 79 80 81 private static Logger log = Logger.getLogger(PasswordAuthentication.class); 82 83 89 public boolean canSelfRegister(Context context, 90 HttpServletRequest request, 91 String username) 92 throws SQLException  93 { 94 return true; 95 } 96 97 100 public void initEPerson(Context context, HttpServletRequest request, 101 EPerson eperson) 102 throws SQLException  103 { 104 } 105 106 109 public boolean allowSetPassword(Context context, 110 HttpServletRequest request, 111 String username) 112 throws SQLException  113 { 114 return true; 115 } 116 117 122 public boolean isImplicit() 123 { 124 return false; 125 } 126 127 130 public int[] getSpecialGroups(Context context, HttpServletRequest request) 131 { 132 return new int[0]; 133 } 134 135 168 public int authenticate(Context context, 169 String username, 170 String password, 171 String realm, 172 HttpServletRequest request) 173 throws SQLException  174 { 175 if (username != null && password != null) 176 { 177 EPerson eperson = null; 178 log.info(LogManager.getHeader(context, "authenticate", "attempting password auth of user="+username)); 179 try 180 { 181 eperson = EPerson.findByEmail(context, username.toLowerCase()); 182 } 183 catch (AuthorizeException e) 184 { 185 } 187 188 if (eperson == null) 190 return NO_SUCH_USER; 191 192 else if (!eperson.canLogIn()) 194 return BAD_ARGS; 195 196 else if (eperson.getRequireCertificate()) 198 { 199 log.warn(LogManager.getHeader(context, "authenticate", "rejecting PasswordAuthentication because "+username+" requires certificate.")); 200 return CERT_REQUIRED; 201 } 202 203 else if (eperson.checkPassword(password)) 205 { 206 context.setCurrentUser(eperson); 207 log.info(LogManager.getHeader(context, "authenticate", "type=PasswordAuthentication")); 208 return SUCCESS; 209 } 210 else 211 return BAD_CREDENTIALS; 212 } 213 214 else 217 return BAD_ARGS; 218 } 219 220 234 public String loginPageURL(Context context, 235 HttpServletRequest request, 236 HttpServletResponse response) 237 { 238 return response.encodeRedirectURL(request.getContextPath() + 239 "/password-login"); 240 } 241 242 251 public String loginPageTitle(Context context) 252 { 253 return "org.dspace.eperson.PasswordAuthentication.title"; 254 } 255 } 256
| Popular Tags
|