127 lines
5.5 KiB
VB.net
127 lines
5.5 KiB
VB.net
Imports System
|
|
Imports System.ComponentModel
|
|
Imports System.Collections.Generic
|
|
Imports System.Diagnostics
|
|
Imports System.Text
|
|
|
|
Imports DevExpress.ExpressApp
|
|
Imports DevExpress.ExpressApp.Actions
|
|
Imports DevExpress.Persistent.Base
|
|
|
|
Imports DevExpress.ExpressApp.SystemModule
|
|
Imports DevExpress.Xpo
|
|
Imports DevExpress.Data.Filtering
|
|
|
|
|
|
Public Class NavigationItemPermission
|
|
Inherits DevExpress.ExpressApp.WindowController
|
|
Private _navigationController As ShowNavigationItemController
|
|
Private _ID As Long = 1
|
|
Public Sub New()
|
|
MyBase.New()
|
|
|
|
'This call is required by the Component Designer.
|
|
InitializeComponent()
|
|
RegisterActions(components)
|
|
|
|
End Sub
|
|
Protected Overrides Sub OnFrameAssigned()
|
|
|
|
MyBase.OnFrameAssigned()
|
|
'_navigationController = Frame.GetController(Of ShowNavigationItemController)()
|
|
'If _navigationController IsNot Nothing Then
|
|
' AddHandler _navigationController.ItemsInitialized, AddressOf ItemsInitialized
|
|
'End If
|
|
End Sub
|
|
Protected Overrides Sub OnActivated()
|
|
MyBase.OnActivated()
|
|
End Sub
|
|
|
|
Private Sub ItemsInitialized(sender As Object, e As EventArgs)
|
|
Dim _ChoiceActionItem As ChoiceActionItem
|
|
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
|
|
Dim _uow As New UnitOfWork(_onew.Session.DataLayer)
|
|
Dim _NavigationItemRole_Collection As XPCollection(Of NavigationItemRole) = New XPCollection(Of NavigationItemRole)(_onew.Session, CriteriaOperator.Parse("1=1"))
|
|
|
|
|
|
_uow.Delete(New XPCollection(Of ModelNavigation)(_uow))
|
|
_uow.CommitChanges()
|
|
|
|
For Each _ChoiceActionItem In _navigationController.ShowNavigationItemAction.Items
|
|
|
|
RecursiveSetPermission(_ChoiceActionItem, _NavigationItemRole_Collection)
|
|
If SecuritySystem.CurrentUserName = "SysAdmin" Then
|
|
RecursiveAddModelNavigation(_uow, Nothing, _ChoiceActionItem)
|
|
End If
|
|
Next
|
|
_uow.CommitChanges()
|
|
|
|
End Sub
|
|
|
|
Sub RecursiveSetPermission(_ChoiceActionItem As ChoiceActionItem, _NavigationItemRole_Collection As XPCollection(Of NavigationItemRole))
|
|
Dim _NavigationItemRole As NavigationItemRole
|
|
Dim _ChoiceActionItem_Child As ChoiceActionItem
|
|
|
|
If _ChoiceActionItem.Items.Count > 0 Then
|
|
For Each _ChoiceActionItem_Child In _ChoiceActionItem.Items
|
|
RecursiveSetPermission(_ChoiceActionItem_Child, _NavigationItemRole_Collection)
|
|
Next
|
|
End If
|
|
If _ChoiceActionItem.Id = "@NavigationItemPermission" Then
|
|
If SecuritySystem.CurrentUserName <> "SysAdmin" Then
|
|
_ChoiceActionItem.Active.SetItemValue("", False)
|
|
End If
|
|
End If
|
|
For Each _NavigationItemRole In _NavigationItemRole_Collection
|
|
If _NavigationItemRole.ChoiceActionItemId = _ChoiceActionItem.Id Then
|
|
If _NavigationItemRole.Role IsNot Nothing Then
|
|
If SecuritySystemHelper.IsUserInRoleCurrentUser(_NavigationItemRole.Role.Name) Then
|
|
_ChoiceActionItem.Active.SetItemValue("", False)
|
|
End If
|
|
End If
|
|
If _NavigationItemRole.SubcontractorRoles IsNot Nothing Then
|
|
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
|
|
Dim _SubcontractorUserRoles_Collection As New XPCollection(Of SubcontractorUserRoles)(_onew.Session, CriteriaOperator.Parse("User.Oid=?", TryCast(SecuritySystem.CurrentUser, DevExpress.Persistent.BaseImpl.User).Oid))
|
|
|
|
For Each _SubcontractorUserRoles As SubcontractorUserRoles In _SubcontractorUserRoles_Collection
|
|
If _NavigationItemRole.SubcontractorRoles.Oid = _SubcontractorUserRoles.SubcontractorRoles.Oid Then
|
|
_ChoiceActionItem.Active.SetItemValue("", False)
|
|
End If
|
|
Next
|
|
End If
|
|
If _NavigationItemRole.SupportRoles IsNot Nothing Then
|
|
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
|
|
Dim _SupportUserRoles_Collection As New XPCollection(Of SupportUserRoles)(_onew.Session, CriteriaOperator.Parse("User.Oid=?", TryCast(SecuritySystem.CurrentUser, DevExpress.Persistent.BaseImpl.User).Oid))
|
|
|
|
For Each _SupportUserRoles As SupportUserRoles In _SupportUserRoles_Collection
|
|
If _NavigationItemRole.SupportRoles.Oid = _SupportUserRoles.SupportRoles.Oid Then
|
|
_ChoiceActionItem.Active.SetItemValue("", False)
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
End Sub
|
|
Sub RecursiveAddModelNavigation(_uow As UnitOfWork, _ModelNavigationParent As ModelNavigation, _ChoiceActionItem As ChoiceActionItem)
|
|
Dim _ModelNavigation As ModelNavigation
|
|
Dim _ChoiceActionItem_Child As ChoiceActionItem
|
|
|
|
_ID += 1
|
|
_ModelNavigation = New ModelNavigation(_uow)
|
|
|
|
_ModelNavigation.Parent = _ModelNavigationParent
|
|
_ModelNavigation.Name = _ChoiceActionItem.Id
|
|
_ModelNavigation.Navigation_Caption = _ChoiceActionItem.Caption
|
|
_ModelNavigation.Navigation_ImageName = _ChoiceActionItem.ImageName
|
|
|
|
If _ChoiceActionItem.Items.Count > 0 Then
|
|
For Each _ChoiceActionItem_Child In _ChoiceActionItem.Items
|
|
RecursiveAddModelNavigation(_uow, _ModelNavigation, _ChoiceActionItem_Child)
|
|
Next
|
|
End If
|
|
|
|
End Sub
|
|
End Class
|
|
|