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