Seguindo a capacidade de utilizar o seu próprio sistema de gestão de utilizadores finais e o SET USER ALIAS pode estar a perguntar-se como pode gerir as permissões de utilizador final sem criar múltiplas contas de utilizador 4D. Continue a ler porque este lançamento de funcionalidades tem a resposta!
Os programadores 4D necessitam frequentemente de gerir os utilizadores finais com o seu próprio sistema de directórios(por exemplo, desde um desenvolvimento interno até ao externo com LDAP ou SSO). Uma solução era criar tantas contas de utilizadores 4D quantos os direitos, depois mudar de uma para outra.
4D v18 R4 torna as coisas mais intuitivas, permitindo-lhe definir os direitos dos utilizadores com grupos … dinamicamente.
A forma mais fácil de o fazer é criar uma conta de utilizador por defeito, sem filiação em grupo:
Depois pode criar um grupo para cada direito que queira gerir.
Em tempo de execução, ainda pode usar o comando SET USER ALIAS para definir o nome do utilizador para que apareça em todo o lado na base de dados.
Agora com o novo comando SET GROUP ACCESS, pode também definir dinamicamente a filiação em grupo.
Note que estes dois comandos não estão disponíveis no lado do servidor.
Aqui está um exemplo de código executado num cliente remoto após autenticação personalizada do utilizador:
// 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 desejar, pode definir o acesso do grupo de utilizadores actual a nenhum:
SET GROUP ACCESS(New collection)
Pode repor o acesso do grupo de utilizadores actual ao modo como é armazenado no ficheiro de directório:
SET GROUP ACCESS
O novo comando Get group access permite-lhe recuperar a actual adesão ao grupo de utilizadores:
SET GROUP ACCESS(New collection("4D View Pro"; "4D Write Pro"))
$collection :=Get group access
// $collection contém ["4D View Pro", "4D Write Pro"]
Todos os acessos de grupo dados não afectam o directório utilizador/grupo.
Agora é a sua vez de o experimentar. Administre os seus utilizadores e grupos dinamicamente … como quiser!