Login avanzato¶
Lo scopo di questo tutorial è quello di creare una pagina di login che, in caso di accesso concesso mostri un pannello, ed in caso di accesso fallito popoli un etichetta che riporti “Incorrect login”.
Procedura
Creare un nuovo progetto nominato “PanelLoaderLogin”. Creare un oggetto Pannello dinamico da MainWindow (type) >> Contenitori, trascinare il Widget “LoginForm” nella cartella Interfaccia utente della pagina di progetto.
Creare un nuovo pannello raggiungibile solo a login concesso, da Interfaccia utente >> Contenitori>> Pannello ed inserire un’etichetta. Fare clic destro su LoginForm1 ed aggiungere una NetLogic, dalle sue proprietà aggiungere tre variabili tramite il pulsante +.
Rinominare la seconda variabile in “Panel”, definirne il tipo in NodeId e collegarla dinamicamente a PanelLoaderLogin >> UI >> Pannello1. Rinominare la terza variabile in “Message”, definirla di tipo String ed eliminare il suo valore “0”.
Aprire lo script NetLogic LoginForm1Logic1 ed incollare il seguente codice:
[ExportMethod]
public void Login(string username, string password)
{
if (!PerformLogin(username, password))
{
// Set incorrect login message
var messageVariable = LogicObject.GetVariable("Message");
messageVariable.Value = "Incorrect login";
return;
}
// Check the correct type of PanelLoader
PanelLoader panelLoader = (PanelLoader)Owner.Owner;
if (panelLoader == null)
{
Log.Error(panelLoader + " is not a PanelLoader");
return;
}
// Retrieve Panel variable
var panelVariable = (NodeId)LogicObject.GetVariable("Panel").Value;
if (panelVariable == NodeId.Empty)
{
Log.Error("Panel variable is empty");
return;
}
// Perform ChangePanel
panelLoader.ChangePanel(panelVariable, NodeId.Empty);
}
private bool PerformLogin(string username, string password)
{
return Session.ChangeUser(username, password);
}
Da LoginForm1 (type) cliccare su LoginButton, dagli eventi sostituire il metodo “ChangeUser” con il metodo “Login” da UI >> LoginForm1Logic1 >> Login.
Espandere InputArguments e collegare dinamicamente a “username” PanelLoaderLogin1 >> UI >> LoginForm1 >> Username >> SelectedValue e a “password” PanelLoaderLogin >> UI >> LoginForm1 >> Password >> Text.
Inserire ora un’etichetta a LoginForm1 la cui proprirtà Testo è dinamicamente collegata PanelLoaderLogin >> UI >> LoginForm1Logic1 >> Message.
Aggiungere l’utente Admin la cui password è Admin e collegare dinamicamente la cartella degli utenti alla proprietà Users di LoginForm1, trascinare, poi, LoginForm1 alla proprietà Pannello del CaricatoreDiPannello1.
Aggiungere un pulsante di Logout alla MainWindow con due metodi:
Commands >> CoreCommands >> ChangeUser, il cui argomento Username sarà Guest
{CaricatoreDiPannello1} >> CaricatoreDiPannello1 >> ChangePanel, collegare dinamicamente LoginForm1 all’argomento NewPanelPath.
Eseguire il progetto.
Scarica il progetto di esempio da qui
.