Index: src/main/java/edu/gjoko/schedlr/config/AppSecurityConfig.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/config/AppSecurityConfig.java	(revision 204464d02c975e7f1c43dfa67e0e5c02f6c95358)
+++ src/main/java/edu/gjoko/schedlr/config/AppSecurityConfig.java	(revision 763289ea358ad559346ae4a75450a1803623e8aa)
@@ -46,7 +46,8 @@
                 .disable()
                 .authorizeRequests()
-                .antMatchers("/login*").permitAll()
+                .antMatchers("/login").permitAll()
                 .antMatchers("/register_customer").permitAll()
                 .antMatchers("/register_business").permitAll()
+                .antMatchers("/homepage").permitAll()
                 .antMatchers("/css/**").permitAll()
                 .antMatchers("/anonymous*").anonymous()
@@ -61,5 +62,6 @@
                 .loginPage("/login")
                 .loginProcessingUrl("/login")
-                .successHandler(authenticationSuccessHandler);
+                .successHandler(authenticationSuccessHandler)
+                .defaultSuccessUrl("/homepage");
     }
 }
Index: src/main/java/edu/gjoko/schedlr/controllers/HomePageController.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/controllers/HomePageController.java	(revision 204464d02c975e7f1c43dfa67e0e5c02f6c95358)
+++ src/main/java/edu/gjoko/schedlr/controllers/HomePageController.java	(revision 763289ea358ad559346ae4a75450a1803623e8aa)
@@ -4,11 +4,18 @@
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
 
-@Controller
+@RestController(value = "/homepage")
 public class HomePageController {
 
-    @GetMapping(value = "/homepage")
+    @GetMapping
     public String getHomePageTemplate(Model model) {
         return "homepage";
     }
+
+    @PostMapping
+    public String postHomePageTemplate(Model model) {
+        return "homepage";
+    }
 }
Index: src/main/java/edu/gjoko/schedlr/controllers/LoginController.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/controllers/LoginController.java	(revision 204464d02c975e7f1c43dfa67e0e5c02f6c95358)
+++ src/main/java/edu/gjoko/schedlr/controllers/LoginController.java	(revision 763289ea358ad559346ae4a75450a1803623e8aa)
@@ -1,14 +1,23 @@
 package edu.gjoko.schedlr.controllers;
 
+import edu.gjoko.schedlr.entity.Stakeholder;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PostMapping;
 
 @Controller
 public class LoginController {
 
-    @GetMapping(value = "/login")
+    @GetMapping(path = "/login")
     public String getMapping(Model model) {
+        model.addAttribute("stakeholder", new Stakeholder());
         return "login";
     }
+
+    @PostMapping(path = "/login")
+    public String loginCustomer(@ModelAttribute Stakeholder customer, Model model) {
+        return "redirect:homepage";
+    }
 }
Index: src/main/java/edu/gjoko/schedlr/controllers/RegisterController.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/controllers/RegisterController.java	(revision 204464d02c975e7f1c43dfa67e0e5c02f6c95358)
+++ src/main/java/edu/gjoko/schedlr/controllers/RegisterController.java	(revision 763289ea358ad559346ae4a75450a1803623e8aa)
@@ -20,5 +20,5 @@
     }
 
-    @GetMapping("/register_customer")
+    @GetMapping(value ="/register_customer")
     public String getCustomerRegisterPage(Model model) {
         model.addAttribute("stakeholder", new Stakeholder());
@@ -30,13 +30,13 @@
         Stakeholder user = stakeholderService.saveStakeholder(customer);
         model.addAttribute("user", user);
-        return "homepage";
+        return "redirect:homepage";
     }
 
-    @GetMapping("/register_business")
+    @GetMapping(value = "/register_business")
     public String getBusinessRegisterPage(Model model) {
         return "register_business";
     }
 
-    @PostMapping("/register_business")
+    @PostMapping(value = "/register_business")
     public String registerBusiness(Model model) {
         return "register_business";
Index: src/main/java/edu/gjoko/schedlr/services/PostgresUserDetailsService.java
===================================================================
--- src/main/java/edu/gjoko/schedlr/services/PostgresUserDetailsService.java	(revision 204464d02c975e7f1c43dfa67e0e5c02f6c95358)
+++ src/main/java/edu/gjoko/schedlr/services/PostgresUserDetailsService.java	(revision 763289ea358ad559346ae4a75450a1803623e8aa)
@@ -9,4 +9,5 @@
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 
@@ -18,7 +19,10 @@
 
     private final StakeholderRepository stakeholderRepository;
+    private final BCryptPasswordEncoder bCryptPasswordEncoder;
 
-    public PostgresUserDetailsService(StakeholderRepository stakeholderRepository) {
+    public PostgresUserDetailsService(StakeholderRepository stakeholderRepository,
+                                      BCryptPasswordEncoder bCryptPasswordEncoder) {
         this.stakeholderRepository = stakeholderRepository;
+        this.bCryptPasswordEncoder = bCryptPasswordEncoder;
     }
 
Index: src/main/resources/templates/homepage.html
===================================================================
--- src/main/resources/templates/homepage.html	(revision 204464d02c975e7f1c43dfa67e0e5c02f6c95358)
+++ src/main/resources/templates/homepage.html	(revision 763289ea358ad559346ae4a75450a1803623e8aa)
@@ -3,5 +3,5 @@
 <head>
     <meta charset="UTF-8">
-    <title>Title</title>
+    <title>Homepage</title>
 </head>
 <body>
Index: src/main/resources/templates/login.html
===================================================================
--- src/main/resources/templates/login.html	(revision 204464d02c975e7f1c43dfa67e0e5c02f6c95358)
+++ src/main/resources/templates/login.html	(revision 763289ea358ad559346ae4a75450a1803623e8aa)
@@ -40,14 +40,14 @@
                 <div class="card">
                     <div class="card-body py-5 px-md-5">
-                        <form>
+                        <form action="#" th:action="@{/login}" th:object="${stakeholder}" method="post">
                             <!-- Email input -->
                             <div class="form-outline mb-4">
-                                <input type="email" id="email" class="form-control"/>
-                                <label class="form-label" for="email">Email address</label>
+                                <input type="text" id="username" class="form-control" required th:field="*{username}" />
+                                <label class="form-label" for="username">Username</label>
                             </div>
 
                             <!-- Password input -->
                             <div class="form-outline mb-4">
-                                <input type="password" id="password" class="form-control"/>
+                                <input type="password" id="password" class="form-control" th:field="*{password}" />
                                 <label class="form-label" for="password">Password</label>
                             </div>
