diff --git a/.gitignore b/.gitignore
index 239de2dc57e47706616e9f64c5a3b127da0b1896..5d223addc9db1f76d13c1e3146243890590fca86 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,4 @@
 /src/provisoire/
 /rapport/
 .*
-!.gitignore
\ No newline at end of file
+!.gitignore
diff --git a/src/Core/ActiveUserContext.java b/src/Core/ActiveUserContext.java
new file mode 100644
index 0000000000000000000000000000000000000000..497c8fb3ab51b6822d657d7c5c68966aee625157
--- /dev/null
+++ b/src/Core/ActiveUserContext.java
@@ -0,0 +1,20 @@
+package Core;
+
+import User.User;
+
+public class ActiveUserContext {
+	
+	User activeUser;
+
+	public ActiveUserContext(MyFoodora foodora) {
+		// TODO Auto-generated constructor stub
+	}
+	
+	public User getUser(){
+		return activeUser;
+	}
+	public void setActiveUser(User u){
+		activeUser = u;
+	}
+
+}
diff --git a/src/Core/MyFoodora.java b/src/Core/MyFoodora.java
index dccd139d20fe21ddfa8c32a03c4a207a883c3ca9..bf0cfe6c8f3c9e6487f1ee1a50d44b6df5962ac7 100644
--- a/src/Core/MyFoodora.java
+++ b/src/Core/MyFoodora.java
@@ -55,16 +55,20 @@ public class MyFoodora {
 	}
 	
 	/** CUSTOM **/
-	public int getTypeOfUser(String usernameTest, String passwordTest){
-		if(this.getListCustomer().isContainingCorrectLogin(usernameTest, passwordTest))
-			return User.CUSTOMER;
-		if(this.getListCourier().isContainingCorrectLogin(usernameTest, passwordTest))
-			return User.COURIER;
-		if(this.getListRestaurant().isContainingCorrectLogin(usernameTest, passwordTest))
-			return User.RESTAURANT;
-		if(this.getListManager().isContainingCorrectLogin(usernameTest, passwordTest))
-			return User.MANAGER;
-		return User.UNKNOWN;
+	public User getUserByLogin(String usernameTest, String passwordTest){
+		User u = this.getListCustomer().getUserByLogin(usernameTest, passwordTest);
+		if(u != null)
+			return u;
+		u = this.getListCourier().getUserByLogin(usernameTest, passwordTest);
+		if(u != null)
+			return u;
+		u = this.getListRestaurant().getUserByLogin(usernameTest, passwordTest);
+		if(u != null)
+			return u;
+		u = this.getListManager().getUserByLogin(usernameTest, passwordTest);
+		if(u != null)
+			return u;
+		return null;
 	}
 	
 	/** CUSTOM GETTER AND SETTER **/
@@ -124,15 +128,8 @@ public class MyFoodora {
 	public static void main(String[] args) throws ExceptionUnknownMealType, ExceptionUnknownDishType, ExceptionUnknownStartegyType {
 		// TODO Auto-generated method stub
 		MyFoodora myFoodora = new MyFoodora();
-		FactoryDish dishFactory = new FactoryDish();
-		FactoryMeal mealFactory = new FactoryMeal();
-		Dish d1 = dishFactory.createDish("MainDish", "French Fries", "Vegan", 3.0);
-		Dish d2 = dishFactory.createDish("MainDish", "French Fries", "Vegan", 3.0);
-		Meal m1 = mealFactory.createMeal("HalfMeal");
-		Meal m2 = mealFactory.createMeal("HalfMeal");
-		//myFoodora.listRestaurant.add();
-		System.out.println(d1.equals(d2));
-		System.out.println(m1.equals(m2));
+		ActiveUserContext activeUser = new ActiveUserContext(myFoodora);
+		activeUser.setActiveUser(User.login(myFoodora));
 	}
 	public double getLastMonthIncome() {
 		// TODO Auto-generated method stub
diff --git a/src/User/ListUser.java b/src/User/ListUser.java
index 6f5ca36125c90854983e5dca9c39c2dfa5790df9..8a434a82ce37025fb75762ab02a2e2cd404b203a 100644
--- a/src/User/ListUser.java
+++ b/src/User/ListUser.java
@@ -9,12 +9,12 @@ public class ListUser<T extends User>{
 	
 	/** CUSTOM **/
 
-	public boolean isContainingCorrectLogin(String username, String password){
+	public User getUserByLogin(String username, String password){
 		for(User u : listUser){
 			if(u.isLoginCorrect(username,password))
-				return true;
+				return u;
 		}
-		return false;
+		return null;
 	}
 	public void addUser(T e){
 		listUser.add(e);
diff --git a/src/User/User.java b/src/User/User.java
index eaff9e79a5588819fcf0f1bc3f697902f4304bf1..6eeffcbbfadd5fa127b20002ca73eb768ef844c9 100644
--- a/src/User/User.java
+++ b/src/User/User.java
@@ -44,19 +44,15 @@ public abstract class User implements Comparable<User> {
 		this.password = password;
 		this.adress = adress;
 		this.activated = activated;
+		
 	}
 
 	/** CUSTOM **/
 	
-	public void register(MyFoodora foodora){
+	public static User login(MyFoodora foodora){
 		String usernameTest = Input.string("Please writte your username");
 		String passwordTest = Input.string("Please writte your password");
-		this.typeOfUser = foodora.getTypeOfUser(usernameTest, passwordTest);
-		if(this.typeOfUser == User.UNKNOWN){
-			this.isLogged=false;
-		}else{
-			this.isLogged=true;
-		}
+		return foodora.getUserByLogin(usernameTest, passwordTest);
 	}
 	public boolean isLoginCorrect(String username, String password) {
 		if(this.username == username && this.password == password)
@@ -71,6 +67,17 @@ public abstract class User implements Comparable<User> {
 		return username.compareTo(u.getUsername());
 	}
 	
+	@Override
+	public boolean equals(Object other){
+		if(other instanceof User){
+			User u = (User) other;
+			if(this.id == u.getId()){
+				return true;
+			}
+		}
+		return false;
+	}
+	
 	@Override
 	public String toString() {
 		return "User [id=" + id + ", phoneNumber=" + phoneNumber + ", name=" + name + ", username=" + username