Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UserDto.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UserDto.java	(revision f7ad420eba0ae27b05bbff3f892e5fd48a4f4504)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/dto/UserDto.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
@@ -4,6 +4,4 @@
 import lombok.Data;
 import lombok.NoArgsConstructor;
-
-import java.time.LocalDateTime;
 
 @Data
@@ -21,6 +19,5 @@
     private String regionName;
     private String role;
-    private String rtoken;
-    private LocalDateTime rtoken_exp;
     private String clazz_;
+    Boolean userActive;
 }
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Users.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Users.java	(revision f7ad420eba0ae27b05bbff3f892e5fd48a4f4504)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/entities/Users.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
@@ -9,10 +9,9 @@
 import mk.ukim.finki.db.distributorapp.model.dto.UsersLoadingDto;
 import mk.ukim.finki.db.distributorapp.model.enumerations.Role;
-import mk.ukim.finki.db.distributorapp.security.ConfirmationToken;
+import mk.ukim.finki.db.distributorapp.security.Token;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 
-import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -77,10 +76,6 @@
     private Role userRole;
 
-    @Size(max = 255)
-    @Column(name = "user_rtoken")
-    private String userResetToken;
-
-    @Column(name = "user_rtoken_exp")
-    private LocalDateTime userResetTokenExpiry;
+    @OneToMany(mappedBy = "user")
+    private List<Token> tokens;
 
     @NotNull
@@ -103,10 +98,7 @@
         this.userActive = dto.getUserActive();
         this.userImage = dto.getUserImage();
-        this.confirmationToken=null;
+        this.tokens=null;
         this.city=null;
     }
