Integração com o Banco de Dados
Nesta seção serão detalhados os diferentes objetos (tabelas) presentes no banco de dados e os recursos que você pode utilizar a fim de suportar métodos para inserir, atualizar e excluir informações dele.
users
Representa um usuário. Todas as informações e definições relativas ao usuário é armazenada nesta tabela
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador mutável de registro de um usuário. No iDSecure, cada edição de usuário resulta em uma inserção na tabela Users, com um novo id . |
inativo | bool | Indica se um usuário está inativado (Caso 0, está ativo e caso 1 está inativo). Usuários inativos ainda são listados no iDSecure, porém não têm permissões de acesso. |
contingency | bool | Indica se um usuários está em contingência (1 indica que está em contigência e 0 indica o contrário). 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 | bool | Indica se um usuário está deletado (1 indica que está deletado e 0 indica o contrário). 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 | int | 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 | bool | Indica o tipo de usuário:Pessoa ou Visitante. Se for 0 é pessoa e 1 é visitante. |
idArea | int | Identificador da área atual do usuário (coluna id , da tabela Areas). |
dataLastLog | int | Inteiro representando a data e hora (Unix timestamp) do último acesso feito pelo usuário. |
timeOfRegistration | int | Inteiro representando a data e hora (Unix timestamp) do registro do usuário. |
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
.
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;
AccessRules
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:
Esta tabela contém as informações de Regras de Acesso.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador da regra de acesso. |
name | bool | Indica se um usuário está inativado (Caso 0, está ativo e caso 1 está inativo). Usuários inativos ainda são listados no iDSecure, porém não têm permissões de acesso. |
idType | string | Tipo da regra, quanto ao controle de acesso de usuários ou veículos (Pode conter os valores 'usuários' ou 'veículos') |
Areas
Esta tabela contém as informações de Áreas.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador da área. |
name | string | Nome da área. |
externa | bool | 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 | bool | 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. |
AreaAccessRules
Esta tabela contém as relações de Áreas com Regras de Acesso.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador da relação entre uma área e uma regra de acesso. |
idAccessRule | int | Identificador da regra de acesso (coluna id , da tabela AccessRules). |
idArea | int | Identificador da área (coluna id , da tabela Areas). |
Scheduls
Esta tabela contém as informações de definições de Horários.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador da definição de horário. |
name | string | Nome da definição de horário. |
sundayStart | int | Horário de início da liberação / expediente, expresso em segundos desde as 0h. |
sundayStart | int | Horário de fim da liberação / expediente, expresso em segundos desde as 0h. |
* Os horário são armazenados em segundos desde às 0 horas do dia. Exemplo: Uma hora da manhã será 3600, já que 16060 = 3600. Duas horas da manhã será 7200, já que 26060 = 7200. * 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.
SchedulAccessRules
Esta tabela contém as relações de definições de Horários com Regras de Acesso.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador da relação entre uma definição de horário e uma regra de acesso. |
idAccessRule | int | Identificador da regra de acesso (coluna id , da tabela AccessRules). |
idSchedul | int | Identificador da definição de horário (coluna id , da tabela Scheduls). |
UserAccessRules
Esta tabela contém as relações de Pessoas e Visitantes com Regras de Acesso.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador da relação entre um usuário pertencente a uma regra de acesso. |
idAccessRule | int | Identificador da regra de acesso (coluna id , da tabela AccessRules). |
idUser | int | Identificador do usuário (coluna id , da tabela Users). |
isEscort | int | Indica se o departamento ou grupo contém escoltadores, para uso com a funcionalidade de escolta (Verificar o preenchimento das colunas EscortEnabled e EscortPeriod da tabela AccessRules). |
Groups
Esta tabela contém as informações de definições de Departamentos, Grupos e Empresas.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador da relação entre um usuário pertencente a um departamento, grupo ou empresa. |
idUser | int | Identificador da regra de acesso (coluna id , da tabela AccessRules). |
disableADE | bool | Indica se as definições de Anti-Dupla Entrada estão desabilitadas para este departamento, grupo ou empresa. |
idType | int | Tipo do registro, indicando se é um departamento, grupo ou empresa(Valores possíveis: 0=Departamento, 1=Grupo, 2=Empresa). |
UserGroups
Esta tabela contém as relações de Pessoas e Visitantes com Departamentos, Grupos e Empresas.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador do departamento, grupo ou empresa. |
idUser | int | Nome da do departamento, grupo ou empresa. |
idGroup | int | Identificador do departamento, grupo ou empresa (coluna id , da tabela Groups). |
isVisitor | bool | Indica se o grupo é um grupo de visitantes. |
GroupAccessRules
Esta tabela contém as relações de Departamentos, Grupos e Empresas com Regras de Acesso.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador da relação entre um departamento, grupo ou empresa pertencente a uma regra de acesso. |
idAccessRule | int | Identificador do usuário (coluna id , da tabela Users). |
idGroup | int | Identificador do departamento, grupo ou empresa (coluna id , da tabela Groups). |
isEscort | bool | Indica se o departamento ou grupo contém escoltadores, para uso com a funcionalidade de escolta. |
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.
Logs
Todos os registros de acessos dos usuários são armezanados na tabela Logs do banco de dados do iDSecure.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador do log de acesso. |
idDevice | int | Identificador do dispositivo em que houve o acesso (coluna id , da tabela Devices). |
deviceName | string | Nome do dispositivo em que houve o acesso (coluna name da tabela, Devices) |
time | int | Inteiro representando a data e hora (Unix timestamp) do acesso |
event | int | Tipo do evento de acesso. Os eventos de acesso são: 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 | int | Identificador da área acessada (coluna id da tabela Areas). |
area | string | Nome da área acessada (coluna name da tabela Areas). |
reader | string | Leitora através da qual o acesso foi realizado. |
idUser | int | Identificador do usuário que realizou o acesso (coluna id da tabela Users). |
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;
Cards
Esta tabela contém informações dos cartões cadastrados.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador do cartão. |
idUser | int | ID do usuário a quem pertence o cartão. Corresponde ao campo "id" da tabela Users. |
number | int | Código do cartão em formato numérico. Em caso de cartões no formato "área,código" e hexadecimal, este valor é convertido para formato numérico e armazenado neste campo. |
idType | int | Inteiro representando se a tag está destinado a uma pessoa ou veículo, caso tenha o valor 1 = pessoa, caso tenha o valor 2 = veículo |
type | int | Tecnologia do cartão: "0" para ASK/125kHz, "1" para Mifare e "2" para QR-Code. |
numberStr | string | Código do cartão no formato String. Útil para cartões cujo código contém caracteres hexadecimais ou área e código. |
Devices
Esta tabela contém informações dos dispositivos cadastrados.
Campo | Tipo | Descrição |
---|---|---|
id | int 64 | Identificador do dispositivo. |
name | string | Nome de definição do dispositivo. |
host | int | String contendo o host do dispositivo. |
port | int | Inteiro representando a porta em que o dispositivo esta escutando. |
serial | string | String contendo a serial do dispositivo. |
versão | string | String contendo a versão do software. |