SlideShare a Scribd company logo
1 of 25
Download to read offline
CREAZIONE MODULO PER
LA GESTIONE DELLA SCADENZA
PASSWORD UTENTE
OBIETTIVO DELLO SPEECH
Obiettivo di questa esposizione è la creazione di un
modulo che periodicamente invalidi la password degli
utenti.
Questo permette di migliorare la sicurezza del sito/
portale.
La scelta potrà essere a livello globale oppure partendo
dal ruolo per arrivare all'utente stesso.
OBIETTIVO DELLO SPEECH
•  Creazione dei file necessari per il modulo
•  Creazione tabelle nel database
•  Utilizzo hook di sistema
•  Come inviare email dal modulo
•  Invio automatico di email di avviso
•  Traduzione multilingua del modulo
FILE UTILIZZATI NEL MODULO
•  expire_user_password.info (contiene i dati
informativi del modulo)
•  expire_user_password.install (utilizzato per la
creazione delle tabelle e variabili)
•  expire_user_password.module (contiene
l'implementazione del modulo)
•  expire_user_password.it.po (contiene le traduzioni
delle stringhe)
CONTENUTO FILE expire_user_password.info
name = Expire User Password
description = Modules to manage scheduled user
password
package = User
core = 7.x
configure = admin/expire_user_password/configure
dependencies[] = locale
dependencies[] = date_popup
CONTENUTO FILE expire_user_password.install
Hook/funzioni presenti nel file:
!  expire_user_password_schema()
(contiene la tabella che mappa utente/data di
scadenza password)
!  expire_user_password_install()
(setta variabili di sistema)
!  expire_user_password_uninstall()
(cancella le variabili di sistema create in
precedenza)
SCREENSHOT ELENCO MODULI SUL SISTEMA/1
SCREENSHOT ELENCO MODULI SUL SISTEMA/2
CONTENUTO FILE expire_user_password.module
COSTANTI DEL MODULO
EXPIRE_USER_PASSWORD_CONFIGURE:
utilizzata per il prefisso comune a tutte le voci di menu.
Il valore è: admin/expire_user_password
EXPIRE_USER_PASSWORD_RID_ADMIN_ROLE:
utilizzata per il definire in un punto il valore del role id
corrispondente agli amministratori. Nel nostro caso il
valore è: 3.
CONTENUTO FILE expire_user_password.module
HOOK/FUNZIONI DEL MODULO
expire_user_password_help($path, $arg):
hook_help utilizzato per generare la pagina contenente
la spiegazione e il riassunto dei link del modulo.
expire_user_password_menu():
hook_menu che permette di creare i link delle pagine di
amministrazione.
expire_user_password_permission():
hook_permission contenente il permesso per
permettere agli utenti di configurare le pagine di
amministrazione.
SCREENSHOT PERMESSI DEL MODULO
CONTENUTO FILE expire_user_password.module
expire_user_password_configure($form, &
$form_state):
funzione che crea la pagina di admin per abilitare o
disabilitare scadenza password a livello di sistema.
_expire_user_password_configure_submit
($form, &$form_state):
funzione che recupera i valori del form creato in
expire_user_password_configure ed in base alle
condizioni del form salva i dati nelle variabili di sistema
e genera le scadenze password per tutti gli utenti.
CONTENUTO FILE expire_user_password.module
expire_user_password_form_alter(&$form, &
$form_state, $form_id):
hook_form_alter per aggiungere al form il campo
conterrà la data di scadenza password utente. Il campo
sarà visibile agli utenti con il permesso associato ad
uno dei loro ruoli.
_expire_user_password_ttl_user_validate($form, &
$form_state):
funzione per verificare che la data inserita sia valida.
SCREENSHOT FORM EDIT UTENTE
CONTENUTO FILE expire_user_password.module
_expire_user_password_ttl_user_save($form, &
$form_state):
funzione che salva/cancella la data di scadenza
password corrispondente all'utente nella tabella
expire_user_password_users.
_expire_user_password_get_ttl_user($uid):
funzione che recupera la data scadenza password in
base all'uid utente passato come parametro.
_expire_user_password_get_ttl_role($rid=null):
funzione che recupera la data scadenza password in
base all'rid ruolo passato come parametro.
CONTENUTO FILE expire_user_password.module
expire_user_password_user_delete($account):
hook_user_delete per cancellare la data scadenza
password utente da expire_user_password_users.
expire_user_password_reset_ttl($form, &
$form_state):
funzione che crea la pagina di admin per inserire le date
di scadenza password in base al ruolo.
_expire_user_password_reset_ttl_submit($form, &
$form_state):
funzione che recupera i valori del form creato in
expire_user_password_reset_ttl e permette di aggiornate
le scadenze delle password utente.
SCREENSHOT ABILITAZIONE EXPIRE PASSWORD
SCREENSHOT TTL PER SINGOLO RUOLO
CONTENUTO FILE expire_user_password.module
expire_user_password_init():
hook_init per centralizzare il controllo della scadenza
password quando si visita una pagina.
expire_user_password_cron():
hook_cron per verificare scadenze di password ed
inviare un avviso agli utenti
expire_user_password_user_load($users):
hook_user_load per aggiungere all'oggetto $user la
proprietà corrispondente al campo scadenza password
CONTENUTO FILE expire_user_password.module
_expire_user_password_list_permissions($account):
Funzione che recupera in un array “piatto” tutti i
permessi associati all'utente passato come parametro.
expire_user_password_mail($key, &$message,
$params):
Funzione per inviare la mail di avviso di scadenza
password all'utente.
TRADUZIONE MULTILINGUA DEL MODULO/1
Per tradurre le stringhe nel modulo eseguire i seguenti
passaggi preliminari:!
!  Utilizzare la funzione t() su ogni stringa di cui si vuole
effettuare la traduzione.
!  Scaricare il modulo “Translation template extractor”
dal seguente url: https://drupal.org/project/potx
!  Abilitare il modulo “Translation template extractor”
!  Aggiungere la lingua italiana tramite il form presente
all'url http://[dominio]/admin/config/regional/language/
TRADUZIONE MULTILINGUA DEL MODULO/2
Per estrarre le stringhe da tradurre andare alla pagina
http://[dominio]/admin/config/regional/translate/extract
e selezionare il checkbox inerente il modulo
expire_user_password.
Una volta generato il file .pot utilizzare un software, per
esempio poedit, per inserire le traduzioni delle stringhe
inglesi nella lingua preferita.
Salvare il file con un nome parlante, per esempio
expire_user_password.it.po.
TRADUZIONE MULTILINGUA DEL MODULO/3
Importare le stringhe di traduzione caricando il file al
seguente url:
http://[dominio]/admin/config/regional/translate/import
selezionando la lingua delle stringhe tradotte.
Ora selezionando la lingua italiana le stringhe
precedentemente in inglese saranno visibili nella lingua
dello Stivale.
NICOLA PIGNATELLI
Web: http://www.pignatelli.com
Email: nicola@pignatelli.com
Facebook: npignatelli
Twitter: pignatellicom
Skype: nicola.pignatelli
Linkedin: /in/nicolapignatelli
SPONSOR
MEDIA PARTNER

More Related Content

Similar to Creazione di un modulo per la gestione delle password

What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
 
Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Mauro Lorenzutti
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsKnowCamp
 
Analisi e sviluppo di componenti standard JSR 168 per la realizzazione di Por...
Analisi e sviluppo di componenti standard JSR 168 per la realizzazione di Por...Analisi e sviluppo di componenti standard JSR 168 per la realizzazione di Por...
Analisi e sviluppo di componenti standard JSR 168 per la realizzazione di Por...DavisMol
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)brossi676
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...azuredayit
 
AreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàAreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàGiulio Destri
 
TYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novità
TYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novitàTYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novità
TYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novitàRoberto Torresani
 
Come Drupal costruisce le tue pagine
Come Drupal costruisce le tue pagineCome Drupal costruisce le tue pagine
Come Drupal costruisce le tue paginesparkfabrik
 

Similar to Creazione di un modulo per la gestione delle password (20)

What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012
 
Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3
 
Java lezione 14
Java lezione 14Java lezione 14
Java lezione 14
 
TYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novitaTYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novita
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more things
 
Sql 5
Sql 5Sql 5
Sql 5
 
Analisi e sviluppo di componenti standard JSR 168 per la realizzazione di Por...
Analisi e sviluppo di componenti standard JSR 168 per la realizzazione di Por...Analisi e sviluppo di componenti standard JSR 168 per la realizzazione di Por...
Analisi e sviluppo di componenti standard JSR 168 per la realizzazione di Por...
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)Yii Framework - yes it is rapid web application development (Parte 1)
Yii Framework - yes it is rapid web application development (Parte 1)
 
Php mysql3
Php mysql3Php mysql3
Php mysql3
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
AreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàAreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicità
 
TYPO3 CMS 7.6 - Le novita
TYPO3 CMS 7.6 - Le novitaTYPO3 CMS 7.6 - Le novita
TYPO3 CMS 7.6 - Le novita
 
