Integração com o Banco de Dados

Criação e atualização de usuários

Inserção de usuários

Tabela Users*

Esta tabela contém as informações de Pessoas e Visitantes.

  • id: PK da tabela e identificador mutável do registro do usuário.
    • No iDSecure, cada edição de usuário resulta em uma inserção na tabela Users, com um novo id.
  • inativo: Valor booleano que indica se um usuário está inativado.
    • Usuários inativos ainda são listados no iDSecure, porém não têm permissões de acesso.
  • contingency: Valor booleano que indica se um usuários está em contingência.
    • Este valor só tem significado na versão Enterprise do iDSecure. No modo de contingência, as informações do usuário são mantidas nos dispositivos, de modo que os usuários em contingência continuam tendo acesso liberado mesmo que o servidor ou a rede estejam desligados.
  • deleted: Valor booleano que indica se um usuário está deletado.
    • Usuários deletados não são listados no iDSecure e são mantidos no banco apenas a fim de registrar o histórico de modificações em um usuário, por motivos de auditoria.
  • idDevice: Identificador único e imutável de um usuário.
    • Este valor é persistido durante edições de um usuário e corresponde à informação "ID" do usuário, exibida na interface Web do iDSecure.
  • idType: Valor que indica o tipo de usuário; se é Pessoa ou Visitante.
    • 0: Pessoa
    • 1: Visitante
  • idArea: Identificador da área atual do usuário (coluna id, da tabela Areas).
  • dataLastLog: Data e hora do último acesso feito pelo usuário.
  • timeOfRegistration: Data e hora do registro de um usuário.

* As demais colunas têm significado auto-explicativo.

Atualização de usuários

Conforme a descrição do campo id da tabela Users, o comportamento do iDSecure ao atualizar um usuário consiste em marcar o registro antigo com a flag deleted = 1 e inserir um novo registro com um novo valor na coluna id e os valores atualizados do usuário.

Isto é feito a fim de registro de histórico de alterações das informações de um usuário e não é obrigatório.

É importante tomar o cuidado de não duplicar registros na tabela Users com o mesmo id.

Exemplos

Exemplo de modificação de um usuário (atualizando o registro já existente)

UPDATE Users SET name = "Walter H. White" WHERE id = 1000001;

Exemplo de modificação de um usuário (criando um novo registro e preservando o existente)

Este comportamento é similar ao que o iDSecure faz ao se editar um usuário.

INSERT INTO Users
SELECT MAX(_u.id) + 1, "Walter H. White", _u.registration, _u.pis, _u.senha, _u.barras, _u.cpf, _u.rg, _u.phone, _u.email, _u.emailAcesso, _u.hash, _u.salt, _u.admin, _u.inativo, _u.contingency, _u.deleted, _u.idDevice, _u.endereco, _u.bairro, _u.cidade, _u.cep, _u.cargo, _u.admissao, _u.telefone, _u.ramal, _u.pai, _u.mae, _u.nascimento, _u.sexo, _u.estadoCivil, _u.nacionalidade, _u.naturalidade, _u.idResponsavel, _u.responsavelNome, _u.veiculo_marca, _u.veiculo_modelo, _u.veiculo_cor, _u.veiculo_placa, _u.idType, _u.dateLimit, _u.visitorCompany, _u.blackList, _u.dateStartLimit, _u.pisAnterior, _u.comments, _u.allowParkingSpotCompany, _u.idArea, _u.dataLastLog, _u.timeOfRegistration
FROM Users _u 
WHERE id = 1000001;

UPDATE Users SET deleted = 1 WHERE id = 1000001;

Organização das Regras de Acesso

Uma regra de acesso é o conjunto de informações que determina se um certo usuário tem acesso a um local, em um certo horário. Além das informações de "Quem", "Quando" e "Onde", também é possível especificar algumas lógicas adicionais, como bloqueio de re-entrada, escolta, etc.

A tabela de regras de acesso é a AccessRules e contém apenas as informações de "Como" um usuário pode ter acesso, correspondendo às lógicas adicionais mencionadas acima.

Os locais e horários são definidos em tabelas dedicadas para isso, Areas e Scheduls, respectivamente. O que associa áreas e horários a uma regra de acesso são tabelas relacionais, tais como a AreaAccessRules e a SchedulAccessRules.

Abaixo, segue uma descrição das tabelas mencionadas:

Tabela AccessRules

Esta tabela contém as informações de Regras de Acesso.

  • id: PK da tabela e identificador da regra de acesso.
  • name: Nome da regra de acesso.
  • idType: Tipo da regra, quanto ao controle de acesso de usuários ou veículos.
    • 1: Usuários
    • 2: Veículos

* As demais colunas desta tabela são de preenchimento opcional. Recomenda-se que o integrador experimente as funções adicionais no próprio software, utilizando a versão Enterprise.

Tabela Areas

Esta tabela contém as informações de Áreas.

  • id: PK da tabela e identificador da área.
  • name: Nome da área.
  • externa: Valor booleano que indica se a área é externa.
    • A definição de área externa é importante para o uso de algumas funcionalidades relacionadas à saída de um usuário do local. Por exemplo: baixa de cartões e expiração de Visitantes ao sair de uma empresa.
  • ade: Valor booleano que indica se a área tem Anti-Dupla Entrada habilitada.
    • A Anti-Dupla Entrada (ADE) é um recurso utilizado em áreas com entrada e saída controladas, evitando que um usuário libere entrada para outro em catracas, por exemplo.

Tabela AreaAccessRules

Esta tabela contém as relações de Áreas com Regras de Acesso.

  • id: PK da tabela e identificador da relação entre uma área e uma regra de acesso.
  • idAccessRule: Identificador da regra de acesso (coluna id, da tabela AccessRules).
  • idArea: Identificador da área (coluna id, da tabela Areas).

