Em 20 de março de 2010 01:26, tiago gomes <[email protected]>escreveu:

> Olá pessoal,
>
> Sou novo no Postgres e quero saber como se faz um sistema de login com
> níveis de acesso para um site intranet.
>
> Eu sei faser em MySQL mas quero entrar no mundo Postgres.
>
>
> Conforme já foi mencionado anteriormente, a regra do negócio não se altera.


Como não informaste detalhes de sua implementação em MySQL, fica difícil
dizer qual a melhor forma de migrar a mesma para postgresql.

Vou falar de modelos de login que já usei e talvez sejam de alguma ajuda
para ti.

1) se tiveres o controle do que o usuário pode fazer pelo aplicativo (usando
o banco apenas para verificar a senha e o login), bastaria uma tabela de
login
Tabela: login
campos: login varchar(20) pk,
              senha varchar(32) ou bytea ou ... - depende de como guardarás
tua senha
              demais dados relativos a teu site... (email, nome, etc...)
2) se tiveres o controle do que o usuário pode fazer pelo "grupo" ao qual
ele pertence (ou "papel", "role"), poderias ter duas ou três tabelas.
O modelo com duas tabelas é para o caso de um usuário somente poder
pertencer a um grupo
Tabela: grupo
campos: id serial pk,
              nome varchar(40)
Tabela: login
 campos: login varchar(20) pk,
              senha varchar(32) ou bytea ou ... - depende de como guardarás
tua senha
              grupo_id integer fk,
              demais dados relativos a teu site... (email, nome, etc...)

O modelo com três tabelas seria para o caso de teres a possibilidade de um
usuário pertencer a dois ou mais grupos (exemplo, usuário P é administrador
e também é vendedor). Neste caso precisas descobrir o que fazer quando
houver sobreposição de privilégios, se algum recurso é permitido para um
deles apenas (por exemplo, área de vendas é permitida ao vendedor mas não
para o administrador), precisas ver se teu sistema será otimista (dá a
permissão se pelo menos um deles tiver, no exemplo o usuário P veria) ou se
será pessimista (no exemplo, usuário P não veria).
Tabela: grupo
campos: id serial pk,
              nome varchar(40)
Tabela: login
 campos: login varchar(20) pk,
              senha varchar(32) ou bytea ou ... - depende de como guardarás
tua senha
              demais dados relativos a teu site... (email, nome, etc...)
Tabela: grupo_login
campos: grupo_id integer pk,
              login_login varchar(20) pk

3) se teu banco de dados também guardar as ações possíveis (recursos e ações
referentes a esses recursos), nesse caso precisarás de mais tabelas. Vou
mostrar apenas um modelo simplificado no qual cada usuário pertença a apenas
um grupo, podes expandir como desejares:
Tabela: grupo
campos: id serial pk,
              nome varchar(40)
Tabela: login
 campos: login varchar(20) pk,
              senha varchar(32) ou bytea ou ... - depende de como guardarás
tua senha
              grupo_id integer fk,
              demais dados relativos a teu site... (email, nome, etc...)
Tabela: recursos   -- nesta tabela terias, por exemplo, login, fóruns,
recursos humanos, etc...
campos:    id serial,
                 nome varchar(80)
Tabela: acoes   -- nesta tabela terias, por exemplo, leitura, escrita,
administração, etc... Sao as acoes associadas a um recurso
 campos: id serial,
               nome varchar(40)
Tabelas acoes_recursos_grupo           -- aqui da a cada grupo permissao a
uma acao em um determinado recurso do site, por exemplo, dar permissao de
"alterar" no recurso "endereço de cliente" para o administrador
                                                         -- se nao houver
registro nesta tabela para uma associacao acoes recursos grupo,  entao não
tem permissão
campos: acoes_id     integer pk
              recursos_id integer pk
              grupo_id      integer pk

 Nota, são exemplos de modelagens de login usando um banco de dados (tipos
são do postgreSQL, mas podem ser convertidos facilmente para outros bancos
de dados). Lembre-se há muitas formas de se fazer isso.

Atenciosamente,

Desde já Obrigado.
>
> --
> [email protected]
> Tiago Gomes de Oliveira
> Designer Gráfico
> (62)81252423
> Uruaçu - GO
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
André de Camargo Fernandes
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a