Este monorepo apresenta uma extensão de navegador para Firefox e Chromium e uma API que permitem o compartilhamento de uma mesma conta e os acessos simultâneos no GranCursosOnline, sem expor a senha.
Um acesso simultâneo no GranCursos é detectado quando há a ocorrência de múltiplas ações de login, gerando múltiplos cookies de sessão. Portanto, ele não será detectado quando um único cookie for distribuído entre múltiplos dispositivos. Este projeto inclui uma API que realiza esse único login, e uma extensão para distribuir esse único cookie entre os múltiplos usuários.
Os recursos utilizados aqui são o Firebase (banco de dados e autenticação) e o netlify (hospedar a API), ambos gratuitos.
Siga o guia abaixo para configurar o projeto no Firebase. Após isso, consulte os guias para a configuração e uso da API e da extensão.
Instale as dependências usando pnpm install
a partir da raiz do projeto.
O Firebase será utilizado para:
- autenticar os usuários da extensão anonimamente;
- armazenar o cookie de sessão da conta do GranCursos;
- gerenciar manualmente a permissão de acesso de cada usuário ao cookie.
-
Crie um novo projeto pelo console de gerenciamento.
-
Crie um banco de dados Firestore.
-
Configure as regras de segurança para o seguinte:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
match /users/{uid} {
allow read, write: if request.auth != null && uid == request.auth.uid;
}
}
}
- Nas configurações do projeto, crie um novo app web e copie o valor de
firebaseConfig
, e transforme em json:
{
"apiKey": "...",
"authDomain": "...",
"projectId": "...",
"storageBucket": "...",
"messagingSenderId": "...",
"appId": "..."
}
- Configure a variável de ambiente
VITE_FIREBASE_CONFIG
, criando o arquivoapps/addon/.env
:
VITE_API_URL="..." # definido mais a frente
VITE_FIREBASE_CONFIG='{"apiKey": "...","authDomain": "...","projectId": "...","storageBucket": "...","messagingSenderId": "...","appId": "..."}'
É preciso habilitar o login anônimo como um método de login.