WPC 2008
 Cerca nei blog
nov24

Written by:Daniele Lembo
lunedì 24 novembre 2008 9.32 

 Oggi affrontiamo il problema dei permessi ed in particolare come è possibile aggiungere ad un modulo custom dei permessi aggiuntivi oltre a quelli di default.

 

 

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.


Se tutto è andato bene dovremmo essere di fronte a qualche cosa del genere:

Come vedete nella colonna centrale è presente il nostro modulo dimostrativo. A questo punto possiamo iniziare ad insererire all'interno del nostro modulo il codice necessario per aggiungere i permessi.

Il codice da inserire riguarda il nostro controller principale, DemoModuleController che si trova nella directory App_Data.

All' interno di questo controller possiamo aggiungere il codice riportato di seguito lasciando inalterati i metodi già esistenti:

 

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

 

  

 

La Sub InitModulePermissions consente di inizializzare la definizione dei permessi per il nostro modulo. Possiamo quindi pensare di chiamarla quando più ci fa comodo, per esempio all'istallazione o all'aggiornamento del modulo stesso.

Una volta inseriti i permessi accedendo alle impostazioni del modulo (icona in alto a sinistra del modulo, settings) avremo il permesso tra quelli disponibili come appare di seguito:

Prima:

Dopo:

Come vedete si è aggiunta una colonna col il nuovo permesso. A questo punto dalle nostre pagina possiamo richiamare il metodo per controllare i permessi:

 

'*****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*****



Ed il gioco è fatto ...

Tags:
Invia questa pagina ad un amico