Giter Site home page Giter Site logo

rayjunqueira / api_auth_postgresql_jwt_typeorm_express_typescript Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 93 KB

Uma API de autenticação utilizando TypeORM Postgresql como banco de dados,Nodemailer, JWT, Bcrypt, e entre outras tecnologias.

TypeScript 100.00%

api_auth_postgresql_jwt_typeorm_express_typescript's Introduction

Projeto Autenticação Backend completo Express & Typescript

Auth

Sobre o Projeto

Projeto de autenticação backend completo desenvolvido em Node/Express e Typescript. No projeto é incluído CRUD completo de usuário, controllers de "Esqueci a senha" e "Ativar conta" através de envio de JWT Token via e-mail através de da biblioteca nodemailer.

Tecnologias usadas

◼ Nodejs

◼ Express

◼ TypeORM

◼ Postgresql

◼ Nodemailer

◼ JWT

◼ Nodemon

◼ Dotenv

◼ Cors

◼ Body-Parser

Configurar Banco de Dados TypeORM

import { DataSource } from "typeorm"
import dotenv from 'dotenv';

dotenv.config();

const port = process.env.DATABASE_PORT as number | undefined

export const AppDataSource = new DataSource({
    type: "postgres",
    host: process.env.DATABASE_HOST,
    port: port,
    username: process.env.DATABASE_USERNAME,
    password: process.env.DATABASE_PASSWORD,
    database: process.env.DATABASE_NAME,
    synchronize: true,

})
DATABASE_HOST = Host 
DATABASE_USERNAME = Usuário de seu banco de dados
DATABASE_PASSWORD = Senha de seu banco de dados
DATABASE_NAME = Nome do seu banco de dados

Pasta de diretório de migrations e entidades.

entities: [`${__dirname}/../entities/*.{ts,js}`],
migrations: [`${__dirname}/migrations/*.{ts,js}`],

Criando migrations

1 - Crie uma nova entidade

@Entity('example')
export class Example {
    @PrimaryGeneratedColumn('uuid')
    id: string;

    @Column()
    test: string;
    }
}

2 - Gerar migration

npm run migration:generate

3 - Rodar migration

 npm run migration:run

Configurar Sistema de envio de e-mail via Nodemailer

import nodemailer from 'nodemailer';

type EmailType = {
    from: string;
    to: string;
    subject: string;
    text: string;
    html: string;
}

const port = process.env.EMAIL_PORT as number | undefined;

const sendEmail = async ({ from, to, subject, text, html }: EmailType ) => {
    try {
        const transport = nodemailer.createTransport({
            host: process.env.EMAIL_HOST as string,
            port: port,
            auth: {
              user: process.env.EMAIL_AUTH_USER as string,
              pass: process.env.EMAIL_AUTH_PASS as string,
            }
        });

        await transport.sendMail({
            from: from,
            to: to,
            subject: subject,
            text: text,
            html: html,
        })
    
        console.log('Email send succesfully')
        
    } catch (err) {
        console.log(err);
    }
}

export default sendEmail;
EMAIL_PORT = Porta de e-mail
EMAIL_HOST = Hospedagem E-mail
EMAIL_AUTH_USER = Usuário E-mail
EMAIL_AUTH_PASS = Senha E-mail

Rodando aplicação na sua máquina

1 - Clone o repositório

git clone https://github.com/Routfin/API_Auth_PostgreSQL_Jwt_TypeORM_Express_Typescript.git

2 - Instalar os pacotes NPM

npm install 

3 - Rodar aplicação em nodemon/localhost

npm run dev

Ativar usuário

Ao criar um novo usuário é necessário acessar a rota post /activate para ativar usuário.

email: *[email protected]*
token: *token de ativação enviado por email*

Contribua com o projeto

1 - Crie um fork do projeto.

2 - git remote add origin urlDoRepositórioDoProjeto.

3 - Faça commits para aprimorar o projeto.

4 - Faça push dessa branch para seu projeto no GitHub.

5 - Abra um Pull Request

api_auth_postgresql_jwt_typeorm_express_typescript's People

Contributors

rayjunqueira avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.