Autouser log off user x++

 


public void autoUserLogOff()
{
SecurityUserRole securityUserRole;
SecurityRole securityRole;
container usersList;
SysClientSessions sysUserSession;
utcDateTime dateTime, dateTimeLocal;
TimeOfDay totalHours;
SysUsersTerminate usersTerminate;
SysUserInfo userInfo;
str timeValue;

#define.AOTName(‘-SYSADMIN-‘)
#define.Admin(‘Admin’)

dateTime = DateTimeUtil::newDateTime(systemDateGet(), timeNow());

while select Id from userInfo
where userInfo.Id != #Admin
{
select firstOnly RecId from securityUserRole where securityUserRole.User == userInfo.Id
exists join securityRole where securityRole.RecId == securityUserRole.SecurityRole
&& securityRole.AotName == #AOTName;

if (securityUserRole.RecId)
continue;

while select * from sysUserSession
where sysUserSession.userId == userInfo.Id
&& sysUserSession.sessionType == SessionType::GUI
{
dateTimeLocal = DateTimeUtil::applyTimeZoneOffset(sysUserSession.LoginDateTime, DateTimeUtil::getUserPreferredTimeZone());

totalHours = int642int(DateTimeUtil::getDifference(dateTime, dateTimeLocal));

timeValue = conPeek(str2con(time2StrHM(totalHours), “:”),1);

if( str2int(timeValue) >= 8)
{
usersList += [[sysUserSession.userId, sysUserSession.SessionId, sysUserSession.LoginDateTime]];
}
}
}

if (conLen(usersList) > 1)
{
usersTerminate = SysUsersTerminate::newUsersList(usersList);
usersTerminate.run();
}
}

Comments