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.Date; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| import javax.persistence.ElementCollection; | import javax.persistence.CascadeType; | ||||||
| import javax.persistence.Entity; | import javax.persistence.Entity; | ||||||
|  | import javax.persistence.FetchType; | ||||||
| import javax.persistence.GeneratedValue; | import javax.persistence.GeneratedValue; | ||||||
| import javax.persistence.GenerationType; | import javax.persistence.GenerationType; | ||||||
| import javax.persistence.Id; | import javax.persistence.Id; | ||||||
| import javax.persistence.NamedQueries; | import javax.persistence.NamedQueries; | ||||||
| import javax.persistence.NamedQuery; | import javax.persistence.NamedQuery; | ||||||
|  | import javax.persistence.OneToMany; | ||||||
| import javax.persistence.Table; | import javax.persistence.Table; | ||||||
| import javax.persistence.Temporal; | import javax.persistence.Temporal; | ||||||
| import javax.persistence.TemporalType; | import javax.persistence.TemporalType; | ||||||
| @@ -31,6 +33,7 @@ import javax.persistence.TemporalType; | |||||||
| @Table(name = "users") | @Table(name = "users") | ||||||
| @NamedQueries( | @NamedQueries( | ||||||
| 	{ @NamedQuery(query = "SELECT u FROM User u WHERE u.id = :id", name = "getUserById"), | 	{ @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 | 			@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 Date						lastSeen; | ||||||
| 	private envoy.data.User.UserStatus	status; | 	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; | 	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 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. | 	 * 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> |  * Created: <strong>30.12.2019</strong><br> | ||||||
|  * |  * | ||||||
|  * @author Kai S. K. Engelbart |  * @author Kai S. K. Engelbart | ||||||
|  |  * @author Maximilian Käfer | ||||||
|  * @since Envoy Server Standalone v0.1-alpha |  * @since Envoy Server Standalone v0.1-alpha | ||||||
|  */ |  */ | ||||||
| public class LoginCredentialProcessor implements ObjectProcessor<LoginCredentials> { | public class LoginCredentialProcessor implements ObjectProcessor<LoginCredentials> { | ||||||
|  |  | ||||||
| 	// TODO: Acquire user IDs from database | 	private PersistenceManager	persistenceManager	= PersistenceManager.getPersistenceManager(); | ||||||
| 	private static long currentUserId = 1; |  | ||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
| 	public Class<LoginCredentials> getInputClass() { return LoginCredentials.class; } | 	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)); | 		System.out.println(String.format("Received login credentials %s from socket ID %d", input, socketId)); | ||||||
|  |  | ||||||
| 		// Create user | 		// 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()); | 		ConnectionManager.getInstance().registerUser(socketId, user.getId()); | ||||||
|  |  | ||||||
| 		// Create contacts | 		// Create contacts | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 DieGurke
					DieGurke