-
-    @OneToOne(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
-    private ConfirmationToken confirmationToken;
 
     @Override
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/TokenType.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/TokenType.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/model/enumerations/TokenType.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
@@ -0,0 +1,5 @@
+package mk.ukim.finki.db.distributorapp.model.enumerations;
+
+public enum TokenType {
+    TOKEN_VERIFICATION, TOKEN_RESET
+}
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ConfirmationTokenRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/ConfirmationTokenRepository.java	(revision f7ad420eba0ae27b05bbff3f892e5fd48a4f4504)
+++ 	(revision )
@@ -1,17 +1,0 @@
-package mk.ukim.finki.db.distributorapp.repository;
-
-import lombok.NonNull;
-import mk.ukim.finki.db.distributorapp.security.ConfirmationToken;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-
-public interface ConfirmationTokenRepository extends JpaRepository<ConfirmationToken, Long> {
-
-    @Query(
-            nativeQuery = true,
-            value = "select * " +
-                    "from token " +
-                    "where t_value=?1"
-    )
-    ConfirmationToken findConfirmationTokenByToken(@NonNull String token);
-}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/TokenRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/TokenRepository.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/TokenRepository.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
@@ -0,0 +1,17 @@
+package mk.ukim.finki.db.distributorapp.repository;
+
+import lombok.NonNull;
+import mk.ukim.finki.db.distributorapp.security.Token;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+
+public interface TokenRepository extends JpaRepository<Token, Long> {
+
+    @Query(
+            nativeQuery = true,
+            value = "select * " +
+                    "from token " +
+                    "where t_value=?1"
+    )
+    Token findTokenByValue(@NonNull String token);
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java	(revision f7ad420eba0ae27b05bbff3f892e5fd48a4f4504)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/repository/UsersRepository.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
@@ -97,6 +97,4 @@
             @NonNull @Param("cty") Integer city_id,
             @NonNull @Param("role") String role,
-            @NonNull @Param("rtoken") String rtoken,
-            @NonNull @Param("rtoken_exp") LocalDateTime rtoken_exp,
             @NonNull @Param("clazz_") String clazz_);
 
@@ -186,7 +184,6 @@
                            r.region_name as regionName,
                            u.user_role as role,
-                           u.user_rtoken as rtoken,
-                           user_rtoken_exp as rtoken_exp,
-                           clazz_ as clazz_
+                           clazz_ as clazz_,
+                           u.user_active as userActive
                     from users u
                     join city c on u.city_id = c.city_id
Index: ckend/src/main/java/mk/ukim/finki/db/distributorapp/security/ConfirmationToken.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/ConfirmationToken.java	(revision f7ad420eba0ae27b05bbff3f892e5fd48a4f4504)
+++ 	(revision )
@@ -1,39 +1,0 @@
-package mk.ukim.finki.db.distributorapp.security;
-
-
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.entities.Users;
-
-import java.util.Date;
-import java.util.UUID;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@Entity
-@Table(name = "token")
-public class ConfirmationToken {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Column(name = "t_id")
-    private Long tokenId;
-
-    @Column(name = "t_value")
-    private String confirmationToken;
-
-    @Column(name = "t_date")
-    private Date createdDate;
-
-    @OneToOne(targetEntity = Users.class, fetch = FetchType.EAGER)
-    @JoinColumn(name = "t_user", referencedColumnName = "user_id", nullable = false, unique = true)
-    private Users user;
-
-    public ConfirmationToken(Users user) {
-        this.user = user;
-        createdDate = new Date();
-        confirmationToken = UUID.randomUUID().toString();
-    }
-}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/Token.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/Token.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/Token.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
@@ -0,0 +1,51 @@
+package mk.ukim.finki.db.distributorapp.security;
+
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import mk.ukim.finki.db.distributorapp.model.enumerations.TokenType;
+
+import java.time.LocalDateTime;
+import java.util.UUID;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "token")
+public class Token {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "t_id")
+    private Long tokenId;
+
+    @Column(name = "t_value", unique = true, nullable = false)
+    private String tokenValue;
+
+    @Column(name = "t_date")
+    private LocalDateTime createdDate;
+
+    @Enumerated(EnumType.STRING)
+    @Column(name = "t_type")
+    private TokenType tokenType;
+
+    @Column(name = "t_expiry")
+    private LocalDateTime tokenExpiryDate;
+
+    @Column(name = "t_validated_at")
+    private LocalDateTime tokenValidatedAt;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "t_user", referencedColumnName = "user_id", nullable = false, unique = true)
+    private Users user;
+
+    public Token(Users user, TokenType tokenType) {
+        this.user = user;
+        this.tokenType = tokenType;
+        this.createdDate = LocalDateTime.now();
+        this.tokenValue = UUID.randomUUID().toString();
+    }
+}
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthServiceImpl.java	(revision f7ad420eba0ae27b05bbff3f892e5fd48a4f4504)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/AuthServiceImpl.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
@@ -2,14 +2,12 @@
 
 import lombok.RequiredArgsConstructor;
-import mk.ukim.finki.db.distributorapp.model.dto.CreateDriverDto;
-import mk.ukim.finki.db.distributorapp.model.dto.CreateManagerDto;
-import mk.ukim.finki.db.distributorapp.model.dto.LoginRequestDto;
-import mk.ukim.finki.db.distributorapp.model.dto.RegisterRequestDto;
+import mk.ukim.finki.db.distributorapp.model.dto.*;
 import mk.ukim.finki.db.distributorapp.model.entities.Users;
 import mk.ukim.finki.db.distributorapp.model.enumerations.Role;
+import mk.ukim.finki.db.distributorapp.model.enumerations.TokenType;
 import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidArgumentsException;
 import mk.ukim.finki.db.distributorapp.model.exceptions.InvalidUserCredentialsException;
 import mk.ukim.finki.db.distributorapp.repository.*;
-import mk.ukim.finki.db.distributorapp.security.ConfirmationToken;
+import mk.ukim.finki.db.distributorapp.security.Token;
 import mk.ukim.finki.db.distributorapp.security.EmailService;
 import mk.ukim.finki.db.distributorapp.security.PassEncryption;
@@ -20,4 +18,5 @@
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
 import java.util.Optional;
 
