Merge branch 'master' into feature/buscar-transporte

This commit is contained in:
Hugo Falcão
2022-06-20 02:13:05 -03:00
committed by GitHub
17 changed files with 1533 additions and 395 deletions

17
src/routes/cars.routes.ts Normal file
View File

@@ -0,0 +1,17 @@
import { Router } from 'express';
import ensureAuthenticated from '../middlewares/ensureAuthenticated';
import GetCarModelsService from '../services/GetCarModelsService';
const carsRouter = Router();
carsRouter.get('/list', ensureAuthenticated, async (request, response) => {
const getCarModelsService = new GetCarModelsService();
const carModels = await getCarModelsService.execute();
return response.json({ data: carModels });
});
export default carsRouter;

View File

@@ -4,6 +4,7 @@ import searchRoutes from './search.routes';
import sessionsRouter from './sessions.routes';
import transportesRouter from './transportes.routes';
import usersRouter from './users.routes';
import carsRouter from './cars.routes';
const routes = Router();
@@ -11,5 +12,6 @@ routes.use('/users', usersRouter);
routes.use('/sessions', sessionsRouter);
routes.use('/search', searchRoutes);
routes.use('/transportes', transportesRouter);
routes.use('/cars', carsRouter);
export default routes;

View File

@@ -1,9 +1,19 @@
import { Router } from 'express';
import { sign, verify } from 'jsonwebtoken';
import authConfig from '../config/auth';
import AppError from '../errors/AppError';
import AuthenticateUserService from '../services/AuthenticateUserService';
const sessionsRouter = Router();
interface TokenPayload {
iat: number;
exp: number;
sub: string;
}
// login pode ser: email ou username
sessionsRouter.post('/', async (request, response) => {
const { login, password } = request.body;
@@ -15,7 +25,24 @@ sessionsRouter.post('/', async (request, response) => {
password,
});
return response.json({ message: 'User logged in sucessfully', token: token });
return response.json({ message: 'Usuário autenticado com sucesso!', token: token });
});
sessionsRouter.post('/refresh', async(request, response) => {
const { token } = request.body;
let sub = null;
let decoded = null;
try {
decoded = verify(token, authConfig.jwt.secret);
} catch (error) {
throw new AppError('Token de autenticação inválido.', 401);
}
sub = decoded as TokenPayload;
return response.json({ "status": "success", "userId": sub.sub });
})
export default sessionsRouter;

View File

@@ -50,27 +50,38 @@ usersRouter.get('/:id', ensureAuthenticated, async (request, response) => {
const user = await findUser.execute(id);
// converting ISO 8601 date to normal date
let birth_date = new Date(user.birth_date)
let year = birth_date.getFullYear()
let month = birth_date.getMonth()+1
let date = birth_date.getDate()
const finalDate = `${date}/${month}/${year}`
const userWithoutPassword = {
id_user: user.id_user,
name: user.name,
lastname: user.lastname,
email: user.email,
birth_date: user.birth_date,
birth_date: finalDate,
avatar_image: user.avatar_image,
bio: user.bio,
created_at: user.created_at,
updated_at: user.updated_at,
// created_at: user.created_at,
// updated_at: user.updated_at,
};
return response.json({ data: userWithoutPassword });
});
usersRouter.post('/', async (request, response) => {
const { name, email, birth_date, password } = request.body;
const { name, lastname, email, birth_date, password } = request.body;
const createUser = new CreateUserService();
const user = await createUser.execute({
name,
lastname,
email,
birth_date,
password,
@@ -87,13 +98,14 @@ usersRouter.post('/', async (request, response) => {
});
usersRouter.patch('/edit', ensureAuthenticated, async (request, response) => {
const { name, username, bio, email, birth_date } = request.body;
const { name, lastname, username, bio, email, birth_date } = request.body;
const updateUserService = new UpdateUserService();
await updateUserService.execute({
id_user: request.user.id_user,
name,
lastname,
username,
bio,
email,