eZ publish - Extension
eZ publish - ExtensioneZ publish - Extension
eZ publish - Extension
 
TYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novità
TYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novitàTYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novità
TYPO3 CMS 8.2 e TYPO3 CMS 8.3 - Le novità
 
TYPO3 CMS 9.1 - Le novità
TYPO3 CMS 9.1 - Le novitàTYPO3 CMS 9.1 - Le novità
TYPO3 CMS 9.1 - Le novità
 
Come Drupal costruisce le tue pagine
Come Drupal costruisce le tue pagineCome Drupal costruisce le tue pagine
Come Drupal costruisce le tue pagine
 
Laravel Framework PHP
Laravel Framework PHPLaravel Framework PHP
Laravel Framework PHP
 
introduzione a symfony 2
introduzione a symfony 2 introduzione a symfony 2
introduzione a symfony 2
 

More from Eugenio Minardi

Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)Eugenio Minardi
 
ExtJS: La piattaforma vincente (tools)
ExtJS: La piattaforma vincente (tools)ExtJS: La piattaforma vincente (tools)
ExtJS: La piattaforma vincente (tools)Eugenio Minardi
 
ExtJS: La piattaforma vincente (multiple screens)
ExtJS: La piattaforma vincente (multiple screens)ExtJS: La piattaforma vincente (multiple screens)
ExtJS: La piattaforma vincente (multiple screens)Eugenio Minardi
 
ExtJS: La piattaforma vincente (rich UI)
ExtJS: La piattaforma vincente (rich UI)ExtJS: La piattaforma vincente (rich UI)
ExtJS: La piattaforma vincente (rich UI)Eugenio Minardi
 
ExtJS: La piattaforma vincente (class system)
ExtJS: La piattaforma vincente (class system)ExtJS: La piattaforma vincente (class system)
ExtJS: La piattaforma vincente (class system)Eugenio Minardi
 
ExtJS: La piattaforma vincente
ExtJS: La piattaforma vincenteExtJS: La piattaforma vincente
ExtJS: La piattaforma vincenteEugenio Minardi
 
Distributed Team Management: 
Pitfall, Challenges and Advantages
Distributed Team Management: 
Pitfall, Challenges and AdvantagesDistributed Team Management: 
Pitfall, Challenges and Advantages
Distributed Team Management: 
Pitfall, Challenges and AdvantagesEugenio Minardi
 
A Practical Introduction to Symfony (European Drupal Days 2015)
A Practical Introduction to Symfony (European Drupal Days 2015)A Practical Introduction to Symfony (European Drupal Days 2015)
A Practical Introduction to Symfony (European Drupal Days 2015)Eugenio Minardi
 
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)Eugenio Minardi
 
Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Eugenio Minardi
 
Optimizing MariaDB for Web Applications (European Drupal Days 2015)
Optimizing MariaDB for Web Applications (European Drupal Days 2015)Optimizing MariaDB for Web Applications (European Drupal Days 2015)
Optimizing MariaDB for Web Applications (European Drupal Days 2015)Eugenio Minardi
 
