Descrição:
Como realizar a importação de usuários no Elipse E3 a partir de um arquivo CSV, permitindo criar, atualizar e remover usuários automaticamente?
Solução
É possível implementar a importação de usuários via script no Elipse E3 utilizando leitura de arquivos texto (CSV) e manipulação do nó Security do objeto [?Server].
O processo envolve basicamente três etapas:
- Leitura do arquivo CSV
- Tratamento dos dados
- Execução das ações (criar, atualizar ou remover usuários)
1. Leitura do arquivo CSV
Para leitura do arquivo, recomenda-se utilizar o objeto FileSystemObject, conforme descrito no artigo:
https://kb.elipse.com.br/kb12658-como-lerescrever-em-arquivos-texto-txt-pelo-e3/
2. Manipulação de usuários no E3
Os usuários são gerenciados através do objeto:
[?Server].Security.Users
Criação de usuários
A partir da versão 6.5, é possível utilizar o método CreateUser:
Exemplo:
Set Users = Application.GetObject("[?Server].Security.Users")
Users.CreateUser "User01", 0, False, "Teste001", "User01"
MsgBox "FullName: " & Application.GetObject("[?Server].Security.Users.[User01]").FullName
Users.CreateUser "User02", 0, False, "Teste002", "User02"
MsgBox "FullName: " & Application.GetObject("[?Server].Security.Users.[User02]").FullName
Referência:
https://kb.elipse.com.br/kb-30905-como-criar-novos-usuarios-durante-execucao-do-e3/
Alteração de usuários
Para alterar um usuário existente, basta acessar o objeto e modificar suas propriedades:
Set userObj = Application.GetObject("[?Server].Security.Users.[User01]")
userObj.FullName = "Novo Nome"
userObj.Password = "NovaSenha"
Remoção de usuários
Para remover um usuário:
Application.GetObject("[?Server].Security.Users").RemoveUser "User01"
Associação a grupos
Para adicionar um usuário a um grupo:
Application.GetObject("[?Server].Security.Users.[User01]").AddToGroup "Operadores"
3. Exemplo completo (CSV → criação/alteração/remoção)
Formato do arquivo CSV
Exemplo:
Acao;Login;NomeCompleto;Senha;Grupo
C;user01;Usuário 01;123;Operadores
U;user02;Usuário 02;456;Administradores
D;user03;;;
Onde:
- C = Criar
- U = Atualizar
- D = Deletar
Script de exemplo
Dim fso, file, linha, dados
Dim Users, userObj
Dim acao, login, nome, senha, grupo
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("C:\Temp\usuarios.csv", 1)
' Pula o cabeçalho
file.SkipLine
Set Users = Application.GetObject("[?Server].Security.Users")
Do While Not file.AtEndOfStream
linha = file.ReadLine
dados = Split(linha, ";")
acao = Trim(dados(0))
login = Trim(dados(1))
nome = Trim(dados(2))
senha = Trim(dados(3))
grupo = Trim(dados(4))
On Error Resume Next
Set userObj = Users.Item(login)
If Err.Number <> 0 Then
Set userObj = Nothing
Err.Clear
End If
On Error GoTo 0
Select Case acao
Case "C" ' Criar
If userObj Is Nothing Then
Users.CreateUser login, 0, False, nome, senha
End If
Case "U" ' Atualizar
If Not userObj Is Nothing Then
userObj.FullName = nome
If senha <> "" Then
userObj.Password = senha
End If
End If
Case "D" ' Remover
If Not userObj Is Nothing Then
Users.RemoveUser login
End If
End Select
' Associação ao grupo
If grupo <> "" And acao <> "D" And Not userObj Is Nothing Then
Application.GetObject("[?Server].Security.Users.[" & login & "]").AddToGroup grupo
End If
Loop
file.Close
Detalhamento do script
O script percorre o arquivo CSV linha a linha e executa ações nos usuários do E3 conforme definido em cada registro.
- Leitura do arquivo
- Utiliza
FileSystemObjectpara abrir o CSV. - Ignora a primeira linha (cabeçalho) com
SkipLine.
- Utiliza
- Separação dos dados
- Cada linha é dividida pelo caractere
;usandoSplit. - Os campos são atribuídos às variáveis:
acao(C, U ou D)loginnomesenhagrupo
- Cada linha é dividida pelo caractere
- Verificação do usuário
- Tenta obter o usuário com
Users.Item(login). - Caso não exista, a variável
userObjfica comoNothing.
- Tenta obter o usuário com
- Execução da ação
- C (Criar): cria o usuário se ele ainda não existir (
CreateUser). - U (Atualizar): altera nome e senha (se informada).
- D (Deletar): remove o usuário (
RemoveUser).
- C (Criar): cria o usuário se ele ainda não existir (
- Associação a grupo
- Se houver grupo informado e a ação não for exclusão, o usuário é adicionado ao grupo com
AddToGroup.
- Se houver grupo informado e a ação não for exclusão, o usuário é adicionado ao grupo com
- Loop até o final
- O processo se repete até o fim do arquivo (
AtEndOfStream).
- O processo se repete até o fim do arquivo (
Observações importantes
- O usuário logado deve possuir permissões para gerenciamento de usuários e grupos.
- O método
CreateUserestá disponível apenas a partir da versão 6.5. - Recomenda-se validar os dados do CSV antes da execução (ex.: campos obrigatórios, duplicidades, etc.).
- Em ambientes produtivos, evite o uso de
On Error Resume Nextsem tratamento adequado.
Artigos Relacionados
- KB-12658: Como ler/escrever em arquivos texto (TXT) pelo E3.
- KB-30905: Criando novos usuários durante execução do aplicativo E3.
- Manual de Script – Security.
Anexos:
