Verzeker een veilige login via een persoonlijke code

0000002321     -      30-07-2025

Het voorbeeld dat hier is voorgesteld, in Mercator Majuro, zorgt voor de gebruiker login-functionaliteit met behulp van een aangepaste code. Dit wordt gedaan door het benutten van de BeforeLogin gebeurtenis van de MercatorUi.Main. Dit evenement wordt geïnstalleerd bij het openen van het dossier met dank aan het implementeren van de MercatorUi.ICustomizers.ExecAction en de detectie van de actie DossierOpen.

Het MercatorUi.Main.BeforeLoginEventArgs object type dat passeert voorbij het afgevaardigde BeforeLogin evenement heeft verschillende eigenschappen:

  • LoginMode : vermelding die aangeeft in welk frame de login wordt uitgevoerd:
    • AtStartup : bij het begin
    • FromMenu : Na het veranderen van gebruiker wordt het verzocht bij het menu “Bestand”
    • InSequenceV /  InSequenceA : Als er een opeenvolging is van gebeurtenissen in de verkoop en aankoop
    • OpenCashDrawer : Bij het openen van de kassalade vanuit het “Bestand” menu
  • IdLoggedUser : Indien u wenst wordt het vervolledigd met een gebruikers-ID waarmee de login mee moet worden uitgevoerd.
  • NoAsk : zet deze eigenschap op true als u iets wenst te stoppen dat binnenkomt door de Mercator code.
  • NoHello : Zet deze eigenschap op true als u het “Hello …” tekst venster niet meer wenst te laten verschijnen.

Een voorbeeld volgt hieronder. Het staat ons toe om het mechanisme te begrijpen, maar staat ons als zodanig niet toe om het te gebruiken. Hij ordent werkelijk een selectie gebruikers op basis van een simpel SQL aanvraag. In dat deel van de code is het belangrijk voor u om een login logica te gebruiken die persoonlijk is als voldoet aan de eisen.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;

namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {
        public void Main(MercatorUi.ICustomizers.ExecAction action)
        {
            if (action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
            {
                Globals.Main.BeforeLogin += Main_BeforeLogin;
            }
            else if (action == MercatorUi.ICustomizers.ExecAction.DossierClose)
            {
                Globals.Main.BeforeLogin -= Main_BeforeLogin;
            }
        }

        void Main_BeforeLogin(object sender, MercatorUi.Main.BeforeLoginEventArgs e)
        {
            if (e.LoginMode == LoginModeEnum.AtStartup) // enkel bij het opstarten van Mercator
            {
                DataSet ds = Api.Zselect(MercatorUi.Globals.RepData, "select id from users where ...");
                if ((ds != null) && (ds.Tables[0].Rows.Count > 0))
                {
                    MercatorUi.Dialogs.Stop("U staat op het punt Mercator te betreden als ...!");
                    e.IdLoggedUser = ds.Tables[0].Rows[0]["id"].ToString(); // login uitvoeren op deze gebruiker
                    e.NoAsk = true; // de code-invoer van Mercator in elk geval onderdrukken
                    e.NoHello = true; // "Hello ..." niet weergeven
                }
                else
                {
                    MercatorUi.Dialogs.Stop("Toegang geweigerd!");
                    e.NoAsk = true; // de code-invoer van Mercator in elk geval onderdrukken
                }
            }
        }
    }
}

Waarschuwing : Men moet voorzichtig zijn bij het plaatsen van een dergelijke code. Want, een eenvoudige bug of een denkfout in de constructieve van de code kan de start van Mercator voorkomen. In dat geval kan het nodig zijn om de customizer te verwijderen via de SQL gereedschappen. Deze bevinden zich in de ASSEMBLIES tabel waar id CMZER=Main is.

Om deze code goed te laten werken, is het noodzakelijk om de optie "Login in een aparte start thread" (PRE_LOGIN) op NEEN te zetten.



Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)