Creare, modificare ed eliminare utenti

In questo tutorial verrà progettato un editor di utenti per eseguire a runtime le seguenti azioni:

  • Modificare la password e la localizzazione di un utente selezionato.

  • Creare nuovi utenti.

  • Rimuovere utenti esistenti.

Infine, si vedrà come salvare le modifiche fatte a tempo di esecuzione usando un oggetto di ritentività.

Configurazione del progetto

Creare un nuovo progetto, istanziare un nuovo oggetto Localelds cliccando su Modello >> Oggetto; successivamente, aggiungere due variabili di tipo Localeld utilizzando la scheda delle proprietà nel modo seguente: - Premere il pulsante +, in alto a destra e selezionare ‘Variabile’; modificare il nome da Variabile1 a it-IT.

Premere il pulsante + in alto a destra e selezionare ‘Variabile’; modificare il nome da Variabile2 a en-US. Accedendo al BROWSE DATA TYPE modificare il tipo di entrambe le variabili da Int32 a BaseDataType >> String >> LocaleId; settare i valori delle due variabili rispettivamente su it-IT e en-US.

Sotto la cartella Users >> Guest della scheda Properties modificare il Nome con ‘Alice’, settare le proprietà Password e LocaleIds rispettivamente su ‘alice’ e ‘it-IT’.

Creare un Utente attraverso uno script di runtime

Creare uno script di runtime, rinominare lo script in UserManagementScript ed aggiungere il seguente metodo:

[ExportMethod]
public void AddUser(string name, string password, string localeId)
{
    // Get the current project folder.
     var currentProject = Project.Current;
     var usersFolder = currentProject.GetObject("Users");

     // Check the password length.
     if (password.Length < 1)
         return;

     // Creating a new User and set its locale and password.
     var newUser = InformationModel.MakeObject<User>(name);
     newUser.Password = password;
     newUser.LocaleIds = new string[] { localeId };

     if (usersFolder == null){
         Log.Error ("Add User", "Missing Users folder");
         return;
     }
     usersFolder.Children.Add(newUser.NodeId);
}

Questo metodo richiede tre parametri:

  • name: il nome del nuovo Utente;

  • password: la password desiderata dal nuovo Utente;

  • localeId: la località del nuovo utente (ad esempio it-IT, en-US).

Eliminare un Utente attraverso uno script di runtime

Aggiungere le seguenti righe di codice allo script UserManagementScript.cs:

[NetLogic.ExportMethod]
public void RemoveUser(string name)
{
   // Get the current project folder.
     var usersFolder = HMIProject.Project.Current.GetObject("Users");

     if (usersFolder == null)
     {
         Log.Error ("Add User", "Missing Users folder");
         return;
     }

     if (usersFolder.Children.Count <= 0){
         Log.Error("Users folder is Empty");
         return;
     }

     // Remove the User by the name.
     usersFolder.Children.Remove(name);
}

Il metodo richiede come parametro il nome dell’utente che deve essere rimosso.

Creare un’interfaccia utente

Creare un pannello per la modifica degli utenti

Creare un Pannello (type) cliccando con il tasto destro nell’Interfaccia utente della scheda Project, poi selezionare New >> Contenitori >> Pannello.

Rinominare il Pannello appena creato Pannello1 (type) in EditUserWidget (type). Creare una Lista1 da EditUserWidget (type) >> Controlli dati >> Lista e impostare un collegamento dinamico tra la sua proprietà Modello e Utenti.

Pannello UserDetails

Creare un nuovo Pannello all’interno di EditUserWidget (Type) e rinominarlo in UserDetails; aggiungere al suo interno tre etichette, rinominarle rispettivamente in NameLabel, PasswordLabel e LocaleLabel.

Settare la proprietà Testo di PasswordLabel e LocaleLabel su Password e Locale.

Creare una Casella di testo all’interno del pannello e rinominarla in PasswordBox, settare la sua proprietà Tipo di contenuto su ‘Password’ per offuscare la digitazione a runtime.

Aggiungere una Selezione a discesa e rinominarla in ‘LocaleCombo’; infine, aggiungere due Pulsanti, inominarli in ‘CreateButton’ e ‘RemoveButton’ e aggiungere nella proprietà Testo rispettivamente la dicitura ‘Create’ e ‘Remove’.

Aggiungere un Nodo Alias al pannello UserDetails

Selezionare UserDetails e dalle sue proprietà cliccare il pulsante ‘+’ e selezionare Alias.

Aggiungere un collegamento dinamico alla Proprietà Alias Interfaccia utente >> EditUserWidget (Type) >> Lista1 >> SelectedItem.

Aggiungere un collegamento dinamico alla proprietà Kind con Types >> ObjectTypes (Type) >> BaseObjectType (Type) >> UserType (Type).

