Imports System
Imports System.Runtime.InteropServices
Imports SLXDBEngineLib
Imports System.Diagnostics
_
Public Class VbSecurityBroker : Implements ISLXSecurityBroker
Dim m_securityInit As SLXSECURITYINIT
Public Function GetSecurityObject(ByVal pSQLQuery As SLXDBEngineLib.SLXSQLQuery) _
As ISLXQuerySecurity Implements ISLXSecurityBroker.GetSecurityObject
If pSQLQuery.SQLType = SLXDBEngineLib.SLXSQLTYPE.SQLTYPE_SELECT Then
Dim result As ISLXQuerySecurity = New VbQuerySecurity(m_securityInit, pSQLQuery)
Return result
Else
Return Nothing
End If
End Function
Public Sub Initialize(ByRef pSecurityInit As SLXDBEngineLib.SLXSECURITYINIT) _
Implements SLXDBEngineLib.ISLXSecurityBroker.Initialize
m_securityInit = pSecurityInit
End Sub
Public Sub Uninitialize() Implements SLXDBEngineLib.ISLXSecurityBroker.Uninitialize
End Sub
End Class
vbQuerySecurity.vb Code Snippet:
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Runtime.InteropServices
Imports SLXDBEngineLib
Imports System.Diagnostics
Public Class VbQuerySecurity : Implements ISLXQuerySecurity
Dim m_sqlQuery As SLXSQLQuery
Dim m_securityInit As SLXSECURITYINIT
Public Sub New(ByVal securityInit As SLXSECURITYINIT, ByVal sqlQuery As SLXSQLQuery)
m_securityInit = securityInit
m_sqlQuery = sqlQuery
End Sub
Public Function Secure() As QRYSECRESULT Implements ISLXQuerySecurity.Secure
Dim res As QRYSECRESULT = QRYSECRESULT.QRYSEC_OK
Dim cond As String
Dim qSelect As SLXSelect = CType(m_sqlQuery, SLXSelect)
If qSelect Is Nothing Then Return res
For Each stmt As SelectStmt In qSelect.SelectStmts
For Each join As SQLJoin In stmt.SQLFrom.SQLJoins
'''YOUR SECURITY CODE GOES HERE
'''EXAMPLE:
'''If join.Name = "CONTACT" Then
'''cond = String.Format("{0}.ACCOUNTMANAGERID = '{1}'", join.Alias, '''m_securityInit.SLXUserID)
'''stmt.SQLWhere.AddConditionFromString(cond, '''SLXSQL_CONDITIONAL.SQLCONDITION_AND)
End If
Next
Next
Return res
End Function
End Class