PhpStorm for Drupal Development (European Drupal Days 2015)
PhpStorm for Drupal Development (European Drupal Days 2015)PhpStorm for Drupal Development (European Drupal Days 2015)
PhpStorm for Drupal Development (European Drupal Days 2015)Eugenio Minardi
 
Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Eugenio Minardi
 
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)Eugenio Minardi
 
The multilingual Drupal 8 experience (European Drupal Days 2015)
The multilingual Drupal 8 experience (European Drupal Days 2015)The multilingual Drupal 8 experience (European Drupal Days 2015)
The multilingual Drupal 8 experience (European Drupal Days 2015)Eugenio Minardi
 
Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...Eugenio Minardi
 
Drupal Security: How to survive Drupalgeddon and prepare for future (European...
Drupal Security: How to survive Drupalgeddon and prepare for future (European...Drupal Security: How to survive Drupalgeddon and prepare for future (European...
Drupal Security: How to survive Drupalgeddon and prepare for future (European...Eugenio Minardi
 
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...Eugenio Minardi
 
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)Eugenio Minardi
 
Secure Drupal, from start to finish (European Drupal Days 2015)
Secure Drupal, from start to finish (European Drupal Days 2015)Secure Drupal, from start to finish (European Drupal Days 2015)
Secure Drupal, from start to finish (European Drupal Days 2015)Eugenio Minardi
 

More from Eugenio Minardi (20)

Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)Delphi and ExtJS (26 ottobre 2017)
Delphi and ExtJS (26 ottobre 2017)
 
ExtJS: La piattaforma vincente (tools)
ExtJS: La piattaforma vincente (tools)ExtJS: La piattaforma vincente (tools)
ExtJS: La piattaforma vincente (tools)
 
ExtJS: La piattaforma vincente (multiple screens)
ExtJS: La piattaforma vincente (multiple screens)ExtJS: La piattaforma vincente (multiple screens)
ExtJS: La piattaforma vincente (multiple screens)
 
ExtJS: La piattaforma vincente (rich UI)
ExtJS: La piattaforma vincente (rich UI)ExtJS: La piattaforma vincente (rich UI)
ExtJS: La piattaforma vincente (rich UI)
 
ExtJS: La piattaforma vincente (class system)
ExtJS: La piattaforma vincente (class system)ExtJS: La piattaforma vincente (class system)
ExtJS: La piattaforma vincente (class system)
 
ExtJS: La piattaforma vincente
ExtJS: La piattaforma vincenteExtJS: La piattaforma vincente
ExtJS: La piattaforma vincente
 
Distributed Team Management: 
Pitfall, Challenges and Advantages
Distributed Team Management: 
Pitfall, Challenges and AdvantagesDistributed Team Management: 
Pitfall, Challenges and Advantages
Distributed Team Management: 
Pitfall, Challenges and Advantages
 
A Practical Introduction to Symfony (European Drupal Days 2015)
A Practical Introduction to Symfony (European Drupal Days 2015)A Practical Introduction to Symfony (European Drupal Days 2015)
A Practical Introduction to Symfony (European Drupal Days 2015)
 
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
UN World Food Programme Standards & Best Practises (European Drupal Days 2015)
 
Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)
 
Optimizing MariaDB for Web Applications (European Drupal Days 2015)
Optimizing MariaDB for Web Applications (European Drupal Days 2015)Optimizing MariaDB for Web Applications (European Drupal Days 2015)
Optimizing MariaDB for Web Applications (European Drupal Days 2015)
 
PhpStorm for Drupal Development (European Drupal Days 2015)
PhpStorm for Drupal Development (European Drupal Days 2015)PhpStorm for Drupal Development (European Drupal Days 2015)
PhpStorm for Drupal Development (European Drupal Days 2015)
 
Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)Drupal Continuous Integration (European Drupal Days 2015)
Drupal Continuous Integration (European Drupal Days 2015)
 
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
 
