Skip to content

Um licenciador para Bots (Telegram e IQ) pessoais, gerenciando vendedores e clientes. Um projeto que nasceu Python-HTML, depois Node, para por fim, Typescript.

Notifications You must be signed in to change notification settings

JDaniloC/Licenciador

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ADM

💻 O que é o projeto?

Sistema de gerenciamento de vendedores e clientes. Um ADM pode cadastrar e remover vendedores, escolhendo quais 'softwares' o vendedor poderá revender (ocultando ou não dos demais softwares). Em versões anteriores, o administrador também pode escolher o número de licenças que cada vendedor terá.

Os vendedores por sua vez, criar, renovar e remover licenças dos softwares outorgados pelo administrador. Em versões anteriores, essas licenças eram limitadas no máximo de 31 dias.

🚀 Tecnologias

O projeto nasceu inicialmente em HTML/CSS/JS. Depois passou a ser desenvolvido em NodeJS utilizando Express. Mas na versão atual é desenvolvido em NextJS com typescript.

O backend é feito com a API serverless do próprio NextJS, e o banco de dados é o MongoDB.

Como rodar o projeto?

Clone o projeto em seu computador, crie no frontend um arquivo .env com a conexão do seu MongoDB para a conexão, e a palavra secreta do token JWT:

MONGODB_URI = mongodb+srv://
SECRET = p"´@na{>

o MONGODB_URI é obtido através do MongoDB na opção de conectar ao cluster criado, enquanto o SECRET é criado pelo próprio desenvolvedor, conquanto que seja forte. Por fim, inicie o projeto:

cd frontend
yarn install
yarn dev

Assim que o processo terminar, abra no seu navegador a página localhost:3000.

Collections no MongoDB e dados

Em teoria as collections serão criadas automaticamente pelo MongoDB, mas ainda assim, você pode verificar as collections que serão criadas na pasta de models, que são:

Importante É necessário registrar o primeiro ADM no sistema o qual será um documento na collection de sellers com os seguintes campos:

{
  "_id": ObjectId('...'), // id gerado automaticamente
  "email": "EMAIL_DO_ADMINISTRADOR", // email do ADM
  "password": "SENHA_CRIPTOGRAFADA", // senha criptografada em MD5
  "type": "admin" // Para ser identificado como ADM
}

É importante que a senha do ADM seja criptografada em MD5, pois o sistema utiliza essa criptografia para autenticar os usuários.

API serverless

Rotas sobre os BOTS

  • GET /api/bots/

    Devolve a lista de todos os bot com suas informações.


GET Query:

{
  "name": "",      // Nome do bot
}

  • POST /api/bots/

    Cria um novo bot no licenciador.

POST Body:

{
  "name": "",       // Tag única do bot
  "title": "",      // Nome exibido
  "imageURL": "",   // URL da imagem exibida
  "extraInfo": {},  // Informações adicionais
}

Devolve o schema do bot criado.

Admin role required.


  • DELETE /api/bots/

    Deleta um bot no licenciador.

DELETE Body:

{
  "name": "", // Tag única do bot
}

Devolve o schema do bot deletado.

Admin role required.


Rotas sobre os CLIENTS

  • GET /api/clients/

    Devolve todos as informações principais de todos os clientes de um determinado bot e vendedor.

GET Query:

{
  "email": "",      // E-mail do vendedor
  "botName": "",    // Tag única do bot
  "isSeller": true, // Acessa este método
}

Devolve uma lista no formato:

[
  {
    "email": "",    // Email do cliente
    "updateAt": "", // Data da última atualização
    "license": 0,   // Número de dias da licença
  }
]

Seller role required.


  • GET /api/clients/

    Recebe a quantidade de segundos restantes da licença de um determinado bot. A primeira senha chamada será a senha que ficará salva nas informações do cliente, bloqueando as próximas requisições se o cliente tentar outra senha (isso foi feito para o bot catalogador).

GET Query:

{
  "email": "",        // E-mail do cliente
  "botName": "",      // Tag única do bot
  "password": "",     // Senha do cliente
  "isSeller": false,  // Acessa este método
}

Devolve o número de dias e uma mensagem, no formato:

{
  "message": "",   // Mensagem dos dias de licença
  "timestamp": "", // Segundos restantes da licenças
}

  • POST /api/clients/

    Cria um novo cliente se não existir, ou adiciona uma nova licença à um cliente existente e atualiza a data de atualização.

POST Body:

{
  "botName": "",      // Tag única do bot
  "sellerEmail": "",  // E-mail do vendedor
  "clientEmail": "",  // E-mail do cliente
}

Devolve as informações do novo cliente:

{
  "email": "",    // E-mail do cliente
  "license": 0,   // Zero dias de licença (acabou de ser criada)
  "updateAt": "", // Data da última atualização
}

Seller role required.


  • DELETE /api/clients/

    Deleta uma licença ou um cliente, se já não houver licenças para deletar. Se a licença deletada estiver abaixo dos 7 dias de garantia, é devolvido uma licença ao vendedor.

DELETE Query:

{
  "email": "",    // E-mail do cliente
  "seller": "",   // E-mail do vendedor
  "botName": "",  // Tag única do bot
}

