public static bool CheckForUserTokenAndUpdateRollingTimeout(ISqlFactory sqlFactory, string user, string id, System.DateTime rollingExpiryTime, System.DateTime currentTime) { bool successResult = false; try { SecurityTokenCache_Ex item = new SecurityTokenCache_Ex(); item.SqlFactory = sqlFactory; item._UserName = user; item._SessionSecurityTokenID = id; item._RollingExpiryTime = rollingExpiryTime; item._CurrentTime = currentTime; int result = item.Update(" RollingExpiryTime = @RollingExpiryTime", " UserName = @UserName and SessionSecurityTokenID = @SessionSecurityTokenID and RollingExpiryTime > @CurrentTime"); if (result > 0) { successResult = true; } } catch (Exception ex) { new Exception("UserName: " + user, ex).ToEventLog(); return(false); } return(successResult); }
public static bool AddOrUpdate(ISqlFactory sqlFactory, string endpointID, string contextID, string keyGeneration, string securityTokenValue, string sessionSecurityTokenID, System.DateTime expiryTime, System.DateTime rollingExpiryTime, string userName) { if (securityTokenValue == null || sessionSecurityTokenID == null) { return(false); } try { SecurityTokenCache_Ex token = new SecurityTokenCache_Ex() { _Id = Guid.NewGuid(), _ContextID = contextID, _EndpointID = endpointID, _KeyGeneration = keyGeneration, _ExpiryTime = expiryTime, _SessionSecurityTokenValue = Encoding.UTF8.GetBytes(securityTokenValue), _SessionSecurityTokenID = sessionSecurityTokenID, _UserName = userName, _RollingExpiryTime = rollingExpiryTime, SqlFactory = sqlFactory }; token.Insert(); } catch (Exception) { //failed, probably dublicate key, try to update try { var existingToken = new SecurityTokenCache_Ex() { _ContextID = contextID, _EndpointID = endpointID, _KeyGeneration = keyGeneration, _ExpiryTime = expiryTime, _SessionSecurityTokenValue = Encoding.UTF8.GetBytes(securityTokenValue), _SessionSecurityTokenID = sessionSecurityTokenID, _UserName = userName, _RollingExpiryTime = rollingExpiryTime, SqlFactory = sqlFactory }; int updated = existingToken.Update("ContextID = @ContextID, EndpointID = @EndpointID, KeyGeneration = @KeyGeneration, ExpiryTime = @ExpiryTime, RollingExpiryTime = @RollingExpiryTime, SessionSecurityTokenValue = @SessionSecurityTokenValue, SessionSecurityTokenID = @SessionSecurityTokenID ", " UserName = @UserName and EndpointID = @EndpointID and ExpiryTime <= @ExpiryTime"); if (updated == 0) { throw new Exception("Newer token in cache."); } } catch (Exception ex) { new Exception("UserName: " + userName, ex).ToEventLog(); return(false); } } return(true); }