The multilingual Drupal 8 experience (European Drupal Days 2015)
The multilingual Drupal 8 experience (European Drupal Days 2015)The multilingual Drupal 8 experience (European Drupal Days 2015)
The multilingual Drupal 8 experience (European Drupal Days 2015)
 
Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...Another Copernican Revolution: maintenance first, projects second (European D...
Another Copernican Revolution: maintenance first, projects second (European D...
 
Drupal Security: How to survive Drupalgeddon and prepare for future (European...
Drupal Security: How to survive Drupalgeddon and prepare for future (European...Drupal Security: How to survive Drupalgeddon and prepare for future (European...
Drupal Security: How to survive Drupalgeddon and prepare for future (European...
 
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
The benefits of an elastic infrastructure on a Drupal e-commerce (European Dr...
 
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
Verifying Drupal modules with OWASP ASVS 2014 (European Drupal Days 2015)
 
Secure Drupal, from start to finish (European Drupal Days 2015)
Secure Drupal, from start to finish (European Drupal Days 2015)Secure Drupal, from start to finish (European Drupal Days 2015)
Secure Drupal, from start to finish (European Drupal Days 2015)
 

Creazione di un modulo per la gestione delle password

  • 1. CREAZIONE MODULO PER LA GESTIONE DELLA SCADENZA PASSWORD UTENTE
  • 2. OBIETTIVO DELLO SPEECH Obiettivo di questa esposizione è la creazione di un modulo che periodicamente invalidi la password degli utenti. Questo permette di migliorare la sicurezza del sito/ portale. La scelta potrà essere a livello globale oppure partendo dal ruolo per arrivare all'utente stesso.
  • 3. OBIETTIVO DELLO SPEECH •  Creazione dei file necessari per il modulo •  Creazione tabelle nel database •  Utilizzo hook di sistema •  Come inviare email dal modulo •  Invio automatico di email di avviso •  Traduzione multilingua del modulo
  • 4. FILE UTILIZZATI NEL MODULO •  expire_user_password.info (contiene i dati informativi del modulo) •  expire_user_password.install (utilizzato per la creazione delle tabelle e variabili) •  expire_user_password.module (contiene l'implementazione del modulo) •  expire_user_password.it.po (contiene le traduzioni delle stringhe)
  • 5. CONTENUTO FILE expire_user_password.info name = Expire User Password description = Modules to manage scheduled user password package = User core = 7.x configure = admin/expire_user_password/configure dependencies[] = locale dependencies[] = date_popup
  • 6. CONTENUTO FILE expire_user_password.install Hook/funzioni presenti nel file: !  expire_user_password_schema() (contiene la tabella che mappa utente/data di scadenza password) !  expire_user_password_install() (setta variabili di sistema) !  expire_user_password_uninstall() (cancella le variabili di sistema create in precedenza)
  • 7. SCREENSHOT ELENCO MODULI SUL SISTEMA/1
  • 8. SCREENSHOT ELENCO MODULI SUL SISTEMA/2
  • 9. CONTENUTO FILE expire_user_password.module COSTANTI DEL MODULO EXPIRE_USER_PASSWORD_CONFIGURE: utilizzata per il prefisso comune a tutte le voci di menu. Il valore è: admin/expire_user_password EXPIRE_USER_PASSWORD_RID_ADMIN_ROLE: utilizzata per il definire in un punto il valore del role id corrispondente agli amministratori. Nel nostro caso il valore è: 3.
  • 10. CONTENUTO FILE expire_user_password.module HOOK/FUNZIONI DEL MODULO expire_user_password_help($path, $arg): hook_help utilizzato per generare la pagina contenente la spiegazione e il riassunto dei link del modulo. expire_user_password_menu(): hook_menu che permette di creare i link delle pagine di amministrazione. expire_user_password_permission(): hook_permission contenente il permesso per permettere agli utenti di configurare le pagine di amministrazione.
  • 12. CONTENUTO FILE expire_user_password.module expire_user_password_configure($form, & $form_state): funzione che crea la pagina di admin per abilitare o disabilitare scadenza password a livello di sistema. _expire_user_password_configure_submit ($form, &$form_state): funzione che recupera i valori del form creato in expire_user_password_configure ed in base alle condizioni del form salva i dati nelle variabili di sistema e genera le scadenze password per tutti gli utenti.
  • 13. CONTENUTO FILE expire_user_password.module expire_user_password_form_alter(&$form, & $form_state, $form_id): hook_form_alter per aggiungere al form il campo conterrà la data di scadenza password utente. Il campo sarà visibile agli utenti con il permesso associato ad uno dei loro ruoli. _expire_user_password_ttl_user_validate($form, & $form_state): funzione per verificare che la data inserita sia valida.
  • 15. CONTENUTO FILE expire_user_password.module _expire_user_password_ttl_user_save($form, & $form_state): funzione che salva/cancella la data di scadenza password corrispondente all'utente nella tabella expire_user_password_users. _expire_user_password_get_ttl_user($uid): funzione che recupera la data scadenza password in base all'uid utente passato come parametro. _expire_user_password_get_ttl_role($rid=null): funzione che recupera la data scadenza password in base all'rid ruolo passato come parametro.
  • 16. CONTENUTO FILE expire_user_password.module expire_user_password_user_delete($account): hook_user_delete per cancellare la data scadenza password utente da expire_user_password_users. expire_user_password_reset_ttl($form, & $form_state): funzione che crea la pagina di admin per inserire le date di scadenza password in base al ruolo. _expire_user_password_reset_ttl_submit($form, & $form_state): funzione che recupera i valori del form creato in expire_user_password_reset_ttl e permette di aggiornate le scadenze delle password utente.
  • 18. SCREENSHOT TTL PER SINGOLO RUOLO
  • 19. CONTENUTO FILE expire_user_password.module expire_user_password_init(): hook_init per centralizzare il controllo della scadenza password quando si visita una pagina. expire_user_password_cron(): hook_cron per verificare scadenze di password ed inviare un avviso agli utenti expire_user_password_user_load($users): hook_user_load per aggiungere all'oggetto $user la proprietà corrispondente al campo scadenza password
  • 20. CONTENUTO FILE expire_user_password.module _expire_user_password_list_permissions($account): Funzione che recupera in un array “piatto” tutti i permessi associati all'utente passato come parametro. expire_user_password_mail($key, &$message, $params): Funzione per inviare la mail di avviso di scadenza password all'utente.
  • 21. TRADUZIONE MULTILINGUA DEL MODULO/1 Per tradurre le stringhe nel modulo eseguire i seguenti passaggi preliminari:! !  Utilizzare la funzione t() su ogni stringa di cui si vuole effettuare la traduzione. !  Scaricare il modulo “Translation template extractor” dal seguente url: https://drupal.org/project/potx !  Abilitare il modulo “Translation template extractor” !  Aggiungere la lingua italiana tramite il form presente all'url http://[dominio]/admin/config/regional/language/
  • 22. TRADUZIONE MULTILINGUA DEL MODULO/2 Per estrarre le stringhe da tradurre andare alla pagina http://[dominio]/admin/config/regional/translate/extract e selezionare il checkbox inerente il modulo expire_user_password. Una volta generato il file .pot utilizzare un software, per esempio poedit, per inserire le traduzioni delle stringhe inglesi nella lingua preferita. Salvare il file con un nome parlante, per esempio expire_user_password.it.po.
  • 23. TRADUZIONE MULTILINGUA DEL MODULO/3 Importare le stringhe di traduzione caricando il file al seguente url: http://[dominio]/admin/config/regional/translate/import selezionando la lingua delle stringhe tradotte. Ora selezionando la lingua italiana le stringhe precedentemente in inglese saranno visibili nella lingua dello Stivale.
  • 24. NICOLA PIGNATELLI Web: http://www.pignatelli.com Email: nicola@pignatelli.com Facebook: npignatelli Twitter: pignatellicom Skype: nicola.pignatelli Linkedin: /in/nicolapignatelli