@@ -27,5 +26,5 @@
 
     private final UsersRepository usersRepository;
-    private final ConfirmationTokenRepository confirmationTokenRepository;
+    private final TokenRepository tokenRepository;
     private final EmailService emailService;
     private final PassEncryptionPasswordEncoder passwordEncoder;
@@ -46,9 +45,13 @@
     @Override
     public ResponseEntity<?> confirmEmail(String confirmationToken) {
-        ConfirmationToken token = this.confirmationTokenRepository.findConfirmationTokenByToken(confirmationToken);
+        Token token = this.tokenRepository.findTokenByValue(confirmationToken);
 
         if (token != null) {
             Users user = this.usersRepository.findUserByUserEmailIgnoreCase(token.getUser().getUserEmail()).get();
-//            this.usersRepository.edit(user);
+            UserDto userDto = this.usersRepository.findUserDtoByEmail(token.getUser().getUserEmail());
+            userDto.setUserActive(true);
+//            this.usersRepository.edit(userDto);
+            token.setTokenValidatedAt(LocalDateTime.now());
+            this.tokenRepository.save(token);
             return ResponseEntity.ok("Email verified successfully!");
         }
@@ -83,6 +86,6 @@
         Users user = this.usersRepository.findUserByUserEmailIgnoreCase(registerRequest.getEmail()).orElseThrow(InvalidUserCredentialsException::new);
 
-        ConfirmationToken confirmationToken = new ConfirmationToken(user);
-        confirmationTokenRepository.save(confirmationToken);
+        Token token = new Token(user, TokenType.TOKEN_VERIFICATION);
+        tokenRepository.save(token);
 
         SimpleMailMessage mailMessage = new SimpleMailMessage();
@@ -90,6 +93,6 @@
         mailMessage.setSubject("Complete Registration!");
         mailMessage.setText(("To confirm your account, please click here: " +
-                "https://localhost:8080/register/confirm-account?token=" + confirmationToken.getConfirmationToken()));
-        System.out.println("Confirmation Token: " + confirmationToken.getConfirmationToken());
+                "https://localhost:8080/register/confirm-account?token=" + token.getTokenValue()));
+        System.out.println("Confirmation Token: " + token.getTokenValue());
         emailService.sendEmail(mailMessage);
 
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/PasswordResetController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/PasswordResetController.java	(revision f7ad420eba0ae27b05bbff3f892e5fd48a4f4504)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/security/auth/PasswordResetController.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
@@ -1,8 +1,12 @@
 package mk.ukim.finki.db.distributorapp.security.auth;
 
+import lombok.RequiredArgsConstructor;
 import mk.ukim.finki.db.distributorapp.model.dto.UserDto;
 import mk.ukim.finki.db.distributorapp.model.entities.Users;
+import mk.ukim.finki.db.distributorapp.model.enumerations.TokenType;
+import mk.ukim.finki.db.distributorapp.repository.TokenRepository;
 import mk.ukim.finki.db.distributorapp.security.EmailService;
 import mk.ukim.finki.db.distributorapp.security.PassEncryptionPasswordEncoder;
+import mk.ukim.finki.db.distributorapp.security.Token;
 import mk.ukim.finki.db.distributorapp.service.UsersService;
 import org.springframework.mail.SimpleMailMessage;
@@ -15,7 +19,7 @@
 
 import java.time.LocalDateTime;
-import java.util.UUID;
 
 @Controller
+@RequiredArgsConstructor
 @RequestMapping("/reset-password")
 public class PasswordResetController {
@@ -23,10 +27,6 @@
     private final EmailService emailService;
     private final PassEncryptionPasswordEncoder passwordEncoder;
+    private final TokenRepository tokenRepository;
 
-    public PasswordResetController(UsersService usersService, EmailService emailService, PassEncryptionPasswordEncoder passwordEncoder) {
-        this.usersService = usersService;
-        this.emailService = emailService;
-        this.passwordEncoder = passwordEncoder;
-    }
 
     @GetMapping("/request")
@@ -44,7 +44,6 @@
         }
 
