Innanzi tutto facciamo qualche premessa. In base a quanto detto nei post precedenti per la creazione di un modulo custom con l'ausilio dello StarterKit partiamo dalla situazione in cui abbiamo configurato il nostro modulo aggiungendolo ad una pagina.
Imports System
Imports System.Configuration
Imports System.Data
Imports System.XML
Imports System.Web
Imports System.Collections.Generic
Imports DotNetNuke
Imports DotNetNuke.Services.Search
Imports DotNetNuke.Common.Utilities.XmlUtils
Imports DotNetNuke.Entities.Modules
Imports DotNetNuke.Entities.Modules.Definitions
Namespace DotNetNukeIta.Modules.DemoModule
''' <summary>
''' The Controller class for DemoModule
''' </summary>
''' <remarks>
''' </remarks>
''' <history>
''' </history>
''' ------------------------------------------
Public Class DemoModuleController
Implements Entities.Modules.ISearchable
Implements Entities.Modules.IPortable
#Region "Variabili Private"
Private _PremessoDemo As Boolean
#End Region
#Region "Costanti pubbliche"
Public Const PERMISSIONCODE As String = "DemoModule"
Public Const PERMESSODEMO As String = "PERMESSODEMO"
#End Region
#Region "Private Methods"
Private Sub InitModulePermissions()
Dim permCtl As Permissions.PermissionController = New Permissions.PermissionController()
Dim arr As ArrayList = permCtl.GetPermissionByCodeAndKey(PERMISSIONCODE, "")
Dim desktopMod As DesktopModuleController = New DesktopModuleController()
Dim desktopInfo As DesktopModuleInfo = desktopMod.GetDesktopModuleByModuleName("DotNetNukeIta.DemoModule")
Dim modDef As ModuleDefinitionController = New ModuleDefinitionController()
Dim modDefInfo As ModuleDefinitionInfo = modDef.GetModuleDefinitionByName(desktopInfo.DesktopModuleID, "GECO")
'Settaggio permessi sulle Pagine AnagraficaPF
Try
Dim pi As Permissions.PermissionInfo = New Permissions.PermissionInfo()
pi.ModuleDefID = modDefInfo.ModuleDefID
pi.PermissionCode = PERMISSIONCODE
pi.PermissionKey = PERMESSODEMO
pi.PermissionName = "Permesso personalizzato"
permCtl.AddPermission(pi)
Catch e As Exception
' gestisco l'eventuale eccezione
End Try
End Sub
#End Region
#Region "Metodi Pubblici"
Public Function UpgradeModule(ByVal Version As String) As String
'Possiamo impostare un controllo a piacere
' in questo caso controlliamo il numero di versione del modulo
' e istalliamo i permessi solo se il modulo è alla versione 01.00.00
If (Version = "01.00.00") Then
' Istallazione dei permessi per il modulo
InitModulePermissions()
End If
'Se tutto è andato bene aggiorno la versione del modulo
Version = "01.00.01"
Return Version
End Function
Public ReadOnly Property PermessoDiDemo() As Boolean
Get
Return _PremessoDemo
End Get
End Property
''' Esempio di utilizzo :
'''
''' Dim ms As DemoModuleController = New GECOController()
''' Dim objModules As ModuleController = New ModuleController()
''' Dim objMudule As ModuleInfo
''' objMudule = objModules.GetModule(ModuleId, TabId)
''' ms.ModuleSecurity(objMudule)
'''-----------------------------------------------------------
Public Sub ModuleSecurity(ByVal modInfo As ModuleInfo)
Dim permCollection As Permissions.ModulePermissionCollection
permCollection = modInfo.ModulePermissions
Dim permCtl As Permissions.ModulePermissionController = New Permissions.ModulePermissionController()
_PremessoDemo = Permissions.ModulePermissionController.HasModulePermission(permCollection, PERMESSODEMO)
End Sub
#End Region
'*****controllo permessi*****
Dim ms As DemoModuleController
Dim objModules As ModuleController
Dim objMudule As ModuleInfo
ms = New DemoModuleController()
objModules = New ModuleController()
objMudule = objModules.GetModule(ModuleId, TabId, False)
ms.ModuleSecurity(objMudule)
If ms.PermessoDiDemo = False Then
Response.Redirect(NavigateURL())
End If
'*****controllo permessi*****