Skip to content

Commit

Permalink
Merge pull request #3 from MatheusCoxxxta/development
Browse files Browse the repository at this point in the history
Development -> deploy heroku
MatheusCoxxxta authored May 26, 2020
2 parents faad823 + d5e1068 commit 68b788c
Showing 10 changed files with 365 additions and 10 deletions.
116 changes: 116 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -12,10 +12,14 @@
"author": "",
"license": "ISC",
"dependencies": {
"bcryptjs": "^2.4.3",
"cors": "^2.8.5",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"mongoose": "^5.9.12"
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.9.12",
"mongoose-paginate": "^5.0.3",
"require-dir": "^1.2.0"
},
"devDependencies": {
"nodemon": "^2.0.3"
22 changes: 13 additions & 9 deletions server.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,26 @@
const express = require('express')
const mongoose = require('mongoose');
require('dotenv').config()

const app = express()
const routes = require('./src/Routes')
const express = require('express');
const mongoose = require('mongoose');
const requireDir = require('require-dir');
const cors = require('cors');

require('dotenv').config()

app.use(cors());

const app = express()
app.use(express.json())
app.use(cors())

mongoose.connect("mongodb+srv://iPet:iPet1234@ipet-s4u0w.mongodb.net/test?retryWrites=true&w=majority", {
useNewUrlParser: true,
useUnifiedTopology: true
})
});
mongoose.set('useFindAndModify', false);

requireDir('./src/models')


app.use('/api', require('./src/Routes'))

app.use('/api', routes)

app.listen(process.env.PORT || 3001)

59 changes: 59 additions & 0 deletions src/Controllers/Auth/Auth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
const express = require('express');
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');

const User = mongoose.model('User');

const authConfig = require('../../config/auth');
const crypto = require('crypto');

function generateToken(params = {}) {
return jwt.sign(params, authConfig.secret, {
expiresIn: 86400
})
}


module.exports = {
async register (req, res) {
const { email } = req.body;

try {
if(await User.findOne({ email })) {
return res.status(400).send({ message: 'User already exists' })
}
const user = await User.create(req.body)
user.password = undefined

return res.send(['Success', {
user,
token: generateToken({ id: user.id })
}])
} catch (error) {
return res.status(400).send({ message: error });
}
},

async auth (req, res) {
const { email, password } = req.body;

try {
const user = await await User.findOne({ email }).select('+password')

if(!user) return res.status(400).send({ message: 'User not found'})

if(!await bcrypt.compare(password, user.password)) return res.status(400).send({ message: 'Invalid password'})

user.password = undefined

return res.send({
userId: user.id,
token: generateToken({ id: user.id})
})
} catch (error) {
return res.send(error)
}

}
}
73 changes: 73 additions & 0 deletions src/Controllers/PetController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
const mongoose = require('mongoose')

const Pet = mongoose.model('Pet')


module.exports = {
async index (req, res) {
const pets = await Pet.find().sort({ 'createdAt': -1 })

return res.json(pets)
},

async show (req, res) {
const pet = await Pet.findById(req.params.id)

return res.json(pet)
},

async store (req, res) {
const { name, type, color, age, born, breed, castrationDate, owner, ownerId } = req.body;

try {
const pet = await Pet.create({
name,
type,
color,
age,
born,
breed,
castrationDate,
owner,
ownerId
})
return res.json(pet)
} catch (error) {
return res.json(error)
}
},

async update (req, res) {
const { name, type, color, age, born, breed, castrationDate, owner, ownerId } = req.body;

try {
const pet = await Pet.findByIdAndUpdate(req.params.id, {
name,
type,
color,
age,
born,
breed,
castrationDate,
owner,
ownerId
}, { new: true })

return res.json(pet)
} catch (error) {
return res.json(error)
}

},

async destroy (req, res) {
try {
const pet = await Pet.findByIdAndRemove(req.params.id)

return res.json({ message: "Success" })
} catch (error) {
return res.json(error)
}

}
}
Empty file removed src/Models/Pet.js
Empty file.
14 changes: 14 additions & 0 deletions src/Routes/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
const express = require('express')
const routes = express.Router()

const AuthController = require('../Controllers/Auth/Auth');
const PetController = require('../Controllers/PetController');

routes.get('/', async(req, res) => {
res.send({ 'message': 'Bem vindo a API do iPet'})
})

routes.post('/auth/register', AuthController.register)
routes.post('/auth/login', AuthController.auth)



routes.get('/pet', PetController.index)
routes.get('/pet/show/:id', PetController.show)
routes.post('/pet/create', PetController.store)
routes.put('/pet/update/:id', PetController.update)
routes.delete('/pet/destroy/:id', PetController.destroy)

module.exports = routes
3 changes: 3 additions & 0 deletions src/config/auth.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"secret": "99698aea920c3886528f05fb49c12385"
}
Loading
Oops, something went wrong.

0 comments on commit 68b788c

Please sign in to comment.