-        String token = UUID.randomUUID().toString();
-        user.setUserResetToken(token);
-        user.setUserResetTokenExpiry(LocalDateTime.now().plusHours(1));
+        Token token = new Token(user, TokenType.TOKEN_RESET);
+        tokenRepository.save(token);
 
         UserDto dto = this.usersService.buildDto(user);
@@ -65,8 +64,9 @@
 
     @GetMapping("/reset-password")
-    public String showResetPasswordForm(@RequestParam("token") String token, Model model){
+    public String showResetPasswordForm(@RequestParam("token") String tokenValue, Model model){
 
-        Users user = usersService.findUserByResetToken(token);
-        if(user==null || user.getUserResetTokenExpiry().isBefore(LocalDateTime.now())){
+        Users user = usersService.findUserByResetToken(tokenValue);
+        Token token = tokenRepository.findTokenByValue(tokenValue);
+        if(user==null || token.getTokenExpiryDate().isBefore(LocalDateTime.now())){
             model.addAttribute("error", "Invalid or expired token.");
             return "authentication/reset-password";
@@ -78,11 +78,12 @@
     @PostMapping("/reset-password")
     public String handleResetPassword(
-            @RequestParam("token") String token,
+            @RequestParam("token") String tokenValue,
             @RequestParam("newPassword") String newPassword,
             @RequestParam("confirmPassword") String confirmPassword,
             Model model){
 
-        Users user = this.usersService.findUserByResetToken(token);
-        if (user == null || user.getUserResetTokenExpiry().isBefore(LocalDateTime.now())) {
+        Users user = usersService.findUserByResetToken(tokenValue);
+        Token token = tokenRepository.findTokenByValue(tokenValue);
+        if (user == null || token.getTokenExpiryDate().isBefore(LocalDateTime.now())) {
             model.addAttribute("error", "Invalid or expired token.");
             return "authentication/reset-password";
@@ -95,6 +96,7 @@
 
         user.setUserPassword(passwordEncoder.encodeWithSalt(newPassword,user.getUserSalt()));
-        user.setUserResetToken(null);
-        user.setUserResetTokenExpiry(null);
+        token.setTokenValidatedAt(LocalDateTime.now());
+        tokenRepository.save(token);
+
         UserDto dto = this.usersService.buildDto(user);
         this.usersService.edit(dto);
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java	(revision f7ad420eba0ae27b05bbff3f892e5fd48a4f4504)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/service/impl/UsersServiceImpl.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
@@ -28,7 +28,6 @@
                 user.getCity().getRegion().getRegionName(),
                 user.getUserRole().toString(),
-                user.getUserResetToken(),
-                user.getUserResetTokenExpiry(),
-                user.getClazz_());
+                user.getClazz_(),
+                user.getUserActive());
     }
 
@@ -59,10 +58,8 @@
                 userDto.getPhone(),
                 user.getUserSalt(),
-                user.getUserActive(),
+                userDto.getUserActive(),
                 userDto.getImage(),
                 userDto.getCityId(),
                 userDto.getRole(),
-                userDto.getRtoken(),
-                userDto.getRtoken_exp(),
                 userDto.getClazz_()
         );
Index: backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestUsersController.java
===================================================================
--- backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestUsersController.java	(revision f7ad420eba0ae27b05bbff3f892e5fd48a4f4504)
+++ backend/src/main/java/mk/ukim/finki/db/distributorapp/web/rest/RestUsersController.java	(revision aa771ac738b6b8afd57eef95a5bf5ef6fdb15367)
@@ -36,7 +36,6 @@
                     user.getCity().getRegion().getRegionName(),
                     user.getUserRole().toString(),
-                    user.getUserResetToken(),
-                    user.getUserResetTokenExpiry(),
-                    user.getClazz_()
+                    user.getClazz_(),
+                    user.getUserActive()
             );
             dtos.add(dto);
