Autenticação
Cliente
O cliente possui um componente que insere um elemento no canto superior direito da tela informando o usuário logado e permite que ele realizar logout.
Quando o componente redireciona o cliente para a pagina de autenticação, ele informa a url da página anterior para ser redirecionado de volta quando o usuário logar.
Ao realizar a autenticação pelo github, o cliente será redirecionado para a pagina /auth/callback (informada pelo componente ao github) com a query code
que será utilizado pela api para solicitar o token.
O cliente ao obter acesso ao code
realiza uma chamada a api (/api/requestToken) que irá obter um token e o id do usuário através da api do github e definirá um cookie httpOnly no cliente com o token.
Também será definido um cookie acessível pelo js do navegador com o id do cliente para que a aplicação saiba que está logada.
O componente irá periodicamente revalidar o token através da api (/api/checkToken) caso o token seja inválido os cookies serão removidos.
Servidor
A api sempre que obter um novo token, ela o-armazena no banco de dados na tabela auth_token(token, id_github) para ser utilizado pelo servidor de imagens e pelo checkToken. Essa tabela pode ser utilizada posteriormente para revogar tokens antigos.