This function can be used to limit the number of concurrent user sessions by the same user to a specified number of sessions.To implement follow the steps below (has only been tested on SQL Server with SQL Auth.
Step 1) Paste this function in to the top of the Common Script workflow module (NOTE: You will need to change the string "SiteAdminDB" to the value of the site admin DB, by default this is "qcsiteadmin_db"
Function user_IsLoggedIn(theUser)
On Error Resume Next
Dim SiteAdminDB : SiteAdminDB = "qcsiteadmin_db_ALM_11_50"
Dim TDC, COM, SQL, RecSet
Set TDC = TDConnection
Set COM = TDC.Command
SQL = "SELECT COUNT(LS_ID) FROM " & SiteAdminDB & ".td.LOGIN_SESSIONS " &_
"WHERE LS_USER_NAME = " & "'" & theUser & "'" & " AND LS_CLIENT_TYPE <> 'SiteAdmin'"
COM.CommandText = SQL
Set RecSet = COM.Execute
RC = RecSet(0)
'MsgBox "RC is: " & RC
user_IsLoggedIn = RC
'MsgBox "User has " & user_IsLoggedIn & " sessions logged."
On Error GoTo 0
End Function
Step 2) In the CanLogin function in the Common Script workflow module paste the following code (NOTE: You will need to commend out CanLogin = DefaultRes)
Dim userSessions : userSessions = user_IsLoggedIn(UserName)
'MsgBox "The number of active user sessions is: " & userSessions
If userSessions >= 2 Then
CanLogin = False
MsgBox "You already have " & userSessions & " ALM session(s) established. No Concurrent Login Sessions allowed.", vbCritical, "NO MILTI SESSION LOGINS"
Else
CanLogin = True
End If
'CanLogin = DefaultRes
You have implemented the user sessions limiter workflow. If you wish to change the number of concurrent user sessions to more than 1 then change the comparison operator value integer in the if statement.
If you try and log-in and your profile has a current session you will receive the following error message. The text can be adjusted.