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
	 DieGurke
					DieGurke