Limiting User to One Login
Greetings,
The goal is: Stop multiple logins with same user info
CF Version: 8,0,1,195765
MySQL Version: 5.5.14
DW Version: CS5
<cfapplication
name="yfirsUserLogin"
clientmanagement="Yes"
sessionmanagement="Yes"
sessiontimeout="#CreateTimeSpan(0,0,20,0)#"
applicationtimeout="#CreateTimeSpan(0,0,20,0)#">
<cfparam name="session.allowin" default="false">
<cfparam name="session.record_id" default="0">
<cfif session.allowin neq "true">
<cfif ListLast(CGI.SCRIPT_NAME, "/") EQ "login.cfm">
<cfelseif ListLast(CGI.SCRIPT_NAME, "/") EQ "login_process.cfm">
<cfelse>
<cflocation url="http://localhost/firebureau/yfirs/login_alert.cfm" addtoken="no">
<cfabort />
</cfif>
</cfif>
--- Query ---
<cfquery name="rs_verify" datasource="yfirssql01">
SELECT record_id, agency_id, user_id . . . .
FROM agency_users
WHERE
user_login_name = <cfqueryparam cfsqltype="cf_sql_varchar" value="#login#"> AND
user_login_password = <cfqueryparam cfsqltype="cf_sql_varchar" value="#password#">
</cfquery>
--- Login checker ---
<cfif user_info.recordCount>
<cfset liveSessions = createObject("java","coldfusion.runtime.SessionTracker")>
<cfset sessions = tracker.getSessionCollection(application.applicationName)>
<cfloop item="loopSession" collection="#sessions#">
<cfscript>
thisSession = sessions[loopSession];
thisUser = thisSession.userID;
if(thisUser EQ user_info.user_id){
thisSession.setMaxInactiveInterval(1);
break;
}
</cfscript>
</cfloop>
<!--- log them in --->
--- additional code here ---
<cfset session.userID = user_info.userID>
</cfif>
