Dopo la possibilità di utilizzare il proprio sistema di gestione degli utenti finali e il comando SET USER ALIAS vi starete chiedendo come gestire le autorizzazioni degli utenti finali senza creare più account utente 4D. Continuate a leggere perché questa release ha la risposta!
Gli sviluppatori 4D hanno spesso bisogno di gestire gli utenti finali con il proprio sistema di directory(ad esempio, da uno sviluppo interno a uno esterno con LDAP o SSO). Una soluzione era quella di creare tutti gli account utente 4D possibili, per poi passare da uno all’altro.
4D v18 R4 rende le cose più intuitive consentendo di impostare i diritti degli utenti con i gruppi … dinamicamente.
Il modo più semplice per farlo è creare un account utente predefinito senza appartenere a nessun gruppo:
Poi si può creare un gruppo per ogni diritto che si desidera gestire.
In fase di esecuzione, è ancora possibile utilizzare il comando SET USER ALIAS per impostare il nome dell’utente in modo che appaia ovunque nel database.
Ora, con il nuovo comando SET GROUP ACCESS, è possibile impostare dinamicamente anche l’appartenenza a un gruppo.
Si noti che questi due comandi non sono disponibili sul lato server.
Ecco un esempio di codice eseguito su un client remoto dopo l’autenticazione personalizzata dell’utente:
// Set my own user field as alias
SET USER ALIAS([MyUserTable]Name)
// Set user groups following rights
C_COLLECTION ($userGroups)
$userGroups :=New collection
If(
[MyUserTable]4DWriteProAccess)
$userGroups .push("4D Write Pro")
End if
If ([MyUserTable]4DViewProAccess)
$userGroups .push("4D View Pro")
End if
SET GROUP ACCESS ($userGroups)
Se si desidera, è possibile impostare l’accesso del gruppo di utenti corrente su nessuno:
SET GROUP ACCESS(New collection)
È possibile ripristinare l’accesso al gruppo di utenti corrente in base a come è memorizzato nel file della directory:
SET GROUP ACCESS
Il nuovo comando Get group access consente di recuperare l’appartenenza al gruppo corrente:
SET GROUP ACCESS(New collection("4D View Pro"; "4D Write Pro"))
$collection :=Get group access
// $collection contiene ["4D View Pro", "4D Write Pro"]
Tutti gli accessi dati ai gruppi non influiscono sulla directory utente/gruppo.
Ora tocca a voi provare. Gestite gli utenti e i gruppi in modo dinamico… come volete voi!