Boa tarde!
Quero que o usuário só veja os seus registros, a não ser que o usuário seja administrador, dai pode ver todos os registros.
Boa tarde!
Quero que o usuário só veja os seus registros, a não ser que o usuário seja administrador, dai pode ver todos os registros.
Temos inúmeros tópicos que falam a respeito disso, já pesquisou aqui?
Achei dois tópicos que falavam a respeito, mas não deram certo.
Vc pode montar um where usuario={usuario}
Mas vai ser bem complicado isso…
No sql da minha consulta eu tenho o seguinte código:
SELECT
ta.cd_apontamento,
ta.ds_apontamento,
ta.hr_apontamento,
ta.cd_cliente,
ta.cd_projeto,
ta.cd_atividade,
ta.login,
ta.dt_apontamento,
tc.ds_cliente,
tp.nm_projeto,
tas.nm_atividade
FROM
toth_apontamentos ta
INNER JOIN toth_usuarios_clientes tuc ON ta.cd_cliente = tuc.cd_cliente
INNER JOIN toth_clientes tc ON ta.cd_cliente = tc.cd_cliente
INNER JOIN toth_projetos tp ON ta.cd_projeto = tp.cd_projeto AND tp.cd_cliente = tc.cd_cliente
INNER JOIN toth_atividades tas ON ta.cd_atividade = tas.cd_atividade AND tas.cd_cliente = tp.cd_cliente
WHERE tuc.login = ‘[usr_login]’
mas dai não sei se preciso fazer algo no sql ou em algum evento.
esta certo , só que dai cada usuário vai ver o seu registro, si tu quer que o administrador veja tudo teria que ficar assim
WHERE ( tuc.login = ‘[usr_login]’ or ‘[usr_login]’ = ‘administrador’ )
Eu inclui a linha " AND ta.login = ‘[usr_login]’ " e agora está filtrando certo por usuário logado, agora para o administrador ter acesso a todos os registros eu coloquei assim " WHERE ( tuc.login = ‘[usr_login]’ AND ta.login = ‘[usr_login]’ or ‘[usr_login]’ = ‘administrador’ ) " mas não deu certo, eu tenho que definir em algum evento o ‘administrador’ ?
WHERE (
(tuc.login = ‘[usr_login]’ AND ta.login = ‘[usr_login]’) or (’[usr_login]’ = ‘administrador’ )
)
Continua aparecendo apenas os registros do usuário logado, mesmo sendo administrador.
Tente simplificar a query e ir incrementando passo a passo, para identificar onde é o problema
Faz uma consulta em sua tabela de usuários, retornando se o mesmo é Administrador ou não
se for adm, você tira o where abaixo e se não for voê deixa.
WHERE tuc.login = '[usr_login]'
O erro aparentemente é no " OR (’[usr_login]’ = ‘administrador’ ) " pois até o “AND” ele faz tudo certo.
Faz uma consulta em sua tabela de usuários, retornando se o mesmo é Administrador ou não
se for adm, você tira o where abaixo e se não for voê deixa.
WHERE tuc.login = '[usr_login]'
Desculpe, mas eu não entendi o que deve ser feito, teria como dar um exemplo?
Como vc sabe se o usuário logado é administrador do sistema ?
Hum entendi, eu estou usando para testes um usuário que é o administrador e outro que não tem privilégios de administrador, porém os dois retornam apenas os seus registros, mas não entendi porque tirar o where, pois o usuário pode ser ou não administrador, então se tirar o where qualquer usuário pode acessar todos os registros.
WHERE ( tuc.login = '[usr_login]' or '[usr_login]' = 'administrador' )
isto aqui que eu coloquei e para o login com nome de administrador e não para um usuário com privilégios de administrador.
no login busque na BD o privilegio do usuario, e coloque em uma variavel global por exemplo [var_glo_is_admin] = 1 caso não for admin sete para [var_glo_is_admin] = 0;
e no WHERE deixe assim
WHERE ( tuc.login = '[usr_login]' or [var_glo_is_admin] = 1)
Desculpa a demora pra responder, mas não entendi direito eu tenho que colocar uma variável global no onvalidate do login aonde está o $usr_priv_admin ? Tem algum exemplo ?