Impostazioni di MainWindow

Aggiungere alla MainWindow un Caricatore di pannelli e impostare un collegamento dinamico tra la sua proprietà Pannello e Interfaccia utente >> EditUserWidget (Type).

Proprietà del collegamento dinamico

Creare un Pannello (Type) e rinominarlo in ‘CreateUserWidget’. Effettuare le seguenti impostazioni:

  • Selezionare CreateButton e impostare il MouseCLickEvent a {CaricatoreDiPannello1} >> CaricatoreDiPannello1 >> ChangePanel, espandere la proprietà Method ed effettuare un collegamento dinamico tra la sottoproprietà NewPAnelPath e Interfaccia utente >> CreateUserWidget (Type).

  • Selezionare RemoveButton ed impostare il MouseClickEvent a Scripts >> UserManagementScript >> RemoveUser espandere la proprietà Method ed effettuare un collegamento dinamico tra la sottoproprietà name e Interfaccia utente >> EditUserWidget (Type) >> Lista1 >> SelectedValue.

  • Selezionare NameLabel ed eseguire un collegamento dinamico tra la sua proprietà Testo e Interfaccia utente >> EditUserWidgetType >> Lista1 >> SelectedItem e settare l’attributo a BrowseName.

  • Selezionare PasswordBox ed effettuare un collegamento dinamico tra la proprietà Testo e {Alias} >> User >> Password. Selezionare il LocaleCombo ed effettuare un collegamento dinamico tra la sua proprietà Modello e Model >> LocaleIds.

  • Selezionare LocaleCombo e definire un collegamento dinamico avanzato nella sua proprietà Valore selezionato: premere l’icona del collegamento dinamico, selezionare Advance e premere il pulsante + accanto alla tag Valore selezionato creando così la nuova tag``CollegamentoDinamico`` alla quale, sempre premendo +, aggiungere un collegamento dinamico con {Alias} >> User >> LocaleIds. Impostare la direzione del collegamento dinamico cliccando la freccia a sinistra fino ad ottenere un collegamento two-ways.

image0

Creazione utenti tramite Pannello

Selezionare il pannello CreateUserWidget (Type) e creare tre etichette, rinominarle rispettivamente in: NameLabel, PasswordLabel e LocaleLabel, impostare la proprietà Testo delle tre etichette rispettivamente su ‘Name’, ‘Password’ e ‘Locale’.

Creare due Caselle di testo e rinominarle in PasswordBox e NameBox, impostare la proprietà Tipo di contenuto di PasswordBox a ‘Password’.

Aggioungere una Selezione a discesa, rinominarla ‘LocaleCombo’, ed effettuare un collegamento dinamico della sua proprietà Modello a Model >> LocaleIds; infine aggiungere due pulsanti e rinominarli rispettivamente ‘CreateButton’ e ‘DiscardButton’; impostare la proprietà Testo di CreateButton e DiscardButton ad ‘Applly’ e ‘Discard’ rispettivamente.

Selezionare CreateButton ed impostare un MouseCLickEvent dalla scheda Eventi, selezionando Scripts >> UserManagementScripts >> AddUser, espandere la proprietà Method ed effettuare un collegamento dinamico tra name e Interfaccia utente >> CreateUserWidget (Type) >> NameBox >> Text , tra password e Interfaccia utente >> CreateUserWidget (Type) >> PasswordBox >> Text e tra LocaleId e Interfaccia utente >> CreateUserWidget (Type) >> LocaleCombo >> SelectedValue.

Selezionare CreateButton e creare un altro MouseClickEvent selezionando +, {CaricatoreDiPAnnello1} >> CaricatoreDiPannello1 >> ChangePanel, espandere la sezione Method ed effettuare un collegamento dinamico tra la sottoproprietà NewPanelPath e Interfaccia utente >> EditUserWidget (Type).

Selezionare DiscardButton e creare un altro MouseClickEvent selezionando +, {CaricatoreDiPAnnello1} >> CaricatoreDiPannello1 >> ChangePanel, espandere la sezione Method ed effettuare un collegamento dinamico tra la sottoproprietà NewPanelPath e Interfaccia utente >> EditUserWidget (Type).

Aggiungere Ritentività al progetto

Per rendere le modifiche persistenti creare un database di ritentività a partire dalla cartella Ritentività del Project view.

Attraverso la proprietà Radici di sottoalbero, premendo + verrà generata una sottoproprietà chiamata RadiceDiSottoalbero1. Creare un collegamento dinamico tra quest’ultima sottoproprietà e Users.

Eseguire il progetto

Scarica il progetto di esempio da qui.

See also

Concetti correlati

Retentivity

Procedure correlate

Configuring Users and Groups

Riferimenti

User