/* * Created on 25/01/2005 * Created by Paul Duran * Copyright (C) 2004 Aelitis, All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * AELITIS, SARL au capital de 30,000 euros * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France. * */ package org.gudy.azureus2.ui.console; import org.gudy.azureus2.ui.console.util.StringEncrypter; import org.gudy.azureus2.ui.console.util.StringEncrypter.EncryptionException; import com.aelitis.azureus.core.AzureusCoreException; /** * the user profile contains the information about a user that is allowed to use the console ui. * Users may be assigned one of three profiles:<br> * <ul> * <li><b>ADMIN</b> have full access to all commands and to torrents of all users * <li><b>USER</b> have limited access to commands - can only add/modify their own torrents * <li><b>GUEST</b> have no access - can only view the torrent download status * </ul> * @author pauld */ public class UserProfile { private String username; private String userType; private String encryptedPassword; private String defaultSaveDirectory; public static final String ADMIN = "admin"; public static final String USER = "user"; public static final String GUEST = "guest"; public static final String DEFAULT_USER_TYPE = ADMIN; public static final UserProfile DEFAULT_USER_PROFILE = new UserProfile("admin", ADMIN); /** * returns true if the specified value is a valid user type * @param userType * @return */ public static boolean isValidUserType( String userType ) { return ADMIN.equals(userType) || USER.equals(userType) || GUEST.equals(userType); } /** * */ public UserProfile() { super(); this.userType = DEFAULT_USER_TYPE; } public UserProfile(String name, String userType) { this.username = name; setUserType(userType); } /** * returns true if the specified password is the password for this * user profile * @param password * @return */ public boolean authenticate(String password) { StringEncrypter encrypter; try { encrypter = new StringEncrypter(StringEncrypter.DES_ENCRYPTION_SCHEME); return encrypter.decrypt(encryptedPassword).equals(password); } catch (EncryptionException e) { throw new AzureusCoreException("Unable to decrypt password", e); } } /** * stores the specified password as an encrypted password * @param password The password to set. */ public void setPassword(String password) { try { StringEncrypter encrypter = new StringEncrypter(StringEncrypter.DES_ENCRYPTION_SCHEME); setEncryptedPassword(encrypter.encrypt(password)); } catch (EncryptionException e) { throw new AzureusCoreException("Unable to encrypt password", e); } } /** * @return Returns the username. */ public String getUsername() { return username; } /** * @param username The username to set. */ public void setUsername(String username) { this.username = username; } /** * @return Returns the userType. */ public String getUserType() { return userType; } /** * @param userType The userType to set. */ public void setUserType(String userType) { if(userType.equalsIgnoreCase(ADMIN)) userType = ADMIN; else if(userType.equalsIgnoreCase(USER)) userType = USER; else if(userType.equalsIgnoreCase(GUEST)) userType = GUEST; else userType = DEFAULT_USER_TYPE; this.userType = userType; } /** * check for equality with another user profile object */ public boolean equals(Object obj) { if( obj == null || ! (obj instanceof UserProfile) ) return false; UserProfile other = (UserProfile)obj; if( getUsername() != null ) return getUsername().equals(other.getUsername()); else if( other.getUsername() != null ) return false; if( getEncryptedPassword() != null ) return getEncryptedPassword().equals(other.getEncryptedPassword()); else if( other.getEncryptedPassword() != null ) return false; return true; } /** * @return Returns the encryptedPassword. */ public String getEncryptedPassword() { return encryptedPassword; } /** * @param encryptedPassword The encryptedPassword to set. */ public void setEncryptedPassword(String encryptedPassword) { this.encryptedPassword = encryptedPassword; } /** * @return the directory that torrents should be saved to for this user, by default */ public String getDefaultSaveDirectory() { return defaultSaveDirectory; } public void setDefaultSaveDirectory(String newValue) { this.defaultSaveDirectory = newValue; } }