I am stuck i a situation where i want to store the...
# cfml-general
g
I am stuck i a situation where i want to store the sessionkeys everytime some logins as another user i keeps the same oldusername and oldname , it does not change it creates history but does not change the values, i want that every new user coming as support, it should create the array and proper values , please guide
Copy code
<!--- Keys to maintain during session changes --->
    <cfset keysToKeep = ['username', 'password','LoginEmail','loginReason','oldUser','keySafe','oldUserFullName','loginid','login']>
    
    <!--- Store current session state --->
    <cfset currentSession = duplicate(session)>
    <!--- Get existing history or create new array --->
    <cfset SupportHistory = []>
    <cfif structKeyExists(session, "SupportHistory")>
        <cfset SupportHistory = duplicate(session.SupportHistory)>
    </cfif>
    
    <!--- Get previous user's info --->
    <cfset previousUsername = "">
    <cfset previousFullName = "">
    
    <cfif arrayLen(SupportHistory)>
        <cfset previousData = SupportHistory[arrayLen(SupportHistory)]>
        <cfif structKeyExists(previousData, "username")>
            <cfset previousUsername = previousData.username>
        </cfif>
        <cfif structKeyExists(previousData, "login")>
            <cfset previousFullName = previousData.login>
        </cfif>
    </cfif>
    
    <!--- Update current session with previous user's info --->
    <cfset currentSession.oldUser = previousUsername>
    <cfset currentSession.oldUserFullName = previousFullName>	
    
    <!--- Store current user's data --->
    <cfset userSnapshot = {}>
    <cfloop array="#keysToKeep#" index="key">
        <cfif structKeyExists(currentSession, key)>
            <cfset userSnapshot[key] = currentSession[key]>
        </cfif>
    </cfloop>
    
    <!--- Get existing history or create new array --->
    <cfset SupportHistory = []>
    <cfif structKeyExists(session, "SupportHistory")>
        <cfset SupportHistory = duplicate(session.SupportHistory)>
    </cfif>
    
    <!--- Add current user to Support history --->
    <cfset arrayAppend(SupportHistory, userSnapshot)>
    
    <!--- Clear the session --->
    <cfset structClear(session)>
    
    <!--- Restore Support history --->
    <cfset session.SupportHistory = SupportHistory>
    
    <!--- Get the most recent user's data --->
    <cfif arrayLen(session.SupportHistory)>
        <cfset latestUserData = session.SupportHistory[arrayLen(session.SupportHistory)]>
        <cfloop collection="#latestUserData#" item="key">
            <cfset session[key] = latestUserData[key]>
        </cfloop>
    </cfif>