Eu fiz uma coisa parecida, mas depois que o usuário se loga no sistema.
No meu caso, eu tenho uma tabela para o cadastro de clientes, uma tabela para o cadastro de usuários e outra para referenciar o usuário ao cliente.
Na tabela de clientes, eu tenho um campo com o nome do arquivo de logo do cliente. O arquivo físico eu armazenei na pasta “/_lib/img” do servidor do Scriptcase.
No meu caso, cada grupo de usuário usa um menu específico e o acesso está definido no módulo de segurança padrão do Scriptcase.
Para o menu, eu criei um novo Template HTML com o código abaixo:
body {
background-color:#004D82;
/*background-image:url('../_lib/img/grp__NM__bgTickets.png');*/
padding-top:15px;
}
#lin1_col1 { margin-left:9px; margin-top:7px; width:40%; height:27px; float:left; overflow:hidden;}
#lin1_col2 { margin-left:0px; margin-top:7px; width:40%; height:35px; float:left; overflow:hidden;}
#lin1_col3 { margin-left:0px; margin-top:7px; width:10%; height:35px; float:right; overflow:hidden;}
#lin2_col1 { margin-left:9px; margin-top:0px; width:40%; height:15px; float:left; overflow:hidden;}
{LIN1_COL1}
{LIN1_COL2}
{LIN1_COL3}
{LIN2_COL1}
No Menu, eu associo esse template e no parâmetro “LIN1_COL2”, eu selecionei “valor” e coloquei a variiável “[logo]”.
Na tela de login, no evento “onValidate”, coloquei o código abaixo:
$slogin = sc_sql_injection({login});
$spswd = sc_sql_injection(md5({pswd}));
$sql = “SELECT
USER_ID,
PRIV_ADMIN,
ACTIVE,
USER_NAME,
EMAIL
FROM USERS
WHERE LOGIN_NAME = $slogin
AND PSWD = “.$spswd.””;
sc_lookup(rs, $sql);
if(count({rs}) == 0)
{
sc_log_add(‘login Fail’, {lang_login_fail} . {login});
sc_error_message({lang_error_login});
sc_error_exit();
}
else if({rs[0][2]} == ‘Y’)
{
$usr_id = {rs[0][0]};
$usr_login = {login};
$usr_priv_admin = ({rs[0][1]} == ‘Y’) ? TRUE : FALSE;
$usr_name = {rs[0][3]};
$usr_email = {rs[0][4]};
sc_set_global($usr_id);
sc_set_global($usr_login);
sc_set_global($usr_priv_admin);
sc_set_global($usr_name);
sc_set_global($usr_email);
/* Pesquisa o logo - somente para usuarios do grupo de Clientes */
$logo = "";
$sql = "SELECT logo_name
FROM customers
WHERE customer_id IN (SELECT customer_id
FROM user_customers uc
, users u
WHERE uc.user_id = u.user_id
AND u.user_type_id = 4
AND uc.user_id = " . $usr_id . " ) ";
sc_lookup(rs,$sql);
if(count({rs}) == 0)
{
$logo = "";
sc_set_global($logo);
}
else
{
$img = {rs}[0][0];
$logo = "<img border=0 src='../_lib/img/".$img."'>";
sc_set_global($logo);
}
/* Fim pesquisa logo*/
}
else
{
sc_error_message({lang_error_not_active});
sc_error_exit();
}
O que o sistema vai fazer:
- Após o login válido do usuário, a query irá pesquisar o nome do arquivo de logo do cliente conforme o cadastro;
- Depois associa essa informação à variável “$img”;
- Em seguida, associo a string “”, com o nome do arquivo à variável “$logo”;
- Set como variável global;
Por fim, no evento “onValidateSuccess” da tela de login, faço uma query para pesquisar o menu que será acessado pelo usuário, conforme meus critérios de segurança e depois dou o comando “sc_redir($l_sMenu);”, onde “$l_sMenu” contém o nome do menu que deverá ser aberto.
Uma vez que declarei a variável “logo” como global, o menu carregará a imagem que defini.
Não sei se é a melhor forma de fazer isso, mas até o momento, isto funciona muito bem aqui no sistema.
Espero ter colaborado.
Michel