implemented login and registration (unfinished)
This commit is contained in:
		@@ -3,13 +3,15 @@ package envoy.server.data;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import javax.persistence.ElementCollection;
 | 
			
		||||
import javax.persistence.CascadeType;
 | 
			
		||||
import javax.persistence.Entity;
 | 
			
		||||
import javax.persistence.FetchType;
 | 
			
		||||
import javax.persistence.GeneratedValue;
 | 
			
		||||
import javax.persistence.GenerationType;
 | 
			
		||||
import javax.persistence.Id;
 | 
			
		||||
import javax.persistence.NamedQueries;
 | 
			
		||||
import javax.persistence.NamedQuery;
 | 
			
		||||
import javax.persistence.OneToMany;
 | 
			
		||||
import javax.persistence.Table;
 | 
			
		||||
import javax.persistence.Temporal;
 | 
			
		||||
import javax.persistence.TemporalType;
 | 
			
		||||
@@ -31,6 +33,7 @@ import javax.persistence.TemporalType;
 | 
			
		||||
@Table(name = "users")
 | 
			
		||||
@NamedQueries(
 | 
			
		||||
	{ @NamedQuery(query = "SELECT u FROM User u WHERE u.id = :id", name = "getUserById"),
 | 
			
		||||
			@NamedQuery(query = "SELECT u FROM User u WHERE u.name = :name", name = "getUserByName"),
 | 
			
		||||
			@NamedQuery(query = "SELECT u.contacts FROM User u WHERE u = :user", name = "getContactsOfUser")// not tested
 | 
			
		||||
	}
 | 
			
		||||
)
 | 
			
		||||
@@ -46,7 +49,8 @@ public class User {
 | 
			
		||||
	private Date						lastSeen;
 | 
			
		||||
	private envoy.data.User.UserStatus	status;
 | 
			
		||||
 | 
			
		||||
	@ElementCollection
 | 
			
		||||
	// TODO: Fix Error
 | 
			
		||||
	@OneToMany(targetEntity = User.class, cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "contacts")
 | 
			
		||||
	private List<User> contacts;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
 
 | 
			
		||||
@@ -78,6 +78,9 @@ public class PersistenceManager {
 | 
			
		||||
	 */
 | 
			
		||||
	public User getUserById(long id) { return (User) entityManager.createNamedQuery("getUserById").setParameter("id", id).getSingleResult(); }
 | 
			
		||||
 | 
			
		||||
	public User getUserByName(String name) {
 | 
			
		||||
		return (User) entityManager.createNamedQuery("getUserByName").setParameter("name", name).getSingleResult();
 | 
			
		||||
	}
 | 
			
		||||
	/**
 | 
			
		||||
	 * Searches for a {@link Message} with a specific id.
 | 
			
		||||
	 *
 | 
			
		||||
 
 | 
			
		||||
@@ -23,12 +23,12 @@ import envoy.server.net.ObjectWriteProxy;
 | 
			
		||||
 * Created: <strong>30.12.2019</strong><br>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Maximilian Käfer
 | 
			
		||||
 * @since Envoy Server Standalone v0.1-alpha
 | 
			
		||||
 */
 | 
			
		||||
public class LoginCredentialProcessor implements ObjectProcessor<LoginCredentials> {
 | 
			
		||||
 | 
			
		||||
	// TODO: Acquire user IDs from database
 | 
			
		||||
	private static long currentUserId = 1;
 | 
			
		||||
	private PersistenceManager	persistenceManager	= PersistenceManager.getPersistenceManager();
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public Class<LoginCredentials> getInputClass() { return LoginCredentials.class; }
 | 
			
		||||
@@ -38,7 +38,25 @@ public class LoginCredentialProcessor implements ObjectProcessor<LoginCredential
 | 
			
		||||
		System.out.println(String.format("Received login credentials %s from socket ID %d", input, socketId));
 | 
			
		||||
 | 
			
		||||
		// Create user
 | 
			
		||||
		User user = new User(currentUserId++, input.getName());
 | 
			
		||||
		User user = null;
 | 
			
		||||
 | 
			
		||||
		if (input.isRegistration()) {
 | 
			
		||||
			envoy.server.data.User dbUser = new envoy.server.data.User();
 | 
			
		||||
			dbUser.setName(input.getName());
 | 
			
		||||
			dbUser.setLastSeen(new Date());
 | 
			
		||||
			dbUser.setStatus(User.UserStatus.ONLINE);
 | 
			
		||||
			dbUser.setPasswordHash(input.getPasswordHash());
 | 
			
		||||
			persistenceManager.addUser(dbUser);
 | 
			
		||||
			user = dbUser.toCommonUser();
 | 
			
		||||
		}else {
 | 
			
		||||
			// TODO: Implement error when user does not exist
 | 
			
		||||
			envoy.server.data.User requestedUser = persistenceManager.getUserByName(input.getName());
 | 
			
		||||
			if (input.getPasswordHash() == requestedUser.getPasswordHash()) {
 | 
			
		||||
				user = requestedUser.toCommonUser();
 | 
			
		||||
			} else {
 | 
			
		||||
				// TODO: Wrong Password Response
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		ConnectionManager.getInstance().registerUser(socketId, user.getId());
 | 
			
		||||
 | 
			
		||||
		// Create contacts
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user