1. Visão Geral

Este manual detalha o procedimento para criação de usuários do GBS SMART.

  • Todo usuário deve ter uma conta no LDAP para login.
  • Todas as configurações e dados do GBS Smart ficam dentro do schema SMART.
  • A tabela User contém informações básicas sobre o usuário.
  • A tabela UserPermission relaciona usuários com suas permissões através dos campos UserId e PermissionId (ver Lista de Permissões Disponíveis).
  • A tabela UserStation relaciona usuários com estações através dos campos UserId e StationId.

2. Procedimento

2.1. Criar um novo posto de trabalho na tabela Station

Para criar um novo posto de trabalho, ou estação, insira um registro na tabela SMART.Station preenchendo as seguintes colunas:

  • StationId: Preencha com um ID incremental da estação.
  • Description: Preencha com o nome da estação.
  • MandatoryConference: Indique se as transações do posto deverão ir para conferência obrigatória (1 para sim, 0 para não).
  • CityId: Indique o ID da cidade em que a estação se localiza.

Note

O ID da estação (StationId) será usado nos próximos passos.

2.2. Criar um novo usuário na tabela User

Para criar um novo usuário, insira um registro na tabela SMART.User preenchendo as seguintes colunas:

  • CPF: Preencha com o CPF do usuário.
  • Username: Preencha com o nome de usuário.
  • Admin: Indique se o usuário é administrador (1 para sim, 0 para não).
  • Active: Indique se o usuário está ativo (1 para ativo, 0 para inativo). O valor padrão é 1.
  • Pguid (opcional): Preencha com o PGUID do usuário na base biométrica.

Note

A coluna UserId é auto incremental. O ID do usuário será ser usado nos próximos passos.

2.3. Atribuir permissões ao usuário na tabela UserPermission

Após criar o usuário, é preciso atribuir suas permissões. Para isso, insira um registro na tabela SMART.UserPermission para cada permissão que o usuário deve ter, relacionando o UserId com o PermissionId.

2.3.1. Lista de permissões disponíveis

O PermissionId está especificado na tabela a seguir:

PermissionId Descrição PermissionName
1 Permissão de listagem de cadastro civil, 2º via, etc. CIVIL
2 Permissão de listagem de cadastro criminal. CRIMINAL
3 Permissão de visualização da tela de layout. LAYOUT
4 Permissão de visualização da tela de busca avançada. PESQUISA
5 Permissão para realizar captura de biometrias. CAPTURA
6 Permissão para realizar download de biometrias, impressão de protocolo e prontuário. DOWNLOAD
7 Permissão para realizar conferência de biográficos. CONFERENCE
8 Permissão para realizar a baixa de malotes. PACKAGE

2.4. Associar o usuário a uma estação na tabela UserStation

Insira um registro na tabela UserStation relacionando o UserId com o StationId. A estação deve estar configurada previamente na tabela SMART.Station, como explicado anteriormente.

  • UserId: Utilize o UserId do usuário, como consta na tabela SMART.User.
  • StationId: Preencha com o ID da estação à qual o usuário será associado, como consta na tabela SMART.Station.

2.5. Procedure de criação de Usuário, alocação de posto e permissões

DELIMITER //
CREATE PROCEDURE InsertNewUser(
  IN p_CPF VARCHAR(14),
  IN p_Username VARCHAR(64),
  IN p_Admin TINYINT(1),
  IN p_Active TINYINT(1),
  IN p_Pguid VARCHAR(100),
  IN p_StationId INT,
  IN p_Permissions VARCHAR(100) -- Permissões separadas por vírgula (ex: '1,4,5,6,7')
)
BEGIN
  DECLARE user_id INT;
  DECLARE perm_pos INT DEFAULT 1;
  DECLARE perm_length INT;
  DECLARE current_permission VARCHAR(10);
  DECLARE done INT DEFAULT 0;

  -- Insere um novo usuário na tabela User
  INSERT INTO `User` (`CPF`, `Username`, `Admin`, `Active`, `Pguid`)
  VALUES (p_CPF, p_Username, p_Admin, p_Active, p_Pguid);

  -- Obtém o último ID inserido na tabela User
  SET user_id = LAST_INSERT_ID();

  -- Loop para inserir as permissões
  read_loop: LOOP
      SET perm_length = LOCATE(',', p_Permissions, perm_pos) - perm_pos;
      IF perm_length < 0 THEN
          SET perm_length = LENGTH(p_Permissions) - perm_pos + 1;
          SET done = 1;
      END IF;
      SET current_permission = SUBSTRING(p_Permissions, perm_pos, perm_length);

      -- Inserir permissão na tabela UserPermission
      INSERT INTO `UserPermission` (`UserId`, `PermissionId`)
      VALUES (user_id, current_permission);

      IF done = 1 THEN
          LEAVE read_loop;
      END IF;

      SET perm_pos = LOCATE(',', p_Permissions, perm_pos) + 1;
  END LOOP read_loop;

  -- Insere associação do novo usuário com uma estação na tabela UserStation
  INSERT INTO `UserStation` (`UserId`, `StationId`)
  VALUES (user_id, p_StationId);
END //
DELIMITER ;

2.5.1. Exemplo de chamada do procedure

Argumentos:

  • CPF (somente números)
  • Username (igual ao LDAP)
  • Admin (0: false, 1: true)
  • Ativo (0: false, 1: true)
  • PGUID do GBDS (procurar CPF no GBDS)
  • ID da estação
  • Permissões separadas por vírgula

Chamar o procedimento armazenado para inserir um novo usuário:

CALL InsertNewUser('12345678900', 'new_user', 0, 1, NULL, 1,'1,4,5,6,7');

O exemplo acima cria um novo usuário com CPF 123.456.789-00, nome de usuário new_user, não administrador, ativo, sem PGUID, associado à estação com ID 1 e com as permissões 1,4,5,6,7.