SHA256
09 12 25
Авторификация работает и тест авторификации проходит. (создание пользователя, два этапа создания сессии и рефреш сессии)
This commit is contained in:
@@ -5,7 +5,11 @@ import shine.db.entities.ActiveSession;
|
||||
|
||||
import java.sql.*;
|
||||
|
||||
/** Здесь мы храним данные об активных сессиях пользователя (для wss соединений). */
|
||||
/**
|
||||
* DAO для таблицы active_sessions.
|
||||
*
|
||||
* Здесь мы храним данные об активных сессиях пользователя (для wss-соединений).
|
||||
*/
|
||||
public final class ActiveSessionsDAO {
|
||||
|
||||
private static volatile ActiveSessionsDAO instance;
|
||||
@@ -25,18 +29,21 @@ public final class ActiveSessionsDAO {
|
||||
return instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Вставка новой сессии.
|
||||
*/
|
||||
public void insert(ActiveSession session) throws SQLException {
|
||||
String sql = """
|
||||
INSERT INTO active_sessions (
|
||||
sessionId,
|
||||
loginId,
|
||||
session_pwd,
|
||||
storage_pwd,
|
||||
session_created_ms,
|
||||
last_auth_ms,
|
||||
push_endpoint,
|
||||
push_p256dh_key,
|
||||
push_auth_key
|
||||
sessionPwd,
|
||||
storagePwd,
|
||||
sessionCreatedAtMs,
|
||||
lastAuthirificatedAtMs,
|
||||
pushEndpoint,
|
||||
pushP256dhKey,
|
||||
pushAuthKey
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
""";
|
||||
|
||||
@@ -50,22 +57,26 @@ public final class ActiveSessionsDAO {
|
||||
ps.setString(7, session.getPushEndpoint());
|
||||
ps.setString(8, session.getPushP256dhKey());
|
||||
ps.setString(9, session.getPushAuthKey());
|
||||
|
||||
ps.executeUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить сессию по sessionId.
|
||||
*/
|
||||
public ActiveSession getBySessionId(String sessionId) throws SQLException {
|
||||
String sql = """
|
||||
SELECT
|
||||
sessionId,
|
||||
loginId,
|
||||
session_pwd,
|
||||
storage_pwd,
|
||||
session_created_ms,
|
||||
last_auth_ms,
|
||||
push_endpoint,
|
||||
push_p256dh_key,
|
||||
push_auth_key
|
||||
sessionPwd,
|
||||
storagePwd,
|
||||
sessionCreatedAtMs,
|
||||
lastAuthirificatedAtMs,
|
||||
pushEndpoint,
|
||||
pushP256dhKey,
|
||||
pushAuthKey
|
||||
FROM active_sessions
|
||||
WHERE sessionId = ?
|
||||
""";
|
||||
@@ -81,6 +92,23 @@ public final class ActiveSessionsDAO {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Обновить только lastAuthirificatedAtMs для конкретной сессии.
|
||||
*/
|
||||
public void updateLastAuthirificatedAtMs(String sessionId, long lastAuthMs) throws SQLException {
|
||||
String sql = """
|
||||
UPDATE active_sessions
|
||||
SET lastAuthirificatedAtMs = ?
|
||||
WHERE sessionId = ?
|
||||
""";
|
||||
|
||||
try (PreparedStatement ps = db.getConnection().prepareStatement(sql)) {
|
||||
ps.setLong(1, lastAuthMs);
|
||||
ps.setString(2, sessionId);
|
||||
ps.executeUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаление записи по sessionId.
|
||||
* Если записи нет — просто ничего не удалит (0 строк).
|
||||
@@ -94,42 +122,24 @@ public final class ActiveSessionsDAO {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Обновить поле last_auth_ms (lastAuthirificatedAtMs) для конкретной сессии.
|
||||
* Остальные поля записи не меняются.
|
||||
*/
|
||||
public void updateLastAuthirificatedAtMs(String sessionId, long newTimeMs) throws SQLException {
|
||||
String sql = """
|
||||
UPDATE active_sessions
|
||||
SET last_auth_ms = ?
|
||||
WHERE sessionId = ?
|
||||
""";
|
||||
|
||||
try (PreparedStatement ps = db.getConnection().prepareStatement(sql)) {
|
||||
ps.setLong(1, newTimeMs);
|
||||
ps.setString(2, sessionId);
|
||||
ps.executeUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
private ActiveSession mapRow(ResultSet rs) throws SQLException {
|
||||
String sessionId = rs.getString("sessionId");
|
||||
long loginId = rs.getLong("loginId");
|
||||
String sessionPwd = rs.getString("session_pwd");
|
||||
String storagePwd = rs.getString("storage_pwd");
|
||||
long sessionCreatedMs = rs.getLong("session_created_ms");
|
||||
long lastAuthMs = rs.getLong("last_auth_ms");
|
||||
String pushEndpoint = rs.getString("push_endpoint");
|
||||
String pushP256dhKey = rs.getString("push_p256dh_key");
|
||||
String pushAuthKey = rs.getString("push_auth_key");
|
||||
String sessionPwd = rs.getString("sessionPwd");
|
||||
String storagePwd = rs.getString("storagePwd");
|
||||
long sessionCreatedAtMs = rs.getLong("sessionCreatedAtMs");
|
||||
long lastAuthirificatedAtMs = rs.getLong("lastAuthirificatedAtMs");
|
||||
String pushEndpoint = rs.getString("pushEndpoint");
|
||||
String pushP256dhKey = rs.getString("pushP256dhKey");
|
||||
String pushAuthKey = rs.getString("pushAuthKey");
|
||||
|
||||
return new ActiveSession(
|
||||
sessionId,
|
||||
loginId,
|
||||
sessionPwd,
|
||||
storagePwd,
|
||||
sessionCreatedMs,
|
||||
lastAuthMs,
|
||||
sessionCreatedAtMs,
|
||||
lastAuthirificatedAtMs,
|
||||
pushEndpoint,
|
||||
pushP256dhKey,
|
||||
pushAuthKey
|
||||
|
||||
Reference in New Issue
Block a user