diff --git a/src/java/com/library/controller/admin/user/LogaoutAllUser.java b/src/java/com/library/controller/admin/user/LogaoutAllUser.java
index 5ae7d8b..fe0e95c 100644
--- a/src/java/com/library/controller/admin/user/LogaoutAllUser.java
+++ b/src/java/com/library/controller/admin/user/LogaoutAllUser.java
@@ -5,6 +5,7 @@
package com.library.controller.admin.user;
import com.library.factory.ServiceFactory;
+import com.library.service.TrackingUserService;
import com.library.service.UserService;
import com.library.util.SessionTracker;
import java.io.IOException;
@@ -32,8 +33,9 @@ public class LogaoutAllUser extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
-
+
userService.logoutAllUser();
+ TrackingUserService.clear();
HttpSession session = request.getSession();
session.setAttribute("logAll", "logout all users done!");
response.sendRedirect(request.getContextPath() + "/admin/user-manager");
diff --git a/src/java/com/library/controller/admin/user/LogoutUserController.java b/src/java/com/library/controller/admin/user/LogoutUserController.java
index bc03b4c..c2cd0e3 100644
--- a/src/java/com/library/controller/admin/user/LogoutUserController.java
+++ b/src/java/com/library/controller/admin/user/LogoutUserController.java
@@ -30,6 +30,7 @@
public class LogoutUserController extends HttpServlet {
UserDao userDao = new UserDaoImpl();
+
private final TrackingUserService trackService = ServiceFactory.getTrackingUserService();
private final UserService userService = ServiceFactory.getUserService();
diff --git a/src/java/com/library/controller/admin/user/UserBorrowingRecordController.java b/src/java/com/library/controller/admin/user/UserBorrowingRecordController.java
index b6b3113..ca9aef0 100644
--- a/src/java/com/library/controller/admin/user/UserBorrowingRecordController.java
+++ b/src/java/com/library/controller/admin/user/UserBorrowingRecordController.java
@@ -23,7 +23,7 @@
*/
@WebServlet(name = "ManagerUserController", urlPatterns = {"/admin/user-borrowing-record"})
public class UserBorrowingRecordController extends HttpServlet {
-
+
private final UserService userService = ServiceFactory.getUserService();
@Override
diff --git a/src/java/com/library/controller/filter/AuthenticationLoginController.java b/src/java/com/library/controller/filter/AuthenticationLoginController.java
index b073a2d..24ca43a 100644
--- a/src/java/com/library/controller/filter/AuthenticationLoginController.java
+++ b/src/java/com/library/controller/filter/AuthenticationLoginController.java
@@ -76,15 +76,14 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
String hashedPassword = userService.getHashedPassword(account);
if (HashPassword.checkPassword(pass, hashedPassword)) {
session.setAttribute("account", account);
- session.setAttribute("user", user);
- TrackingUserService.add(account);
- activityService.ActivityUser(1, account);
- userService.setOnlineUser(account);
- int userID = userDao.findUserID(account);
- trackService.updateData(session.getId(), userID);
- SessionTracker.addSessionToServer(session.getId(), session);
-
+ session.setAttribute("user", user);
+ SessionTracker.addSessionToServer(session.getId(), session);
if (user.getRole().equals("user")) {
+ TrackingUserService.add(account);
+ activityService.ActivityUser(1, account);
+ userService.setOnlineUser(account);
+ int userID = userDao.findUserID(account);
+ trackService.updateData(session.getId(), userID);
response.sendRedirect(request.getContextPath() + "/book/list");
return;
} else {
diff --git a/src/java/com/library/controller/filter/AutholizationUserController.java b/src/java/com/library/controller/filter/AutholizationUserController.java
index a0799fd..ce902ec 100644
--- a/src/java/com/library/controller/filter/AutholizationUserController.java
+++ b/src/java/com/library/controller/filter/AutholizationUserController.java
@@ -44,7 +44,7 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo
String[] publicPaths = {
"/login", "/register", "/book/list",
- "/resource/", "/images/", ".css", ".js", ".png", ".jpg"
+ "/resource/", "/images/", ".css", ".js", ".png", ".jpg", "/user/forgot-password"
};
for (String p : publicPaths) {
if (path.contains(p)) {
diff --git a/src/java/com/library/controller/user/ForgotPassword.java b/src/java/com/library/controller/user/ForgotPassword.java
index 860cb57..f9892ea 100644
--- a/src/java/com/library/controller/user/ForgotPassword.java
+++ b/src/java/com/library/controller/user/ForgotPassword.java
@@ -51,10 +51,10 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
Validator.requireNotEmpty(account);
userService.isAccountExist(account);
String tmp = RandomPassword.generatePassword();
- String subject = "Password Recovery - Library System";
+ String title = "Password Recovery - Library System";
String message = "
Your New Pass : " + tmp + "
";
userService.updatePassword(account, HashPassword.hash(tmp));
- MailService.send(account, subject, message);
+ MailService.send(account, title, message);
session.setAttribute("message", "we have sent your password via email");
response.sendRedirect(request.getContextPath() + "/user/forgot-password");
} catch (ValidationException e) {
diff --git a/src/java/com/library/controller/user/RegisterController.java b/src/java/com/library/controller/user/RegisterController.java
index 9135658..6d37100 100644
--- a/src/java/com/library/controller/user/RegisterController.java
+++ b/src/java/com/library/controller/user/RegisterController.java
@@ -2,7 +2,6 @@
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/Servlet.java to edit this template
*/
-
package com.library.controller.user;
import java.io.IOException;
@@ -14,61 +13,58 @@
import jakarta.servlet.http.HttpServletResponse;
import com.library.dao.UserDao;
import com.library.dao.UserDaoImpl;
+import com.library.exception.AccountHasExistedException;
+import com.library.exception.AccountNotExistException;
+import com.library.exception.ValidationException;
+
+import com.library.factory.ServiceFactory;
+import com.library.service.UserService;
import com.library.util.HashPassword;
+import com.library.util.Validator;
import jakarta.servlet.http.HttpSession;
+
+
/**
*
- * @author hieuchu
+ * @author hieuchu
*/
-@WebServlet(name="RegisterController", urlPatterns={"/user/register"})
+@WebServlet(name = "RegisterController", urlPatterns = {"/user/register"})
public class RegisterController extends HttpServlet {
- UserDao userDao = new UserDaoImpl();
-
+
+ private final UserService userService = ServiceFactory.getUserService();
+
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
+ throws ServletException, IOException {
HttpSession session = request.getSession();
String error = (String) session.getAttribute("error");
request.setAttribute("error", error);
session.removeAttribute("error");
- request.getRequestDispatcher("/WEB-INF/views/user/register.jsp").forward(request, response);
- }
+ request.getRequestDispatcher("/WEB-INF/views/user/register.jsp").forward(request, response);
+ }
+
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
+ throws ServletException, IOException {
HttpSession session = request.getSession();
String userName = request.getParameter("username");
String pass = request.getParameter("password");
- String account = request.getParameter("account");
- if(userName.trim().isEmpty()){
- session.setAttribute("error", "Vui lòng nhập họ và tên!");
- response.sendRedirect(request.getContextPath() + "/user/register");
- return;
- }
- else if(pass.trim().isEmpty()){
- session.setAttribute("error", "Vui lòng nhập mật khẩu!");
- response.sendRedirect(request.getContextPath() + "/user/register");
- return;
- }
- else if(account.trim().isEmpty()){
- session.setAttribute("error", "Vui lòng nhập tên đăng nhập!");
+ String account = request.getParameter("account");
+ try {
+ Validator.validateUserInput(account, pass);
+ userService.hasAccountExisted(account);
+ String hashedPassword = HashPassword.hash(pass);
+ userService.addUser(userName, account, hashedPassword);
+ session.setAttribute("success", "Resgiter Done !!!");
+ response.sendRedirect(request.getContextPath() + "/user/login");
+ } catch (AccountHasExistedException s) {
+ session.setAttribute("error", "account has existed !!!");
response.sendRedirect(request.getContextPath() + "/user/register");
- return;
- }
-
- if(userDao.checkUserExistence(account)){
- session.setAttribute("error", "Tên đăng nhập đã được sử dụng!");
+ } catch (ValidationException s1) {
+ session.setAttribute("error", s1.getMessage());
response.sendRedirect(request.getContextPath() + "/user/register");
- return;
- }
- else{
- String hashedPassword = HashPassword.hash(pass);
- userDao.addNewUser(userName, account, hashedPassword);
- session.setAttribute("success", "Bạn đã đăng kí thành công!");
- response.sendRedirect(request.getContextPath() + "/user/login");
- return;
+
}
}
-
}
diff --git a/src/java/com/library/controller/user/SettingController.java b/src/java/com/library/controller/user/SettingController.java
index d663f47..8027022 100644
--- a/src/java/com/library/controller/user/SettingController.java
+++ b/src/java/com/library/controller/user/SettingController.java
@@ -33,29 +33,19 @@ public class SettingController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
-
- HttpSession session = request.getSession(false);
-// if (session == null || session.getAttribute("account") == null) {
-// response.sendRedirect(request.getContextPath() + "/user/login");
-// return;
-// }
+ HttpSession session = request.getSession(false);
String account = (String) session.getAttribute("account");
try {
- UserProfileDTO dto = userService.getProfileUserByAccount(account);
-
+ UserProfileDTO dto = userService.getProfileUserByAccount(account);
String error = (String) session.getAttribute("changePasswordError");
- String success = (String) session.getAttribute("changePasswordSuccess");
-
+ String success = (String) session.getAttribute("changePasswordSuccess");
request.setAttribute("error", error);
- request.setAttribute("success", success);
-
+ request.setAttribute("success", success);
session.removeAttribute("changePasswordError");
session.removeAttribute("changePasswordSuccess");
- session.setAttribute("user", dto);
-
+ session.setAttribute("user", dto);
request.getRequestDispatcher("/WEB-INF/views/user/setting.jsp").forward(request, response);
return;
-
} catch (UserNotFoundException u) {
response.sendError(404, "User not found");
}
diff --git a/src/java/com/library/controller/user/UpdateProfileController.java b/src/java/com/library/controller/user/UpdateProfileController.java
index dbe1138..dce8198 100644
--- a/src/java/com/library/controller/user/UpdateProfileController.java
+++ b/src/java/com/library/controller/user/UpdateProfileController.java
@@ -83,13 +83,13 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
boolean checkUpdate = userService.updateProfileUser(account, avatar, fullName, userID);
if (checkUpdate) {
- request.setAttribute("isUpdated", "✅ You have updated your profile successfully!");
+ request.setAttribute("isUpdated", "You have updated your profile successfully!");
session.removeAttribute("user");
u.setNewProfile(fullName, account, avatar);
session.setAttribute("user", u);
activityService.ActivityUser(2, account);
} else {
- request.setAttribute("isUpdated", "❌ Failed to update your profile. Please try again!");
+ request.setAttribute("isUpdated", " Failed to update your profile");
}
request.getRequestDispatcher("/WEB-INF/views/user/setting.jsp").forward(request, response);
}
diff --git a/src/java/com/library/controller/user/UserDashBoardController.java b/src/java/com/library/controller/user/UserDashBoardController.java
index b33b12a..656d774 100644
--- a/src/java/com/library/controller/user/UserDashBoardController.java
+++ b/src/java/com/library/controller/user/UserDashBoardController.java
@@ -25,18 +25,14 @@
public class UserDashBoardController extends HttpServlet {
BookDao bookDao = new BookDaoImpl();
- BorrowingDao borrowDao = new BorrowingDaoImpl();
+ BorrowingDao borrowDao = new BorrowingDaoImpl();
+
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int totalBook = bookDao.totalBook();
- HttpSession session = request.getSession(false); //get available session
+ HttpSession session = request.getSession(false);
-// check if the session is null or if the user has not logged in yet
- if(session == null || session.getAttribute("account") == null){
- response.sendRedirect(request.getContextPath() + "/user/login");
- return ;
- }
// take current user account
String account = (String)session.getAttribute("account");
diff --git a/src/java/com/library/dao/BookDaoImpl.java b/src/java/com/library/dao/BookDaoImpl.java
index 24d6db3..ef4ab7b 100644
--- a/src/java/com/library/dao/BookDaoImpl.java
+++ b/src/java/com/library/dao/BookDaoImpl.java
@@ -47,7 +47,7 @@ public List getAllBook(){
b.setCoverImage(rs.getString("cover_image"));
Category category = new Category();
- category.setCategoryID(rs.getInt("category_ID"));
+ category.setCategoryID(rs.getInt("category_ID"));
category.setType(BookType.convert(rs.getString("category_name")));
b.setCategory(category);
list.add(b);
diff --git a/src/java/com/library/dao/UserDao.java b/src/java/com/library/dao/UserDao.java
index b211224..344bfdc 100644
--- a/src/java/com/library/dao/UserDao.java
+++ b/src/java/com/library/dao/UserDao.java
@@ -21,7 +21,7 @@ public interface UserDao {
boolean checkUserExistence(String username);
- void addNewUser(String username,String account,String password);
+ boolean addNewUser(String username,String account,String password);
boolean checkAdminLogin(String username,String pass);
diff --git a/src/java/com/library/dao/UserDaoImpl.java b/src/java/com/library/dao/UserDaoImpl.java
index 44d4f12..605e427 100644
--- a/src/java/com/library/dao/UserDaoImpl.java
+++ b/src/java/com/library/dao/UserDaoImpl.java
@@ -70,7 +70,7 @@ public boolean checkUserExistence(String username) {
}
@Override
- public void addNewUser(String username, String account, String password) {
+ public boolean addNewUser(String username, String account, String password) {
String sql = "insert into users(fullname, account, password, role, avatar) values (?, ?, ?, ?, ?)";
String role = "user";
String avatar = "ava.jpg";
@@ -82,10 +82,12 @@ public void addNewUser(String username, String account, String password) {
ps.setString(3, password);
ps.setString(4, role);
ps.setString(5, avatar);
- ps.executeUpdate();
+ int tmp = ps.executeUpdate();
+ if(tmp > 0 ) return true ;
} catch (SQLException e) {
e.printStackTrace();;
}
+ return false ;
}
@Override
diff --git a/src/java/com/library/dao/UserSessionDao.java b/src/java/com/library/dao/UserSessionDao.java
index 3f0b484..2ccdaf8 100644
--- a/src/java/com/library/dao/UserSessionDao.java
+++ b/src/java/com/library/dao/UserSessionDao.java
@@ -17,5 +17,5 @@ public interface UserSessionDao {
void updateData(String sessionID , int userID);
String getSessionID(int userID);
public void deleteUserFromSessions(Connection conn, int userId);
-
+ List getSessionIDUser();
}
diff --git a/src/java/com/library/dao/UserSessionDaoImpl.java b/src/java/com/library/dao/UserSessionDaoImpl.java
index 4be0149..a81acdd 100644
--- a/src/java/com/library/dao/UserSessionDaoImpl.java
+++ b/src/java/com/library/dao/UserSessionDaoImpl.java
@@ -80,7 +80,7 @@ public void updateData(String sessionID, int userID) {
public void deleteUserFromSessions(Connection conn, int userId) {
String sql = "DELETE FROM user_sessions WHERE user_id = ?";
try (
- PreparedStatement ps = conn.prepareStatement(sql)) {
+ PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, userId);
int tmp = ps.executeUpdate();
} catch (SQLException e) {
@@ -89,7 +89,24 @@ public void deleteUserFromSessions(Connection conn, int userId) {
}
-
-
+ @Override
+ public List getSessionIDUser() {
+ List listSession = new ArrayList<>();
+ String sql = " SELECT user_sessions.session_id\n"
+ + " FROM users\n"
+ + " JOIN user_sessions ON user_sessions.user_id = users.user_id\n"
+ + " WHERE users.role = 'user' ";
+
+ try (
+ Connection conn = DBConnection.getInstance().getConnection(); PreparedStatement ps = conn.prepareStatement(sql); ResultSet rs = ps.executeQuery();) {
+ while (rs.next()) {
+ listSession.add(rs.getString("session_id"));
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+
+ return listSession;
+ }
}
diff --git a/src/java/com/library/exception/AccountHasExistedException.java b/src/java/com/library/exception/AccountHasExistedException.java
new file mode 100644
index 0000000..9298519
--- /dev/null
+++ b/src/java/com/library/exception/AccountHasExistedException.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.library.exception;
+
+/**
+ *
+ * @author hieuchu
+ */
+public class AccountHasExistedException extends LibraryException{
+
+ public AccountHasExistedException(String message) {
+ super(message);
+ }
+
+}
diff --git a/src/java/com/library/factory/ServiceFactory.java b/src/java/com/library/factory/ServiceFactory.java
index d3a8d8d..2c6b261 100644
--- a/src/java/com/library/factory/ServiceFactory.java
+++ b/src/java/com/library/factory/ServiceFactory.java
@@ -19,7 +19,7 @@
* @author hieuchu
*/
public final class ServiceFactory {
-
+
private static ActivityService activityService;
private static BookService bookService;
private static BorrowingService borrowService;
@@ -56,7 +56,7 @@ public static BookService getBookService() {
return bookService;
}
- public static BorrowingService getBorrowService() {
+ public static BorrowingService getBorrowService() {
if (borrowService == null) {
borrowService = new BorrowingService(
DaoFactory.getBorrowingDao(),
@@ -98,6 +98,7 @@ public static ReturnService getReturnService() {
return returnService;
}
+
public static TrackingUserService getTrackingUserService() {
if (trackService == null) {
trackService = new TrackingUserService(
diff --git a/src/java/com/library/service/ActivityService.java b/src/java/com/library/service/ActivityService.java
index 87fc94e..0c02b70 100644
--- a/src/java/com/library/service/ActivityService.java
+++ b/src/java/com/library/service/ActivityService.java
@@ -64,10 +64,10 @@ public void BookActivityOfUser(String account, int actionID, int bookID) {
String actionName = this.actionDao.getNameByID(actionID);
String detail = "";
if (actionName.equalsIgnoreCase("borrow book")) {
- detail = account + "has just borrowed " + getBookTitle(bookID);
+ detail = account + " has just borrowed " + getBookTitle(bookID);
}
if (actionName.equalsIgnoreCase("return book")) {
- detail = account + "has just returned " + getBookTitle(bookID);
+ detail = account + " has just returned " + getBookTitle(bookID);
}
this.activityDao.insertData(userID, actionID, detail, LocalDateTime.now());
diff --git a/src/java/com/library/service/BookService.java b/src/java/com/library/service/BookService.java
index e49fed2..bba328d 100644
--- a/src/java/com/library/service/BookService.java
+++ b/src/java/com/library/service/BookService.java
@@ -84,5 +84,5 @@ public boolean addBook(Book b) {
public Map getNumberBorrowedBookByCategory() {
return this.bookDao.countingBorrowedBookByCategory();
}
-
+
}
diff --git a/src/java/com/library/service/MailService.java b/src/java/com/library/service/MailService.java
index 9f471db..1e5f953 100644
--- a/src/java/com/library/service/MailService.java
+++ b/src/java/com/library/service/MailService.java
@@ -24,15 +24,15 @@ public class MailService {
private static final String USERNAME = "hieuminh9873@gmail.com";
private static final String PASSWORD = "qifs buxh anin erpa";
- public static void send(String to, String subject, String messageText) {
- Properties props = new Properties();
- props.put("mail.smtp.auth", "true"); // true : notice to server need to authentication password and gmail
- props.put("mail.smtp.starttls.enable", "true"); // true : use encytion TLS for sending email
- props.put("mail.smtp.host", "smtp.gmail.com"); // server addderess
- props.put("mail.smtp.port", "587"); // 587 entry to send email to starttls
+ public static void send(String account, String title, String messageText) {
+ Properties config = new Properties();
+ config.put("mail.smtp.auth", "true"); // true : notice to server need to authentication password and gmail
+ config.put("mail.smtp.starttls.enable", "true"); // true : use encytion TLS for sending email
+ config.put("mail.smtp.host", "smtp.gmail.com"); // server addderess
+ config.put("mail.smtp.port", "587"); // 587 entry to send email to starttls
- Session session = Session.getInstance(props, new Authenticator() {
+ Session session = Session.getInstance(config, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USERNAME, PASSWORD); // return password and account to server gmail
@@ -42,8 +42,8 @@ protected PasswordAuthentication getPasswordAuthentication() {
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(USERNAME, "Library System", "UTF-8"));
- message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
- message.setSubject(subject, "UTF-8");
+ message.setRecipient(Message.RecipientType.TO, new InternetAddress(account));
+ message.setSubject(title, "UTF-8");
message.setContent(messageText, "text/html; charset=UTF-8");
Transport.send(message); // send message to server
diff --git a/src/java/com/library/service/TrackingUserService.java b/src/java/com/library/service/TrackingUserService.java
index 96823f9..0a6e94f 100644
--- a/src/java/com/library/service/TrackingUserService.java
+++ b/src/java/com/library/service/TrackingUserService.java
@@ -36,6 +36,9 @@ public static void remove(String account){
public static int getSize(){
return list.size();
}
+ public static void clear(){
+ list.clear();
+ }
/**
* updateDate : insert data into user_session table after user login in
diff --git a/src/java/com/library/service/UserService.java b/src/java/com/library/service/UserService.java
index 9091662..873e80e 100644
--- a/src/java/com/library/service/UserService.java
+++ b/src/java/com/library/service/UserService.java
@@ -8,6 +8,7 @@
import com.library.dao.UserDao;
import com.library.dao.UserSessionDao;
import com.library.enums.UserStatus;
+import com.library.exception.AccountHasExistedException;
import com.library.exception.AccountNotExistException;
import com.library.exception.UserNotFoundException;
import com.library.model.dto.UserBorrowRecordDTO;
@@ -64,14 +65,17 @@ public UserProfileDTO getProfileUserByAccount(String account) {
public List showProfileUser() {
List entityList = this.userDao.getALLUser();
List dtoList = new ArrayList<>();
- for (User u : entityList) {
+ for (User u : entityList) {
UserProfileDTO dto = new UserProfileDTO();
- dto.setAccount(u.getAccount());
+ if(u.getRole().equals("user")){
+ dto.setAccount(u.getAccount());
dto.setFullName(u.getFullname());
dto.setUserID(u.getUserID());
dto.setAvatar(u.getAvatar());
dto.setStatus(u.getStatus());
dtoList.add(dto);
+ }
+
}
return dtoList;
}
@@ -111,7 +115,6 @@ public String getHashedPassword(String account) {
public void logoutAllUser() {
Collection session = SessionTracker.getAllValue();
-
for (HttpSession s : session) {
s.invalidate();
}
@@ -129,9 +132,19 @@ public boolean updatePassword(String account, String password) {
}
public void isAccountExist(String account) {
- if (!this.userDao.checkUserExistence(account)) {
+ if (this.userDao.checkUserExistence(account) == false ) {
throw new AccountNotExistException("The account : " + account + " not exist!!");
}
}
+
+ public void hasAccountExisted(String account) {
+ if (this.userDao.checkUserExistence(account)) {
+ throw new AccountHasExistedException("The account : " + account + " has existed!!");
+ }
+ }
+
+ public boolean addUser(String username, String account , String password){
+ return this.userDao.addNewUser(username, account, password);
+ }
}
diff --git a/src/java/com/library/util/DBConnection.java b/src/java/com/library/util/DBConnection.java
index 40a461c..3decf0b 100644
--- a/src/java/com/library/util/DBConnection.java
+++ b/src/java/com/library/util/DBConnection.java
@@ -18,7 +18,7 @@
public class DBConnection {
private static final Logger logger = LoggerFactory.getLogger(DBConnection.class);
- private static DBConnection instance;
+ private static DBConnection instance ;
private static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=LibraryManagement;encrypt=true;trustServerCertificate=true";
private static final String USER = "sa";
diff --git a/src/java/com/library/util/SessionTracker.java b/src/java/com/library/util/SessionTracker.java
index 2dcabd1..f5e9263 100644
--- a/src/java/com/library/util/SessionTracker.java
+++ b/src/java/com/library/util/SessionTracker.java
@@ -4,11 +4,16 @@
*/
package com.library.util;
+import com.library.dao.UserSessionDao;
+import com.library.dao.UserSessionDaoImpl;
+import com.library.factory.DaoFactory;
import jakarta.servlet.http.HttpSession;
import jakarta.servlet.http.HttpSessionEvent;
import jakarta.servlet.http.HttpSessionListener;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -18,6 +23,7 @@
public class SessionTracker implements HttpSessionListener {
private static final Map map = new HashMap<>();
+ public static UserSessionDao dao = DaoFactory.getUserSessionDao();
@Override
public void sessionCreated(HttpSessionEvent se) {
@@ -32,13 +38,20 @@ public void sessionDestroyed(HttpSessionEvent se) {
public static HttpSession getSessionOnServer(String sessionIDFromDB) {
return map.get(sessionIDFromDB);
}
-
+
public static void addSessionToServer(String sessionIDFromDB, HttpSession se) {
map.put(sessionIDFromDB, se);
}
- public static Collection getAllValue() {
- return map.values();
+ public static List getAllValue() {
+ List listSessionID = new ArrayList<>();
+ List listSession = dao.getSessionIDUser();
+ for(String s : listSession){
+ if(s.equals(map.keySet())){
+ listSessionID.add((HttpSession) map.values());
+ }
+ }
+ return listSessionID;
}
public static boolean isEmpty() {
diff --git a/src/java/com/library/util/TimeFormatter.java b/src/java/com/library/util/TimeFormatter.java
index bcc94ee..76dd8fa 100644
--- a/src/java/com/library/util/TimeFormatter.java
+++ b/src/java/com/library/util/TimeFormatter.java
@@ -21,14 +21,14 @@ public static String timeAgo(LocalDateTime logTime) {
Duration duration = Duration.between(logTime, LocalDateTime.now()); // 1h:00 -> 1h:05 => 5
long minutes = duration.toMinutes(); // convert 5 to 5 minutes
if (minutes < 1) {
- return timeFormatted = "vừa xong";
+ return timeFormatted = "just now";
}
if (minutes < 60) {
- return timeFormatted = minutes + " phút trước";
+ return timeFormatted = minutes + "minutes ago";
}
long hours = duration.toHours(); // convert to hour unit
if (hours < 24) {
- return timeFormatted = hours + " giờ trước";
+ return timeFormatted = hours + " hours ago";
}
}
return null;
diff --git a/src/java/com/library/util/Validator.java b/src/java/com/library/util/Validator.java
index 7aae270..e6dde2d 100644
--- a/src/java/com/library/util/Validator.java
+++ b/src/java/com/library/util/Validator.java
@@ -40,11 +40,10 @@ public static void validateSearchBook(String value) {
*/
public static void validateUserAccount(String account) {
- String gmailRegex = "^[a-z0-9]([a-z0-9._%+-]{0,62}[a-z0-9])?@gmail\\.com$";
+ String gmailRegex = "^[A-Za-z0-9]([A-Za-z0-9._%+-]{0,62}[A-Za-z0-9])?@gmail\\.com$";
if (!account.matches(gmailRegex)) {
throw new ValidationException("Account must be email format!");
}
-
}
public static void validateUserInput(String account, String password) {
diff --git a/web/WEB-INF/views/user/setting.jsp b/web/WEB-INF/views/user/setting.jsp
index 683064e..f6b0479 100644
--- a/web/WEB-INF/views/user/setting.jsp
+++ b/web/WEB-INF/views/user/setting.jsp
@@ -585,7 +585,7 @@
- ${isUpdated}
+ ${isUpdated}