Skip to content

Commit 0ce7721

Browse files
Added more functions to interact
1 parent 793cf52 commit 0ce7721

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

internal/session/interact.go

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ func (m *Manager) CreateSession(username, ipAddress, userAgent string) (uuid.UUI
1919
m.mutex.Lock()
2020
defer m.mutex.Unlock()
2121

22-
/* check if session exists */
23-
if _, exists := m.sessionsMap[username]; exists {
24-
return uuid.Nil, fmt.Errorf("user already exists in active sessions")
22+
/* check if session exists -> if yes, reset the timer and return the session ID */
23+
if session, exists := m.sessionsMap[username]; exists {
24+
m.RefreshTimer(username)
25+
return session.ID, nil
2526
}
2627

2728
/* Generate session metadata */
@@ -215,11 +216,7 @@ func (m *Manager) AddTransaction(session *Session, txn *types.Transaction) error
215216
}
216217

217218
/* refresh the session timer */
218-
func (m *Manager) refreshTimer(username string) error {
219-
/* thread safety for the manager */
220-
m.mutex.Lock()
221-
defer m.mutex.Unlock()
222-
219+
func (m *Manager) RefreshTimer(username string) error {
223220
/* get session from sessionMap */
224221
session, exists := m.sessionsMap[username]
225222
if !exists {
@@ -245,6 +242,29 @@ func (m *Manager) refreshTimer(username string) error {
245242
)
246243

247244
/* update Redis for session */
245+
m.saveSessionRedis(session)
248246

249247
return nil
250248
}
249+
250+
/* check is a session exists for a username */
251+
func (m *Manager) SessionExistance(username string) (uuid.UUID, bool, error) {
252+
/* thread safety for the manager */
253+
m.mutex.Lock()
254+
defer m.mutex.Unlock()
255+
256+
/* get session from sessionMap */
257+
session, exists := m.sessionsMap[username]
258+
if exists {
259+
260+
/* thread safety for the session */
261+
session.Mutex.Lock()
262+
defer session.Mutex.Unlock()
263+
264+
if session.Username == username {
265+
return session.ID, true, nil
266+
}
267+
}
268+
269+
return uuid.Nil, false, nil
270+
}

0 commit comments

Comments
 (0)