Devolve um schema do cliente deletado.

Seller role required.


Rotas sobre o HISTORY

  • GET /api/history/

    Devolve uma lista de eventos.

Admin role required.


  • DELETE /api/history/

    Deleta todos os eventos de um determinado vendedor/data.

DELETE Query:

{
  "when": "",    // Data máxima dos eventos
  "email": "",   // E-mail do vendedor
}

Admin role required.


Rotas sobre as LICENSES

  • POST /api/licenses/

    Adiciona uma nova licença de um determinado bot (já cadastrado) na lista de bots do cliente. Atualizando o número de licenças ofertadas pelo vendedor e atualizando a data de atualização.

POST Body:

{
  "botName": "",      // Nome do bot
  "sellerEmail": "",  // E-mail do vendedor
  "clientEmail": "",  // E-mail do cliente
  "licenseDays": "",  // Dias da licença
}

Devolve as seguintes informações:

{
  "email": "",    // E-mail do cliente
  "license": 0,   // Número de dias da licença
  "licenses": 0,  // Licenças outorgadas pelo vendedor
  "updateAt": "", // Data desta atualização
}

Seller role required.


Rotas sobre o LOGIN

  • GET /api/login/

    Verifica a autenticidade do token de usuário.

GET Headers:

{
  "authorization": "",  // Token
}

Devolve as seguintes informações:

{
  "email": "",      // E-mail do vendedor/admin
  "auth": false,    // Devolve se o token é válido
  "message": "",    // Mensagem de erro/sucesso
  "expiration": 0,  // Segundos restantes do token
}

Admin/Seller role required.


  • POST /api/login/

    Devolve o token de autenticação de um vendedor/admin. Se ainda não foi cadastrado uma senha, então é a senha dada será salva. O token dura 1h.

POST Body:

{
  "email": "",     // E-mail do vendedor/admin
  "password": "",  // Senha do vendedor/admin
}

Devolve as informações do usuário e o token.


Rotas sobre os SELLERS

  • GET /api/sellers/

    Devolve uma lista com todos os vendedores.

Admin role required.


  • POST /api/sellers/

    Cria ou atualiza um vendedor, modificando os bots permitidos, e se ele pode ver os demais bots não permitidos.

POST Body:

{
  "creatorEmail": "", // E-mail do admin
  "sellerEmail": "",  // E-mail do vendedor
  "botList": [],      // Lista de bots permitidos
  "showBots": false,  // Permissão para ver os outros bots
}

Devolve as informações do vendedor.

Admin role required.


  • DELETE /api/sellers/

    Deleta um vendedor.

DELETE Query:

{
  "email": "",        // E-mail do vendedor
  "creatorEmail": "", // E-mail do admin
}

Devolve as informações do vendedor deletado.

Admin role required.


Rotas sobre os Users

GET Query:

{
  "email": "",   // E-mail do cliente
}

  • POST /api/users/

    Adiciona uma nova operação ao usuário, ou cria um novo usuário se ainda não existir. Se esta nova operação fizer ultrapassar o máximo de operações (10), então é deletado a operação mais antiga.

POST Body:

{
  "email": "",          // E-mail do cliente
  "infos": "",          // Informações da operação
  "result": "",         // Resultado da operação
  "amount": 0,          // Valor da operação
  "botName": "",        // Tag única do bot
  "account": "",        // Conta DEMO/REAL
  "initialBalance": 0,  // Saldo inicial
  "additionalInfo": "", // Informações adicionais
}

Devolve as informações do usuário.

  • DELETE /api/users/

    Deleta um usuário.

DELETE Query:

{
  "email": "",  // E-mail do usuário
}

Devolve as informações do usuário deletado.


Schemas

Bot Schema
{
  name: String,
  title: String,
  imageURL: String,
  extraInfo: Object
}
License Schema
{
  botName: String,
  timestamp: Number
  updateTime: Number,
}
Client Schema
{
  email: String,
  seller: String,
  license: Array[License],
  updateTime: Date,
  password: String
}

License Schema

History Schema
{
  when: Date,
  who: String,
  what: String,
}
Sellers Schema
{
  email: String,
  type: String,
  password: String,
  licenses: Number, 
  showBots: Boolean, 
  botList: Array[String], 
}
Trade Schema
{
  botTitle: String,
  botName: String,
  account: String,
  result: String,
  amount: Number,
  infos: String,
  date: String,
}
User License Schema
{
  botImg: String,
  botName: String,
  botTitle: String,
  remaining: String
}
Users Schema
{
  email: String,
  createdAt: Date,
  totalYield: Number,
  trades: Array[Trade],
  initialBalance: Number,
  additionalInfo: Object,
}

Trade Schema

Users View Schema
{
  email: String,
  createdAt: String,
  totalYield: Number,
  trades: Array[Trade],
  initialBalance: Number,
  additionalInfo: Object,
  licenses: Array[UserLicense],
}

User License Schema

About

Um licenciador para Bots (Telegram e IQ) pessoais, gerenciando vendedores e clientes. Um projeto que nasceu Python-HTML, depois Node, para por fim, Typescript.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published