· 7 years ago · Jun 03, 2018, 08:46 PM
1const mongoose = require('mongoose')
2
3const Schema = mongoose.Schema
4const userSchema = new Schema({
5 email: {type: String, required: [true, "Veuillez rentrer vote e-mail"], match: [/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/, "E-mail non valide"]},
6 password: String,
7 playercard: {
8 type : mongoose.Schema.Types.ObjectId,
9 ref: 'infoplayers'
10 }
11})
12
13module.exports = mongoose.model('user', userSchema, 'users')
14
15_________ _________ ________ ________ _________ _________ _________
16
17
18const express = require('express')
19const jwt = require('jsonwebtoken')
20const router = express.Router()
21const User = require('../models/user')
22const Player = require('../models/player')
23const request = require('request');
24const mongoose = require('mongoose')
25const champions = require('../champions')
26const db = "mongodb://userazuh:okokyt@ds137600.mlab.com:37600/seekplayersdb"
27
28mongoose.connect(db, err => {
29 if (err) {
30 console.log('Error!' + err);
31 } else {
32 console.log('Connected to mongodb');
33 }
34})
35
36function verifyToken(req, res, next) {
37 if (!req.headers.authorization) {
38 return res.status(401).send('Unautorized request')
39 }
40 let token = req.headers.authorization.split(' ')[1]
41 if (token === 'null') {
42 return res.status(401).send('Unautorized request')
43 }
44 let payload = jwt.verify(token, 'secretKey')
45 if (!payload) {
46 return res.status(401).send('Unautorized request')
47 }
48 req.userId = payload.subject
49 next()
50}
51
52router.get('/', (req, res) => {
53 res.send('From API route')
54});
55
56router.get('/champions', (req, res) => {
57 res.json({ champions });
58})
59
60router.post('/register', (req, res) => {
61 let userData = req.body
62 let user = new User(userData)
63 user.save((error, registeredUser) => {
64 if (error) {
65 res.status(400).json({message: "Your email is invalid"})
66 } else {
67 let payload = {
68 subject: registeredUser._id
69 }
70 let token = jwt.sign(payload, 'secretKey')
71 res.status(200).json({
72 token,
73 payload,
74 user: registeredUser
75 })
76 }
77 })
78})
79
80router.post('/login', (req, res) => {
81 let userData = req.body
82 User.findOne({
83 email: userData.email
84 }).populate('playercard').exec((error, user) => {
85 if (error) {
86 res.status(400).json({message: "Your email or password is invalid"})
87 } else {
88 if (!user) {
89 res.status(401).json({message: 'Invalid email'})
90 } else {
91 if (user.password !== userData.password) {
92 res.status(401).json({message: 'Invalid password'})
93 } else {
94 let payload = {
95 subject: user._id
96 }
97 let token = jwt.sign(payload, 'secretKey')
98 res.status(200).send({
99 token,
100 user
101 })
102 }
103 }
104 }
105 })
106})
107
108
109router.put('/account', (req, res) => {
110 let userData = req.body;
111 User.findOne({
112 _id: userData.id
113 }).exec((error, user) => {
114 if (error) {
115 res.status(401).json({message: 'User not found'})
116 } else {
117 user.email = userData.email;
118 user.password = userData.password;
119 user.save(function (err) {
120 if (err) {
121 return res.status(400).json({message: 'Invalid email'})
122 }
123 res.status(200).json({
124 message: 'Account updated'
125 })
126 })
127 }
128 })
129})
130
131router.put('/newuser', (req, res) => {
132 let newCardData = req.body;
133 Player.findOne({
134 creator: newCardData.creator
135 }, (err, player) => {
136 if (err) {
137 res.send(err);
138 } else {
139 player.pseudo = newCardData.pseudo;
140 player.rank = newCardData.rank;
141 player.server = newCardData.server;
142 player.mainchamp = newCardData.mainchamp;
143 player.role = newCardData.role;
144 player.save(function (error) {
145 if (error) {
146 res.send(error)
147 }
148 res.send({
149 message: 'Player updated'
150 })
151 })
152 }
153 })
154})
155
156
157router.delete('/account/:id', (req, res) => {
158 User.remove({
159 _id: req.params.id
160 }, function (err) {
161 if (err) {
162 console.log('error');
163 }
164 })
165})
166
167router.get('/players', (req, res) => {
168 Player.find(function (err, players) {
169 if (err) {
170 res.send(err)
171 }
172 res.json(players)
173 })
174})
175
176
177router.delete('/newuser/:id', (req, res) => {
178 let id = req.params.id;
179 Player.findOneAndRemove({
180 creator: id
181 }, function (err, player) {
182 if (err) {
183 res.send(err);
184 }
185 User.findOne({ playercard: player._id }, (err, user) => {
186 user.playercard = null;
187 user.save();
188 })
189 res.json({ success: true, message: 'Your card has been deleted' });
190 })
191})
192
193router.post('/newuser', (req, res) => {
194 let cardData = req.body
195 let player = new Player(cardData)
196 player.save((err, new_Player) => {
197 if (err) {
198 console.log(err);
199 } else {
200 User.findOne({
201 _id: cardData.creator
202 }, function (err, user) {
203 user.playercard = new_Player;
204 res.status(200).json({ user: user,
205 message: 'Your card has been created' })
206 user.save();
207 })
208 }
209 })
210})
211
212module.exports = router