diff --git a/src/main/java/com/example/clientproject/data/shops/Shops.java b/src/main/java/com/example/clientproject/data/shops/Shops.java
index d889b4b75a3c89a9a6da99dd4fc6f722ce40591c..76ddf689601a853fbbfd790110ef5f239014e919 100644
--- a/src/main/java/com/example/clientproject/data/shops/Shops.java
+++ b/src/main/java/com/example/clientproject/data/shops/Shops.java
@@ -25,7 +25,7 @@ import java.util.List;
 public class Shops {
     @Id
     @GeneratedValue(strategy=GenerationType.IDENTITY)
-    private int shopId;
+    private long shopId;
     private String shopName;
     private String shopDescription;
     private String shopWebsite;
diff --git a/src/main/java/com/example/clientproject/services/BusinessRegisterSaver.java b/src/main/java/com/example/clientproject/services/BusinessRegisterSaver.java
index 92425905ef6b944fc11c89f91ec43eec5eb11e1c..eeabfb9dca9d47edba040fc5a48880143f63cd34 100644
--- a/src/main/java/com/example/clientproject/services/BusinessRegisterSaver.java
+++ b/src/main/java/com/example/clientproject/services/BusinessRegisterSaver.java
@@ -35,7 +35,10 @@ public class BusinessRegisterSaver {
     @Autowired
     JdbcTemplate jdbc;
 
-    public void save(BusinessRegisterDTO business){
+    @Autowired
+    LinkUserShop linkShop;
+
+    public void save(BusinessRegisterDTO business, long userId){
 
         StampBoards stampBoard = stampBoards.findById(1L).get();
         Categories categories = categoriesRepo.findById(1L).get();
@@ -69,11 +72,14 @@ public class BusinessRegisterSaver {
             jdbc.execute(query);
 
         }
+
+        linkShop.linkUserShop(shop.getShopId(), userId);
+
         //System.out.println(shop.getShopId());
 
         //System.out.println(tagsRepo.findAll());
 
-        System.out.println(shopsRepo.findByShopName(business.getBusiness_register_name()).get().getShopName());
+        //System.out.println(shopsRepo.findByShopName(business.getBusiness_register_name()).get().getShopName());
     }
 
 }
diff --git a/src/main/java/com/example/clientproject/services/LinkUserShop.java b/src/main/java/com/example/clientproject/services/LinkUserShop.java
new file mode 100644
index 0000000000000000000000000000000000000000..8d979d519593f61479f0fed3b7629f7822959000
--- /dev/null
+++ b/src/main/java/com/example/clientproject/services/LinkUserShop.java
@@ -0,0 +1,45 @@
+package com.example.clientproject.services;
+
+import com.example.clientproject.data.adminTypes.AdminTypes;
+import com.example.clientproject.data.adminTypes.AdminTypesRepo;
+import com.example.clientproject.data.shops.Shops;
+import com.example.clientproject.data.shops.ShopsRepo;
+import com.example.clientproject.data.userPermissions.UserPermissions;
+import com.example.clientproject.data.userPermissions.UserPermissionsRepo;
+import com.example.clientproject.data.users.Users;
+import com.example.clientproject.data.users.UsersRepo;
+import org.springframework.stereotype.Service;
+
+@Service
+public class LinkUserShop {
+
+    UsersRepo userRepo;
+    ShopsRepo shopsRepo;
+    AdminTypesRepo adminTypesRepo;
+    UserPermissionsRepo userPermissionsRepo;
+
+    public LinkUserShop(UsersRepo aUsersRepo,
+                        ShopsRepo aShopsRepo,
+                        AdminTypesRepo anAdminTypesRepo,
+                        UserPermissionsRepo aUserPermissionsRepo){
+        userRepo = aUsersRepo;
+        shopsRepo = aShopsRepo;
+        adminTypesRepo = anAdminTypesRepo;
+        userPermissionsRepo = aUserPermissionsRepo;
+    }
+
+    public void linkUserShop(long shopId, long userID){
+        try {
+            Users user = userRepo.findById(userID).get();
+            Shops shop = shopsRepo.getById(shopId);
+            AdminTypes adminType = adminTypesRepo.getById(2L);
+
+            UserPermissions link = new UserPermissions(user, shop, adminType);
+
+            userPermissionsRepo.save(link);
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+
+    }
+}
diff --git a/src/main/java/com/example/clientproject/services/UserFavouriteDTO.java b/src/main/java/com/example/clientproject/services/UserFavouriteDTO.java
index b0d1655cbdc8ef42a86dab9223caf3b8dddaa3c7..eea910f8c4b97ae7d83335066948b7398f794e5c 100644
--- a/src/main/java/com/example/clientproject/services/UserFavouriteDTO.java
+++ b/src/main/java/com/example/clientproject/services/UserFavouriteDTO.java
@@ -10,9 +10,9 @@ public class UserFavouriteDTO {
     long userId;
     long shopId;
 
-    public UserFavouriteDTO(UserFavouriteForm urf){
+    public UserFavouriteDTO(UserFavouriteForm urf, long userId){
         this(
-                urf.getUserId(),
+                userId,
                 urf.getShopId()
         );
     }
diff --git a/src/main/java/com/example/clientproject/services/registerUserServiceStatic.java b/src/main/java/com/example/clientproject/services/registerUserServiceStatic.java
index 562926def43b62dbc3da197712cb53ddf9b22a38..8576df51398437f55bab996298703239a90ae378 100644
--- a/src/main/java/com/example/clientproject/services/registerUserServiceStatic.java
+++ b/src/main/java/com/example/clientproject/services/registerUserServiceStatic.java
@@ -31,7 +31,7 @@ public class registerUserServiceStatic implements registerUserService{
                 LocalDateTime.now().format(formatter), twoFactorMethods);
         usersRepo.save(newUser);
 
-        System.out.println(usersRepo.findById(newUser.getUserId()));
+        //System.out.println(usersRepo.findById(newUser.getUserId()));
 
     }
 }
diff --git a/src/main/java/com/example/clientproject/web/controllers/BusinessDetails.java b/src/main/java/com/example/clientproject/web/controllers/BusinessDetails.java
new file mode 100644
index 0000000000000000000000000000000000000000..fcaa7cd93cf73c85c0f43123a7dbfa758bd41871
--- /dev/null
+++ b/src/main/java/com/example/clientproject/web/controllers/BusinessDetails.java
@@ -0,0 +1,42 @@
+package com.example.clientproject.web.controllers;
+
+import com.example.clientproject.data.shops.Shops;
+import com.example.clientproject.data.shops.ShopsRepo;
+import com.example.clientproject.data.stampBoards.StampBoards;
+import com.example.clientproject.data.stampBoards.StampBoardsRepo;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+@Controller
+public class BusinessDetails {
+
+    private ShopsRepo shopsRepo;
+
+    private StampBoardsRepo stampRepo;
+
+    public BusinessDetails(ShopsRepo aShopRepo, StampBoardsRepo aStampBoard){
+        shopsRepo = aShopRepo;
+        stampRepo = aStampBoard;
+    }
+
+    @GetMapping("/businessDetails")
+    public String getBusiness(@RequestParam(value = "shopId") int shopId, Model model){
+        StampBoards stampBoard;
+        Shops shop;
+        try {
+            shop = shopsRepo.getById(Long.valueOf(shopId));
+            //stampBoard = stampRepo.findById(Long.valueOf(shopId)).get();
+
+        }catch(Exception e){
+            e.printStackTrace();
+            return "redirect:/";
+        }
+        //model.addAttribute("stampBoard", stampBoard);
+        model.addAttribute("shop", shop);
+        return "shopDetails.html";
+    }
+}
diff --git a/src/main/java/com/example/clientproject/web/controllers/HomeController.java b/src/main/java/com/example/clientproject/web/controllers/HomeController.java
index a33bcda2c24cf2877d527436ce2481bbee463664..85c839dc6a0d0c688118c0a16f1f45a9d3a06c5d 100644
--- a/src/main/java/com/example/clientproject/web/controllers/HomeController.java
+++ b/src/main/java/com/example/clientproject/web/controllers/HomeController.java
@@ -2,6 +2,7 @@ package com.example.clientproject.web.controllers;
 
 import com.example.clientproject.data.shops.Shops;
 import com.example.clientproject.data.shops.ShopsRepo;
+import com.example.clientproject.service.Utils.JWTUtils;
 import com.example.clientproject.service.searches.UsersSearch;
 import com.example.clientproject.services.BusinessRegisterSaver;
 import com.example.clientproject.services.UserFavouriteDTO;
@@ -12,6 +13,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 
+import javax.servlet.http.HttpSession;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -30,8 +32,7 @@ public class HomeController {
     }
 
     @GetMapping({"/", "dashboard"})
-    public String index(Model model) throws Exception{
-        loggedIn=true;
+    public String index(Model model, HttpSession session) throws Exception{
         if (!loggedIn) {
             model.addAttribute("loggedIn", loggedIn);
             return "redirect:/login";
@@ -43,8 +44,8 @@ public class HomeController {
         List<Shops> normalShops = new ArrayList();
 
         for(Shops s : allShops){
-            UserFavouriteForm uff = new UserFavouriteForm(2,s.getShopId());
-            if(toggleFavourite.alreadyInDb(new UserFavouriteDTO(uff))){
+            UserFavouriteForm uff = new UserFavouriteForm(s.getShopId());
+            if(toggleFavourite.alreadyInDb(new UserFavouriteDTO(uff, JWTUtils.getLoggedInUserId(session).get()))){
                 favouriteShops.add(s);
             }else{
                 normalShops.add(s);
diff --git a/src/main/java/com/example/clientproject/web/controllers/Redirect.java b/src/main/java/com/example/clientproject/web/controllers/Redirect.java
index d7366847ad971f0d4ea456a3f2f6882ace8130b0..56f02faaf20072cd2f9246d4872208360d7f9623 100644
--- a/src/main/java/com/example/clientproject/web/controllers/Redirect.java
+++ b/src/main/java/com/example/clientproject/web/controllers/Redirect.java
@@ -7,11 +7,19 @@ import org.springframework.web.bind.annotation.RequestParam;
 @Controller
 public class Redirect {
 
+    /**
+     * Redirects user to new url, workaround for models not loading properly on redirect to same
+     * controller.
+     * @param url, the page to redirect to (e.g. /businessRegister), submitted like:
+     *             /redirect?url=<page>
+     * @return Redirection.
+     */
     @GetMapping("/redirect")
     public String redirect(@RequestParam(name="url") String url){
         try{
             return "redirect:/"+url;
         }catch(Exception e){
+            e.printStackTrace();
             return "redirect:/";
         }
     }
diff --git a/src/main/java/com/example/clientproject/web/controllers/SignInController.java b/src/main/java/com/example/clientproject/web/controllers/SignInController.java
index 184369920f211f3e1dfdcb55af77ba4d836dd91d..a89d175344106998a11827834642242eeda76e7c 100644
--- a/src/main/java/com/example/clientproject/web/controllers/SignInController.java
+++ b/src/main/java/com/example/clientproject/web/controllers/SignInController.java
@@ -40,12 +40,12 @@ public class SignInController {
     }
 
     @PostMapping("/businessRegister")
-    public String submitBusinessInfo(@Valid BusinessRegisterForm brf, BindingResult bindingResult){
+    public String submitBusinessInfo(@Valid BusinessRegisterForm brf, BindingResult bindingResult, HttpSession session){
         if (bindingResult.hasErrors()) {
             System.out.println(bindingResult.getAllErrors());
             return "registerbusiness.html";
         }
-        saveBusiness.save(new BusinessRegisterDTO(brf));
+        saveBusiness.save(new BusinessRegisterDTO(brf), JWTUtils.getLoggedInUserId(session).get());
         return "redirect:/redirect?url=businessRegister";
     }
 
@@ -86,7 +86,8 @@ public class SignInController {
     @PostMapping("login")
     public String signInChecks(@Valid LoginForm loginForm,
             BindingResult bindingResult,
-            Model model) {
+            Model model,
+            HttpSession session) {
 
         if (bindingResult.hasErrors()) {
             model.addAttribute("loggedIn", loggedIn);
@@ -106,6 +107,9 @@ public class SignInController {
 
             // If they match, set the loggedIn flag to true
             if (passwordMatch) {
+                JWTUtils.makeUserJWT(
+                        (int) usersDTOOptional.get().getUserId(),
+                        session);
                 loggedIn = true;
             // Otherwise, throw an exception with the correct error message
             } else {
diff --git a/src/main/java/com/example/clientproject/web/controllers/selectCategories/selectCategoriesControllers.java b/src/main/java/com/example/clientproject/web/controllers/selectCategories/selectCategoriesControllers.java
index b41af0d8d831e3264713d5fb602c44b5f7e4cddd..c99d537009b12870fdfdb8a35f764fc8f105a0df 100644
--- a/src/main/java/com/example/clientproject/web/controllers/selectCategories/selectCategoriesControllers.java
+++ b/src/main/java/com/example/clientproject/web/controllers/selectCategories/selectCategoriesControllers.java
@@ -30,10 +30,6 @@ public class selectCategoriesControllers {
     public String selectCategories(Model model){
         List<Tags> allTags = getTagService.findAll();
         model.addAttribute("allTags", allTags);
-        for (Tags allTag : allTags) {
-            System.out.println(allTag);
-        }
-        System.out.println("Test");
         return("selectCategories");
     }
 }
diff --git a/src/main/java/com/example/clientproject/web/forms/BusinessRegisterForm.java b/src/main/java/com/example/clientproject/web/forms/BusinessRegisterForm.java
index ee146c69de7e8d7ab0667a5f3334d42e3fac15ed..3af45edcc4271134c012dd93cf796db63bb3ec98 100644
--- a/src/main/java/com/example/clientproject/web/forms/BusinessRegisterForm.java
+++ b/src/main/java/com/example/clientproject/web/forms/BusinessRegisterForm.java
@@ -38,7 +38,6 @@ public class BusinessRegisterForm {
     int earnings;
 
     public void setBusinessTags(String tempTags){
-        System.out.println(tempTags);
         this.businessTags = new ArrayList(Arrays.asList(tempTags.split(",")));
     }
 }
diff --git a/src/main/java/com/example/clientproject/web/forms/UserFavouriteForm.java b/src/main/java/com/example/clientproject/web/forms/UserFavouriteForm.java
index cf8c4f0492febca00feb6bde4b38df087843c990..023a37b879a1a7eeb370f570e06b25e61fd93e31 100644
--- a/src/main/java/com/example/clientproject/web/forms/UserFavouriteForm.java
+++ b/src/main/java/com/example/clientproject/web/forms/UserFavouriteForm.java
@@ -8,7 +8,6 @@ import lombok.NoArgsConstructor;
 @AllArgsConstructor
 @NoArgsConstructor
 public class UserFavouriteForm {
-    long userId;
     long shopId;
 
 
diff --git a/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java b/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java
index 2cb6588b4f0fa9c16ca66de4c687ec71ddb0aaa6..f6d47188298b8de4cb7169ff8d689b9a68657efa 100644
--- a/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java
+++ b/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java
@@ -1,11 +1,14 @@
 package com.example.clientproject.web.restControllers;
 
+import com.example.clientproject.service.Utils.JWTUtils;
 import com.example.clientproject.service.searches.UsersSearch;
 import com.example.clientproject.services.*;
 import com.example.clientproject.web.forms.UserFavouriteForm;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpSession;
+
 @RestController
 public class BusinessFavouriter {
 
@@ -26,8 +29,8 @@ public class BusinessFavouriter {
      * @return ERROR or OK depending on whether it any errors are thrown.
      */
     @PostMapping("/favouriteBusiness")
-    public String favouriteBusiness(UserFavouriteForm uff){
-        UserFavouriteDTO ufDTO = new UserFavouriteDTO(uff);
+    public String favouriteBusiness(UserFavouriteForm uff, HttpSession session){
+        UserFavouriteDTO ufDTO = new UserFavouriteDTO(uff, JWTUtils.getLoggedInUserId(session).get());
         try{
             if(toggleFavourite.alreadyInDb(ufDTO)){
                 deleteFavourite.delete(ufDTO);
diff --git a/src/main/resources/database/Data Script/tablePopulator.py b/src/main/resources/database/Data Script/tablePopulator.py
index cf0e1834e7e17dbc57e468de08737fec4094e796..c210aed595d44fb8d1d7d5a3a0360598c2c3df36 100644
--- a/src/main/resources/database/Data Script/tablePopulator.py	
+++ b/src/main/resources/database/Data Script/tablePopulator.py	
@@ -57,6 +57,8 @@ def namePopulator(amount, userType):
     salt = "EXAMPLESALT"
     stdPassword = hashlib.sha256(salt.encode() + b'password123').hexdigest()
 
+    stdPassword = "$2a$10$YnDtWkRyd3WfYb5CDHBNx.yfuWPW7dOg86NteaEAyaEmaRywfwueK"
+
     profilePic = "testImage.png"
 
     insertArray = []
@@ -113,8 +115,8 @@ def companyPopulator(amount):
 
         countryi = random.randint(0, len(countries)-1)
 
-        stringInsert = '"' + companyNames[i] + '","' + "" + '","' + websiteArray[i] + '","' + str(earnings) + '","' + countries[countryi] + '","' + "shopPic.png" + '",' + str(random.randint(0, 1))
-        insertArray.append(createInsert(stringInsert, "Shops", "Shop_Name, Shop_Description, Shop_Website, Shop_Earnings, Shop_Countries, Shop_Image, Shop_Active"))
+        stringInsert = '"' + companyNames[i] + '","' + "" + '","' + websiteArray[i] + '","' + str(earnings) + '","' + countries[countryi] + '","' + "shopPic.png" + '",' + str(random.randint(0, 1)) + ',' + str(1)
+        insertArray.append(createInsert(stringInsert, "Shops", "Shop_Name, Shop_Description, Shop_Website, Shop_Earnings, Shop_Countries, Shop_Image, Shop_Active, Stamp_Board_Id"))
 
     return insertArray
 
diff --git a/src/main/resources/static/js/favouriteBusiness.js b/src/main/resources/static/js/favouriteBusiness.js
index faca4ac6608c65d5cbc6776c5c13d78452723cb6..05c21a0b531471b210ae85669fd92871d04535cb 100644
--- a/src/main/resources/static/js/favouriteBusiness.js
+++ b/src/main/resources/static/js/favouriteBusiness.js
@@ -7,7 +7,7 @@ function favouriteBusiness(e,shopId){
     }
 
     var xhttp = new XMLHttpRequest();
-    let params= 'userId=' + "2" + "&shopId=" + shopId
+    let params= "shopId=" + shopId
     xhttp.open("POST", '/favouriteBusiness', true);
     xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     xhttp.onload = function() {
@@ -23,4 +23,8 @@ function favouriteBusiness(e,shopId){
     xhttp.send(params);
 
 
+}
+
+function redirect(shopId){
+    location.href = "businessDetails?shopId="+shopId;
 }
\ No newline at end of file
diff --git a/src/main/resources/templates/fragments/business_card.html b/src/main/resources/templates/fragments/business_card.html
index 25a1cfa0e2d2a8e5d91d2562a9053c529733ee8a..c3cd23d9155b9a8b72570a727f514c6a41c8d7a0 100644
--- a/src/main/resources/templates/fragments/business_card.html
+++ b/src/main/resources/templates/fragments/business_card.html
@@ -27,7 +27,7 @@
                 <p th:text="${reward_amount}"></p>
             </div>
             <div class="level-right">
-                <button class="button is-rounded gradient">
+                <button class="button is-rounded gradient" th:onclick="'redirect('+ ${shopId} + ')'">
                     View Shop
                     <span class="icon is-small is-left ml-1">
                         <i class="fas fa-arrow-right"></i>
diff --git a/src/main/resources/templates/shopDetails.html b/src/main/resources/templates/shopDetails.html
new file mode 100644
index 0000000000000000000000000000000000000000..a8af92deae80b2147d4255d85bbd19d7877982ab
--- /dev/null
+++ b/src/main/resources/templates/shopDetails.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <title>ShopHub | Dashboard</title>
+    <link th:replace="fragments/libs.html :: bulma"/>
+    <link th:replace="fragments/libs.html :: fa"/>
+    <link th:replace="fragments/nav.html :: nav-css"/>
+</head>
+<body>
+    <div th:replace="fragments/nav.html :: nav"></div>
+
+    <div>
+        <h1 th:text="${shop.shopName}"></h1>
+        <p th:text="${shop.shopDescription}"></p>
+        <p th:text="${shop.shopWebsite}"></p>
+        <p th:text="${shop.shopEarnings}"></p>
+        <p th:text="${shop.shopCountries}"></p>
+        <img th:src="${shop.shopImage}" alt="">
+    </div>
+
+</body>
+</html>
\ No newline at end of file