Controle de Registros

Pessoal, bom dia.

Levando-se em conta que eu tenha apenas 1 (UM) DB para todas as minhas aplicações, o esquema “nativo” de segurança do SC é realizado:

a) No nível das aplicações… Exemplo: Usuário X e/ou Grupo X pode(m) acessar essas ou aquelas aplicações;
b) No nível do registro… Exemplo: Usuário X pode acessar todos os registros, os registros criados por ele ou os registros pertencentes à sua “empresa”.

Eu preciso, além do citado acima, criar departamentos dentro de uma ou mais empresas que possam:

a) Acessar os registro de alguns e/ou todos os departamentos da sua empresa… Exemplo: O Departamento de VENDAS pode ter acesso aos registros do departamento de ESTOQUE, mas não pode ter acesso aos registro do departamento FINANCEIRO, etc
b) Que uma empresa possa acessar os registros pertencentes a outras empresas… Exemplo: Uma holding que controle diversas empresas… Uma empresa de LOGÍSTICA possa ter acesso aos registros de uma empresa de VENDAS, ambas do mesmo grupo, etc etc…

Aceito sugestões, lembrando que esse controle tem que ser no nível do REGISTRO e não do DB.

Abraços

Mestre Jovito,

Vou te contar como eu faço isto.
Eu tinha uma estrutura assim Usuario -> Grupo de Usuário -> Acesso do Grupo de Usuário
Ai eu cai na situação em que um usuário específioc saia fora da regra do grupo que ele estava.
Ai eu comecei a criar outros grupos, chegou uma hora que isto nao se sustenva mais.

O que eu fiz, criei uma estrutura assim:

Usuário -> Grupo de Usuário -> Acesso do Grupo de Usuário

        ->                           -> Acesso do Usuário

A rotina de acesso deixou de olhar para o Acesso do Grupo do Usuário e começou a respeitar o Acesso do Usuário.

Quando eu crio um novo usuário ele copia as regras de acesso do grupo que o Usuário faz parte.
Mas é possível atualizar as regras de acesso por usuário nao somente por grupo.

É possível zerar as regras do usuário clicando em um botão que apaga todo o acesso do usuário e copia tudo novamente do Acesso do Grupo do Usuário para o Acesso Usuário.

No fim, o controle de acesso é por usuário, nao por grupo.

Espero que tenha dado alguma ajuda

Grande abraço e boa sorte

Cassio, boa noite…

Pelo que entendi o seu controle está sendo efetuado no usuário, eu preciso de um controle no registro.

É isso, ou me enganei?

Então,

Faltou eu te dizer que existe uma outra tabela chamada interface e tabelas

Com estas tabelas extras eu controlo qual grupo pode acessar as interfaces e acessar as tabelas.

Realmente eu não faço controle por linha de registro e sim por tabela inteira.

mas se eu tivesse que implementar eu seguiria a mesma lógica.

Veja o que eu faria para os teus exemplos:

a) Acessar os registro de alguns e/ou todos os departamentos da sua empresa… Exemplo: O Departamento de VENDAS pode ter acesso aos registros do departamento de ESTOQUE, mas não pode ter acesso aos registro do departamento FINANCEIRO, etc

Em todas as minhas tabelas do meu sistema eu tenho company_id e unit_id ( porque o meu sistema é multi empresa )

Então eu criaria uma tabela extra, como acesso_empresas e no login eu teria um array para todas as empresas que o usuário tem acesso

Então no SQL ao invés de eu fazer company_id = [glo_company_id] => este campo vem da tela do login, eu faria

company_id in ([glo_list_companies_id]) este campo [glo_list_companies_id= eu montaria na tela de login e serial uma string assim “1,2,3,4” codigos das empresas que este usuário tem acesso

e cada usuário teria o acesso aos registros que este usuário está autorizado.

b) Que uma empresa possa acessar os registros pertencentes a outras empresas… Exemplo: Uma holding que controle diversas empresas… Uma empresa de LOGÍSTICA possa ter acesso aos registros de uma empresa de VENDAS, ambas do mesmo grupo, etc etc…

a mesma coisa, adicionaria company_id na tabela e faria o mesmo comando company_id in ([glo_lista_companies_id])

Espero ter ajudado