From d16b0c0a3dc9d695a4e1f0d3e53e1f8c06311d35 Mon Sep 17 00:00:00 2001 From: mdb Date: Sat, 31 Jan 2004 06:24:01 +0000 Subject: [PATCH] Make it possible to create an account with an already encrypted password. git-svn-id: https://samskivert.googlecode.com/svn/trunk@1390 6335cc39-0255-0410-8fd6-9bcaacd3b74c --- .../com/samskivert/servlet/user/Password.java | 40 +++++++++++++++++++ .../servlet/user/UserRepository.java | 19 +++++++-- 2 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 projects/samskivert/src/java/com/samskivert/servlet/user/Password.java diff --git a/projects/samskivert/src/java/com/samskivert/servlet/user/Password.java b/projects/samskivert/src/java/com/samskivert/servlet/user/Password.java new file mode 100644 index 00000000..c8f1ff13 --- /dev/null +++ b/projects/samskivert/src/java/com/samskivert/servlet/user/Password.java @@ -0,0 +1,40 @@ +// +// $Id: Password.java,v 1.1 2004/01/31 06:24:01 mdb Exp $ + +package com.samskivert.servlet.user; + +/** + * Represents an encrypted password. Currently only used when creating + * user accounts. + */ +public class Password +{ + /** + * Creates a password from the supplied username and (unencrypted) + * password. + */ + public Password (String username, String password) + { + _encrypted = UserUtil.encryptPassword(username, password); + } + + /** + * Creates a password directly from the encrypted text. This text + * must have been created using {@link + * UserUtil#encryptPassword} or via the same algorithm. + */ + public Password (String encrypted) + { + _encrypted = encrypted; + } + + /** + * Returns the encrypted password text. + */ + public String getEncrypted () + { + return _encrypted; + } + + protected String _encrypted; +} diff --git a/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java b/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java index 7054b069..a2132d28 100644 --- a/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java +++ b/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java @@ -1,5 +1,5 @@ // -// $Id: UserRepository.java,v 1.37 2003/12/15 23:12:47 mdb Exp $ +// $Id: UserRepository.java,v 1.38 2004/01/31 06:24:01 mdb Exp $ // // samskivert library - useful routines for java programs // Copyright (C) 2001 Michael Bayne @@ -116,6 +116,19 @@ public class UserRepository extends JORARepository String email, int siteId) throws InvalidUsernameException, UserExistsException, PersistenceException + { + return createUser(username, new Password(username, password), + realname, email, siteId); + } + + /** + * Like {@link #createUser(String,String,String,String,int)} except + * that the supplied password has already been encrypted. + */ + public int createUser (String username, Password password, String realname, + String email, int siteId) + throws InvalidUsernameException, UserExistsException, + PersistenceException { // create a new user object... User user = new User(); @@ -130,7 +143,7 @@ public class UserRepository extends JORARepository * in preparation for inserting the record into the database for the * first time. */ - protected void populateUser (User user, String username, String password, + protected void populateUser (User user, String username, Password password, String realname, String email, int siteId) throws InvalidUsernameException { @@ -146,7 +159,7 @@ public class UserRepository extends JORARepository } user.username = username; - user.password = UserUtil.encryptPassword(username, password, true); + user.password = password.getEncrypted(); user.realname = realname; user.email = email; user.created = new Date(System.currentTimeMillis());