Tabela Scheduls

Esta tabela contém as informações de definições de Horários.

  • id: PK da tabela e identificador da definição de horário.
  • name: Nome da definição de horário.
  • sundayStart: Horário de início da liberação / expediente, expresso em segundos desde as 0h.
  • sundayStart: Horário de fim da liberação / expediente, expresso em segundos desde as 0h.

* Como é de se esperar, existe um par de colunas xStart e xEnd para cada dia da semana, começando por Domingo (sunday) e indo até Sábado (saturday).

* O nome desta tabela contém um erro de digitação e, por motivos de compatibilidade, seu nome não deve ser alterado.

Tabela SchedulAccessRules

Esta tabela contém as relações de definições de Horários com Regras de Acesso.

  • id: PK da tabela e identificador da relação entre uma definição de horário e uma regra de acesso.
  • idAccessRule: Identificador da regra de acesso (coluna id, da tabela AccessRules).
  • idSchedul: Identificador da definição de horário (coluna id, da tabela Scheduls).

Tabela UserAccessRules

Esta tabela contém as relações de Pessoas e Visitantes com Regras de Acesso.

  • id: PK da tabela e identificador da relação entre um usuário pertencente a uma regra de acesso.
  • idAccessRule: Identificador da regra de acesso (coluna id, da tabela AccessRules).
  • idUser: Identificador do usuário (coluna id, da tabela Users).
  • isEscort: Valor booleano que indica se o usuário é um escoltador, para uso com a funcionalidade de escolta.
    • Verificar o preenchimento das colunas EscortEnabled e EscortPeriod da tabela AccessRules.

Tabela Groups

Esta tabela contém as informações de definições de Departamentos, Grupos e Empresas.

  • id: PK da tabela e identificador do departamento, grupo ou empresa.
  • name: Nome da do departamento, grupo ou empresa.
  • disableADE: Valor booleano que indica se as definições de Anti-Dupla Entrada estão desabilitadas para este departamento, grupo ou empresa.
  • idType: Tipo do registro, indicando se é um departamento, grupo ou empresa.
    • 0: Departamento
    • 1: Grupo
    • 2: Empresa

Tabela UserGroups

Esta tabela contém as relações de Pessoas e Visitantes com Departamentos, Grupos e Empresas.

  • id: PK da tabela e identificador da relação entre um usuário pertencente a um departamento, grupo ou empresa.
  • idUser: Identificador do usuário (coluna id, da tabela Users).
  • idGroup: Identificador do departamento, grupo ou empresa (coluna id, da tabela Groups).
  • isVisitor: Valor booleano que indica se o grupo é um grupo de visitantes.

Tabela GroupAccessRules

Esta tabela contém as relações de Departamentos, Grupos e Empresas com Regras de Acesso.

  • id: PK da tabela e identificador da relação entre um departamento, grupo ou empresa pertencente a uma regra de acesso.
  • idAccessRule: Identificador da regra de acesso (coluna id, da tabela AccessRules).
  • idGroup: Identificador do departamento, grupo ou empresa (coluna id, da tabela Groups).
  • isEscort: Valor booleano que indica se o departamento ou grupo é contém escoltadores, para uso com a funcionalidade de escolta.

Exemplos

Exemplo de associação de um usuário a uma regra de acesso, por ID do usuário

Insere o usuário de ID número 1000001 na regra de acesso de ID 1 (regra "Sempre Liberado", por padrão).

INSERT INTO UserAccessRules (idAccessRule, idUser) VALUES (1, 1000001);

Exemplo de associação de um usuário a um departamento, grupo ou empresa

Insere o usuário de ID número 1000001 no grupo de ID 1 ("Departamento Padrão", por padrão).

INSERT INTO Groups (idGroup, idUser) VALUES (1, 1000001);

É possível criar departamentos e regras de acesso utilizando a própria interface de usuário do iDSecure, configurando-as conforme for necessário, e apenas inserir os usuários nos departamentos adequados.

Consulta de acessos de usuários

Todos os registros de acessos dos usuários são armezanados na tabela Logs do banco de dados do iDSecure.

Tabela Logs

Esta tabela contém as informações sobre os registros de acesso.

  • id: PK da tabela e identificador do log de acesso
  • idDevice: Identificador do dispositivo em que houve o acesso (coluna id, da tabela Devices)
  • deviceName: Nome do dispositivo em que houve o acesso (coluna name da tabela, Devices)
  • time: Data e horário do acesso (formato YYYY-MM-DD HH:MM:SS)
  • event: Tipo do evento de acesso
    • 0: Erro
    • 1: Equipamento inválido
    • 2: Parâmetros de regra de identificação inválidos
    • 3: Não identificado
    • 4: Identificação pendente
    • 5: Timeout na identificação
    • 6: Acesso negado
    • 7: Acesso autorizado
    • 8: Acesso pendente
    • 11: Abertura por botoeira
    • 12: Abertura por interface Web (ou comando "Abrir porta")
    • 13: Desistência
  • idArea: Identificador da área acessada (coluna id da tabela Areas)
  • area: Nome da área acessada (coluna name da tabela Areas)
  • reader: Leitora através da qual o acesso foi realizado (coluna reader da tabela DeviceRelays)
  • idUser: Identificador do usuário que realizou o acesso (coluna id da tabela Users)

Exemplos

Exemplo de consulta dos últimos 10 acessos autorizados de um usuário

SELECT u.id, u.name, l.idDevice, l.deviceName, l.reader, l.idArea, l.area, l.event, l.time
FROM Logs l
INNER JOIN Users u ON l.idUser = u.id
WHERE l.idUser = 1000001 AND l.event = 7
ORDER BY time DESC
LIMIT 10;