Mais um pequeno passo: a autenticação. Só o básico.
Até agora eu deixei o arquivo do grid/form com a extensão HTML para mostrar que é possÃvel separar o HTML do código Harbour.
Isso é bom porque abre uma possibilidade para que você possa :
(1) tornar o seu código mais claro e fácil de manter.
(2) firmar uma parceria com um profissional da área de design ou até mesmo contratar alguém para tratar da parte visual.
*
Só um pequeno parênteses :
*
Hoje em dia tem muito curso técnico profissionalizante que forma jovens com esse conhecimento.
Muitas escolas estaduais ou institutos federais incluem um curso de formação que pode ser de até 3 anos, e com estágio supervisionado.
É mão-de-obra barata, embora não seja experiente.
Se você for seguir esse caminho, procure saber se o jovem gosta mesmo da área, pois muitos foram direcionados para a informática
muito jovens e por insistência dos pais, que vêem essa área como de fácil empregabilidade e retorno financeiro.
Geralmente os cursos profissionalizantes dos institutos federais e escolas profissionalizantes são bem genéricos, o aluno aprende redes,
hardware, programação e um pouco de design. Durante uma entrevista de seleção, você pode perguntar qual a área que ele mais se identifica.
Se você é empresário, pense nessa parceria.
Você não vai precisar ser um expert em Javascript, apenas precisa entender um pouco como o modharbour interage com o html (ajax + json).
*
Fim do parênteses.
*
O nosso projeto vai continuar nessa mesma linha, mas a autenticação exige que a página onde fica o HTML tenha que realizar um tipo de processamento
no servidor:
(1) A página vai verificar se o usuário logado tem direitos de acesso.
(2) Se o usuário não tiver manda para uma página de login
(3) Se tiver exibe o conteúdo
Pelo que observei até agora, isso pode ser feito apenas através de cookies. Você já deve ter ouvido falar das sessões, principalmente se você já
desenvolveu rotinas de autenticação em PHP, mas as sessões são, na verdade, cookies. O seu navegador só reconhece cookies, a implementação de sessões
é feita só no lado do servidor.
Conclusão: vou renomear index.html para index.prg antes de mais nada.
Nós já vimos isso no inÃcio. Basta fazer assim :
function main
TEMPLATE
Sua página HTML
ENDTEXT
return nil
O código de autenticação vai ficar no inÃcio.
function main
Aqui você verifica...
TEMPLATE
Sua página HTML
ENDTEXT
return nil
Se você já sabe o que é um cookie pode pular essa parte, se você não sabe, vou tentar explicar de uma forma bem simples.
Um cookie é simplesmente um arquivo que o seu aplicativo envia, através do servidor, para o seu navegador. Esse arquivo é um
arquivo simples, em modo texto, que contem um conjunto de pares do tipo chave=valor.
Por exemplo, você começa a pesquisar sobre "Notebook" e de repente, como se fosse uma mágica, você passa a
receber anúncios desse tipo de produto. Essa propaganda direcionada pode durar vários dias e é feita através de cookies.
https://support.google.com/chrome/answer/95647Trabalhar com cookies exige um cuidado especial pois eles podem ser lidos por terceiros e podem conter informações valiosas.
Mas vamos deixar as coisas simples e abstrair essa questão.
P. Como o modharbour cria os cookies ?
R. Na prática o modharbour apenas envia comandos para o servidor. A tecnologia de criação/envio/recebimento de cookies é feita pelo servidor http.
O processo é o mesmo para PHP, Javascript, Python, ASP, Java, etc. Isso faz parte do protocolo HTTP, não é de uma linguagem especÃfica, felizmente.
P. Como faço para criar um cookie ?
R. Envie uma ordem para o servidor http através do comando setcookie.
P. Como faço para ler o cookie ?
R. Use o comando getcookie
Antes de prosseguirmos vamos esquecer um pouco do index.html (ou index.prg) e
vamos começar com calma.
Crie o arquivo protegido.prg com o seguinte conteúdo :
function main
local hCookie := GetCookies()
?? "Cookies : " , hb_valtoexp( hCookie )
return nil
Acesse esse arquivo pelo navegador.
O conteúdo exibido será :
Cookies : {""=>""}
A função GetCookies() lê todos os cookies do servidor e os exibe em forma de hash. Hashs são ideais porque também são chave -> valor.
Agora crie o arquivo autentica.prg com o seguinte conteúdo :
function main
setCookie( "login" , "joao" )
?? "Criando um cookie"
return nil
Agora, execute de novo o protegido.prg
Veja que temos um valor agora:
Cookies : {"login"=>"joao"}
Basicamente é isso.
Como pensar em um sistema de login ?
1. Quando o usuário fizer o login, salve um cookie com o seu ID, por exemplo. Use a função setcookie().
2. Todas as páginas que você quer proteger devem ter, no seu inÃcio, uma função GetCookie(). Você procurar o
ID, gravado anteriormente, com o GetCookie().
Você pode criar rotinas de verificação e liberar alguns recursos da página de acordo com o ID do usuário, por exemplo. Apenas uma ideia.
Uma curiosidade : para ver o cookie desse exemplo gravado no navegador Chrome digite na barra de endereços : chrome://settings/cookies/detail?site=localhost
Para excluir o cookie faça assim :
function main
setCookie( "login" , NIL , 0 )
?? "Excluindo um cookie"
return nil
O terceiro parâmetro é um valor, em segundos, que determina o tempo de vida do cookie. Se você colocar zero você vai "criar" um cookie com tempo
de vida de zero segundos.