MÓDULO 02 - Culture Power: Neste projeto, estou desenvolvendo uma aplicação de gamificação para uma empresa "Exemplo". Este trabalho concentra-se integralmente no BackEnd, aplicando de forma prática os conceitos estudados ao longo deste módulo 02.
Admin {
name: string,
email: string,
password: string
};
Product {
name: string,
value: number,
amount: number,
description: string,
photo: string
};
User {
name: string,
email: string,
password: string,
jewelsAmount: number,
products: Product[],
favoriteProducts: Product[],
photo: string
};
- Cadastro de Usuário
- Informações necessárias: nome, e-mail, senha, foto.
- Não permitir o cadastro se um usuário com o mesmo e-mail já existir.
- Criptografar a senha antes de armazenar no banco de dados.
- Login de Usuário
- Informações necessárias: e-mail e senha.
- Não gerar um token se não existir um usuário com o e-mail fornecido.
- Não gerar um token se a senha enviada não for compatível com a do banco de dados.
- Gerar um token e retornar se as credenciais estiverem corretas.
- Login de Admin
- Informações necessárias: e-mail e senha
- Não gerar um token se não existir um admin com o e-mail fornecido
- Não gerar um token se a senha enviada não for compatível com a do banco de dados
- Gerar um token e retornar se as credenciais estiverem corretas
- Visualizar Usuário Logado (ROTA PRIVADA)
- Retornar os dados do usuário logado
- Cadastro de Produto (ROTA PRIVADA - ADMIN)
- Informações necessárias: nome, valor, quantidade, descrição e foto
- Não permitir o envio se o usuário que está executando a ação não for um administrador
- Edição de Produto (ROTA PRIVADA - ADMIN)
- Informações necessárias: nome, valor, quantidade, descrição e foto
- Não permitir o envio se o usuário que está executando a ação não for um administrador
- Listar Todos os Produtos (ROTA PRIVADA)
- Deve listar os produtos com quantidade maior que 0
- Buscar Produto por ID (ROTA PRIVADA)
- Deve ser informado: id
- Deve retornar o produto caso encontrado
- Enviar Joia para Usuário (ROTA PRIVADA - ADMIN)
- Informações necessárias: quantidade de joia, ID do usuário
- Não permitir o envio se o usuário não existirem
- Não permitir o envio se o usuário que está executando a ação não for um administrador
- Resgatar Produto (ROTA PRIVADA)
- Informações necessárias: ID do produto, ID do usuário
- Não permitir o resgate se o produto ou o usuário não existirem
- Não permitir o resgate se o usuário não tiver joias suficientes
- Decrementar a quantidade de joias pelo valor do produto
- Decrementar a quantidade do produto