public void SessionStarted(IClarifySession session)
        {
            if (!_schemaCache.IsValidTable("fc_login_monitor"))
            {
                _logger.LogDebug("Unable to log user authentication. No fc_login_monitor table is present.");
                return;
            }

            var host = GetLocalhostFqdn();

            _logger.LogDebug("Logging application {0} authentication for user {1} on host {2} with session id {3}.", _settings.ApplicationName, session.UserName, host, session.Id);

            var dataSet = session.CreateDataSet();

            var monitorGeneric = dataSet.CreateGeneric("fc_login_monitor");
            var monitorRow     = monitorGeneric.AddNew();

            monitorRow["application"]  = _settings.ApplicationName;
            monitorRow["login_time"]   = FCGeneric.NOW_DATE;
            monitorRow["logout_time"]  = FCGeneric.MIN_DATE;
            monitorRow["login_name"]   = session.UserName;
            monitorRow["fcsessionid"]  = session.Id.ToString();
            monitorRow["num_sessions"] = _sessionUsageReporter.GetActiveSessionCount();

            if (_schemaCache.IsValidField("fc_login_monitor", "server"))
            {
                monitorRow["server"] = host;
            }

            monitorRow["comments"] = _applicationUrl.Url;

            monitorRow.RelateByID(session.SessionUserID, "fc_login_monitor2user");
            monitorRow.Update();
        }
예제 #2
0
        public void SessionExpired(IClarifySession session)
        {
            var id = session.Id;

            if (!_schemaCache.IsValidTable("fc_login_monitor"))
            {
                _logger.LogDebug("Unable to log session expiration. No fc_login_monitor table is present.");
                return;
            }

            var dataSet        = _session().CreateDataSet();
            var monitorGeneric = dataSet.CreateGenericWithFields("fc_login_monitor");

            monitorGeneric.Filter(f => f.Equals("fcsessionid", id.ToString()));
            monitorGeneric.Query();

            if (monitorGeneric.Count < 1)
            {
                _logger.LogDebug("Could not find expired session {0} row in login monitor", id);
                return;
            }

            var monitorRow = monitorGeneric.DataRows().First();

            monitorRow["logout_time"] = FCGeneric.NOW_DATE;
            monitorRow.Update();

            _logger.LogDebug("Set logout time for session {0} in login monitor.", id);
        }