From d04456f154875c0d27ceb37c2d639a7798f478f8 Mon Sep 17 00:00:00 2001 From: rageNami Date: Wed, 3 May 2017 12:06:08 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BD=BF=E7=94=A8jwt=E9=A9=97=E8=AD=89?= =?UTF-8?q?=E7=9A=84function=E7=8D=A8=E7=AB=8B=E5=87=BA=E4=BE=86=E5=AF=AB?= =?UTF-8?q?=E5=9C=A8policies/jwtAuth.js=EF=BC=8C=E5=9C=A8config/policies.j?= =?UTF-8?q?s=E5=AE=9A=E7=BE=A9=E9=9C=80=E8=A6=81=E4=BD=BF=E7=94=A8jwtAuth?= =?UTF-8?q?=E7=9A=84action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controllers/CommentController.js | 238 ++++++++++------------ api/controllers/HouseController.js | 294 ++++++++++++--------------- api/controllers/LikeController.js | 267 +++++++++++------------- api/controllers/StudentController.js | 233 ++++++++++----------- api/controllers/UserController.js | 284 ++++++++++++-------------- api/policies/jwtAuth.js | 30 +++ config/policies.js | 89 ++++---- 7 files changed, 687 insertions(+), 748 deletions(-) create mode 100644 api/policies/jwtAuth.js diff --git a/api/controllers/CommentController.js b/api/controllers/CommentController.js index 4db4f8c..2da05d5 100644 --- a/api/controllers/CommentController.js +++ b/api/controllers/CommentController.js @@ -5,172 +5,160 @@ * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers */ -const jwt = require('jwt-simple'); - - module.exports = { - - createMyComment: async(req, res) => { + + createMyComment: async (req, res) => { console.log("*******createMyComment*********"); - let token = req.headers['x-access-token']; - console.log("token = " + token); - let secret = 'zzggzz'; console.log(req.body.houseId); console.log(req.body.content); console.log(req.body.star); - if(token){ - try{ - let decoded = jwt.decode(token, secret); - if (decoded.exp <= Date.now()) { - console.log("Access token has expired"); - res.ok({ - text: "Access token has expired" - }); - } - else{ - console.log("id = " + decoded.iss); - let houseId = req.body.houseId; - let userId = decoded.iss; - let name = decoded.name; - let content = req.body.content; - let star = req.body.star; - await Comment.create({ - houseId: houseId, - userId: userId, - name: name, - content: content, - like: 0, - dislike: 0, - star: star, - }) - - let dataStar = await Comment.find({ - houseId: houseId - }) - - let averageStar = 0; - console.log('averageStar = ' + averageStar); - dataStar.map((val, index) => { - console.log(val.star); - if(val.star){ - averageStar += val.star - } - }) - console.log('averageStar = ' + averageStar); - console.log(dataStar.length); - averageStar /= dataStar.length; - averageStar = Math.round(averageStar * 10) / 10; - await House.update({ - id: houseId - }, { - score: averageStar - }); - - res.ok({ - text: "comment create success", - }) - - // Comment.create({ - // houseId: houseId, - // userId: userId, - // name: name, - // content: content, - // like: 0, - // dislike: 0, - // star: star, - // }).exec(function(err,data){ - // if(err){ - // console.log("error = " + err); - // res.ok({ - // text: "house create not success" - // }) - // } - // else{ - // Comment.find({ - // houseId: houseId - // }).exec(function(err, data) { - // let averageStar = 0; - // dataStar.map((val,index) => { - // averageStar += val.star; - // }) - // console.log('averageStar = ' + averageStar); - // averageStar /= dataStar.length; - // console.log('averageStar = ' + averageStar); - // House.update({ - // id: houseId - // }, { - // score: averageStar - // }); - - // console.log("data = " + data); - // res.ok({ - // text: "comment create success", - // }) - // }) - // } - // }) + + try { + let decode=res.locals.decoded; + + console.log("id = " + decoded.iss); + let houseId = req.body.houseId; + let userId = decoded.iss; + let name = decoded.name; + let content = req.body.content; + let star = req.body.star; + await Comment.create({ + houseId: houseId, + userId: userId, + name: name, + content: content, + like: 0, + dislike: 0, + star: star, + }) + + let dataStar = await Comment.find({ + houseId: houseId + }) + + let averageStar = 0; + console.log('averageStar = ' + averageStar); + dataStar.map((val, index) => { + console.log(val.star); + if (val.star) { + averageStar += val.star } - }catch(error){ - console.log("catch error = " + error); - res.ok({ - text: "something went wrong" + error - }) - } + }) + console.log('averageStar = ' + averageStar); + console.log(dataStar.length); + averageStar /= dataStar.length; + averageStar = Math.round(averageStar * 10) / 10; + await House.update({ + id: houseId + }, { + score: averageStar + }); + + res.ok({ + text: "comment create success", + }) + + // Comment.create({ + // houseId: houseId, + // userId: userId, + // name: name, + // content: content, + // like: 0, + // dislike: 0, + // star: star, + // }).exec(function(err,data){ + // if(err){ + // console.log("error = " + err); + // res.ok({ + // text: "house create not success" + // }) + // } + // else{ + // Comment.find({ + // houseId: houseId + // }).exec(function(err, data) { + // let averageStar = 0; + // dataStar.map((val,index) => { + // averageStar += val.star; + // }) + // console.log('averageStar = ' + averageStar); + // averageStar /= dataStar.length; + // console.log('averageStar = ' + averageStar); + // House.update({ + // id: houseId + // }, { + // score: averageStar + // }); + + // console.log("data = " + data); + // res.ok({ + // text: "comment create success", + // }) + // }) + // } + // }) + + } catch (error) { + console.log("catch error = " + error); + res.ok({ + text: "something went wrong" + error + }) } + }, - - findHouseComment: function(req, res){ + + findHouseComment: function (req, res) { console.log("*******findHouseComment*********"); let houseId = req.body.houseId; console.log(req.body.houseId); - try{ + try { let data = Comment.find({ houseId: houseId - }).exec(function(err, data){ - if(!data){ + }).exec(function (err, data) { + if (!data) { res.notFound('comment not found'); } - else{ + else { console.log("data = " + data); res.ok({ text: "comment find success", data: data, }) - + } }) - - }catch(error){ + + } catch (error) { console.log("catch error = " + error); res.ok({ text: "something went wrong" + error }) } }, - - findBestComment: function(req, res){ + + findBestComment: function (req, res) { let houseId = req.body.houseId; console.log(req.body.houseId); - try{ + try { let data = Comment.find({ where: { houseId: houseId }, - limit: 3, - sort: 'like DESC' - }).exec(function(err, data){ - if(!data){ + limit: 3, + sort: 'like DESC' + }).exec(function (err, data) { + if (!data) { res.notFound('comment not found'); } - else{ + else { console.log("data = " + data); res.ok({ text: "comment create success", data: data, }) - + } }) - - }catch(error){ + + } catch (error) { console.log("catch error = " + error); res.ok({ text: "something went wrong" + error diff --git a/api/controllers/HouseController.js b/api/controllers/HouseController.js index 02d5720..b267d43 100644 --- a/api/controllers/HouseController.js +++ b/api/controllers/HouseController.js @@ -4,151 +4,118 @@ * @description :: Server-side logic for managing houses * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers */ - -const jwt = require('jwt-simple'); module.exports = { - - index: function(req, res){ - var result = House.find({}) - .then(function(data){ - res.ok({ - text: "find success", - data: data, - }) - }) + + index: function (req, res) { + var result = House.find({}) + .then(function (data) { + res.ok({ + text: "find success", + data: data, + }) + }) }, - - findMyHouse: function(req, res){ - var token = req.headers['x-access-token']; - var secret = 'zzggzz'; - console.log("Token = " + token); - if(token){ - try{ - var decoded = jwt.decode(token, secret); - if (decoded.exp <= Date.now()) { - res.ok({ - text: "Access token has expired" - }); - } - House.find({ landlordId: decoded.iss }).exec(function(err,findData){ - if(err){ - console.log("error = " + err); - res.ok({ - text: "user not found" - }) - } - console.log("id = " + decoded.iss); - console.log("data = " + findData); + + findMyHouse: function (req, res) { + try { + let decode = res.locals.decoded; + House.find({ landlordId: decoded.iss }).exec(function (err, findData) { + if (err) { + console.log("error = " + err); res.ok({ - text: "house check success", - data: findData, + text: "user not found" }) - }) - }catch(error){ - console.log("catch error = " + error); + } + console.log("id = " + decoded.iss); + console.log("data = " + findData); res.ok({ - text: "something went wrong" + error + text: "house check success", + data: findData, }) - } + }) + } catch (error) { + console.log("catch error = " + error); + res.ok({ + text: "something went wrong" + error + }) } }, - - createMyHouse: async(req, res) => { - var token = req.headers['x-access-token']; - console.log(token); - var secret = 'zzggzz'; - console.log(req.body.title); - console.log(req.body.area); - if(token){ - try{ - var decoded = jwt.decode(token, secret); - if (decoded.exp <= Date.now()) { + + createMyHouse: async (req, res) => { + try { + let decode = res.locals.decoded; + console.log(req.body.title); + console.log(req.body.area); + + let id = decoded.iss; + let landlord = await User.findOne({ + id, + }); + console.log(landlord); + let phone = landlord.phone; + console.log(req.body.title); + console.log(req.body.area); + console.log(req.body.checkwater); + console.log(req.body.checkele); + console.log(req.body.checknet); + console.log("id = " + decoded.iss); + House.create({ + title: req.body.title, + area: req.body.area, + address: req.body.address, + vacancy: req.body.vacancy, + rent: req.body.rent, + checkwater: req.body.checkwater, + checkele: req.body.checkele, + checknet: req.body.checknet, + type: req.body.type, + landlordId: decoded.iss, + phone: phone, + score: 0, + }).exec(function (err, data) { + if (err) { + console.log("error = " + err); res.ok({ - text: "Access token has expired" - }); + text: "house create not success" + }) } - else{ - let id = decoded.iss; - let landlord = await User.findOne({ - id, - }); - console.log(landlord); - let phone = landlord.phone; - console.log(req.body.title); - console.log(req.body.area); - console.log(req.body.checkwater); - console.log(req.body.checkele); - console.log(req.body.checknet); - console.log("id = " + decoded.iss); - House.create({ - title: req.body.title, - area: req.body.area, - address: req.body.address, - vacancy: req.body.vacancy, - rent: req.body.rent, - checkwater: req.body.checkwater, - checkele:req.body.checkele, - checknet:req.body.checknet, - type: req.body.type, - landlordId: decoded.iss, - phone: phone, - score: 0, - }).exec(function(err,data){ - if(err){ - console.log("error = " + err); - res.ok({ - text: "house create not success" - }) - } - else{ - console.log("data = " + data); - res.ok({ - text: "house create success", - }) - } + else { + console.log("data = " + data); + res.ok({ + text: "house create success", }) } - }catch(error){ - console.log("catch error = " + error); - res.ok({ - text: "something went wrong" + error - }) - } + }) + } catch (error) { + console.log("catch error = " + error); + res.ok({ + text: "something went wrong" + error + }) } + }, - - updateMyHouse: function(req, res){ - var token = req.headers['x-access-token']; - var secret = 'zzggzz'; - console.log(req.body.title); - console.log(req.body.area); - console.log(req.body.id); - if(token){ - try{ - var decoded = jwt.decode(token, secret); - if (decoded.exp <= Date.now()) { - res.ok({ - text: "Access token has expired" - }); - } - console.log(req.body.title); - console.log(req.body.area); - console.log(req.body.id); - House.update({ - id: req.body.id - },{ + + updateMyHouse: function (req, res) { + try { + let decode = res.locals.decoded; + console.log(req.body.title); + console.log(req.body.area); + console.log(req.body.id); + House.update({ + id: req.body.id + }, { title: req.body.title, area: req.body.area, address: req.body.address, vacancy: req.body.vacancy, rent: req.body.rent, checkwater: req.body.checkwater, - checkele:req.body.checkele, - checknet:req.body.checknet, + checkele: req.body.checkele, + checknet: req.body.checknet, type: req.body.type, - }).exec(function(err,data){ - if(err){ + }).exec(function (err, data) { + if (err) { console.log("error = " + err); res.ok({ text: "house update not success" @@ -159,35 +126,36 @@ module.exports = { text: "house update success", }) }) - }catch(error){ - console.log("catch error = " + error); - res.ok({ - text: "something went wrong" + error - }) - } + } catch (error) { + console.log("catch error = " + error); + res.ok({ + text: "something went wrong" + error + }) } + }, - findFilterHouse: function(req, res){ + + findFilterHouse: function (req, res) { var filter = []; var area = req.body.area; - var type = req.body.type; - var rent = req.body.rent; - var waterandelec = req.body.waterandelec; - console.log("area = " + area); - console.log("type = " + type); - console.log("rent = " + rent); - console.log("waterandelec = " + waterandelec); - filter.push({ - area: area, - }) - if(rent==0){ - rent = 3000 - } - House.find({ - area: area, - type: type - }).exec(function(err, data) { - if(err){ + var type = req.body.type; + var rent = req.body.rent; + var waterandelec = req.body.waterandelec; + console.log("area = " + area); + console.log("type = " + type); + console.log("rent = " + rent); + console.log("waterandelec = " + waterandelec); + filter.push({ + area: area, + }) + if (rent == 0) { + rent = 3000 + } + House.find({ + area: area, + type: type + }).exec(function (err, data) { + if (err) { console.log("error = " + err); res.ok({ text: "house find not success" @@ -198,54 +166,54 @@ module.exports = { text: "house find success", data: data, }) - }) + }) }, - - findTheHouse: async(req, res) => { - try{ + + findTheHouse: async (req, res) => { + try { let id = req.body.houseId; let findHouse = await House.findOne({ id }); - if(!findHouse){ + if (!findHouse) { console.log('house not found'); return res.ok({ text: 'house not found' }); } - else{ + else { console.log(findHouse); return res.ok({ text: 'house find success', data: findHouse, }) } - }catch(error){ + } catch (error) { console.log("catch error = " + error); res.ok({ text: "something went wrong" + error }) } }, - - findHouseData: async(req, res) => { - try{ + + findHouseData: async (req, res) => { + try { let findHouse = await House.find({}); - if(!findHouse){ + if (!findHouse) { console.log('house is null'); return res.ok({ text: 'house is null' }); } - else{ + else { console.log(findHouse); let newHouse = []; findHouse.map(({ id, title, area, rent, score }, index) => { newHouse.push({ id, title, - area, - rent, + area, + rent, score }) }) @@ -255,7 +223,7 @@ module.exports = { data: newHouse, }) } - }catch(error){ + } catch (error) { console.log("catch error = " + error); res.ok({ text: "something went wrong" + error diff --git a/api/controllers/LikeController.js b/api/controllers/LikeController.js index 18b683c..66e785c 100644 --- a/api/controllers/LikeController.js +++ b/api/controllers/LikeController.js @@ -5,158 +5,139 @@ * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers */ -const jwt = require('jwt-simple'); - module.exports = { - addLike: async(req, res) => { - var token = req.headers['x-access-token']; - console.log("token = " + token); - var secret = 'zzggzz'; - var commentId = req.body.commentId; - console.log(req.body.commentId); - if(token){ - try{ - var decoded = jwt.decode(token, secret); - if (decoded.exp <= Date.now()) { - res.ok({ - text: "Access token has expired" - }); - } - else{ - console.log("user id = " + decoded.iss); - var userId = decoded.iss; - let repeatLike = await Like.findOne({ - commentId, - userId, - like: 1, - }); - console.log(repeatLike); - if(!repeatLike){ - console.log("null"); - await Like.create({ - commentId, - userId, - like: 1, - }) - console.log("commentId = " + commentId); - let newLike = await Like.find({ - commentId, - like: 1, - userId: userId, - }) - await Comment.update({ - id: commentId - }, { - like: newLike.length - }) - console.log("newLike.length = " + newLike.length); - return res.ok({ - text: "like create success", - }) - } - console.log("repeatLike = "); - console.log(repeatLike.id); - await Like.destroy({ - id: repeatLike.id - }) - let findLike = await Like.find({ - commentId, - like: 1, - }) - let like = findLike.length; - console.log('like = ' + like); - await Comment.update({ - id: commentId - }, { - like: like - }) - - return res.ok({ - text: "like destroy success" + + addLike: async (req, res) => { + try { + let decode = res.locals.decoded; + + var commentId = req.body.commentId; + console.log(req.body.commentId); + + console.log("user id = " + decoded.iss); + var userId = decoded.iss; + let repeatLike = await Like.findOne({ + commentId, + userId, + like: 1, + }); + console.log(repeatLike); + if (!repeatLike) { + console.log("null"); + await Like.create({ + commentId, + userId, + like: 1, + }) + console.log("commentId = " + commentId); + let newLike = await Like.find({ + commentId, + like: 1, + userId: userId, + }) + await Comment.update({ + id: commentId + }, { + like: newLike.length }) - } - }catch(error){ - console.log("catch error = " + error); - res.ok({ - text: "something went wrong" + error + console.log("newLike.length = " + newLike.length); + return res.ok({ + text: "like create success", }) } + console.log("repeatLike = "); + console.log(repeatLike.id); + await Like.destroy({ + id: repeatLike.id + }) + let findLike = await Like.find({ + commentId, + like: 1, + }) + let like = findLike.length; + console.log('like = ' + like); + await Comment.update({ + id: commentId + }, { + like: like + }) + + return res.ok({ + text: "like destroy success" + }) + + } catch (error) { + console.log("catch error = " + error); + res.ok({ + text: "something went wrong" + error + }) } + }, - - addDislike: async(req, res) => { - var token = req.headers['x-access-token']; - console.log("token = " + token); - var secret = 'zzggzz'; - var commentId = req.body.commentId; - console.log(req.body.commentId); - if(token){ - try{ - var decoded = jwt.decode(token, secret); - if (decoded.exp <= Date.now()) { - res.ok({ - text: "Access token has expired" - }); - } - else{ - console.log("user id = " + decoded.iss); - var userId = decoded.iss; - let repeatLike = await Like.findOne({ - commentId, - userId, - like: 2, - }); - console.log(repeatLike); - if(!repeatLike){ - console.log("null"); - await Like.create({ - commentId, - userId, - like: 2, - }) - console.log("commentId = " + commentId); - let newLike = await Like.find({ - commentId, - like: 2, - userId: userId, - }) - await Comment.update({ - id: commentId - }, { - dislike: newLike.length - }) - console.log("newLike.length = " + newLike.length); - return res.ok({ - text: "like create success", - }) - } - console.log("repeatLike = "); - console.log(repeatLike.id); - await Like.destroy({ - id: repeatLike.id - }) - let findLike = await Like.find({ - commentId, - like: 2, - }) - let like = findLike.length; - console.log('like = ' + like); - await Comment.update({ - id: commentId - }, { - dislike: like - }) - - return res.ok({ - text: "like destroy success" + + addDislike: async (req, res) => { + try { + let decode = res.locals.decoded; + + var commentId = req.body.commentId; + console.log(req.body.commentId); + console.log("user id = " + decoded.iss); + var userId = decoded.iss; + let repeatLike = await Like.findOne({ + commentId, + userId, + like: 2, + }); + console.log(repeatLike); + if (!repeatLike) { + console.log("null"); + await Like.create({ + commentId, + userId, + like: 2, + }) + console.log("commentId = " + commentId); + let newLike = await Like.find({ + commentId, + like: 2, + userId: userId, + }) + await Comment.update({ + id: commentId + }, { + dislike: newLike.length }) - } - }catch(error){ - console.log("catch error = " + error); - res.ok({ - text: "something went wrong" + error + console.log("newLike.length = " + newLike.length); + return res.ok({ + text: "like create success", }) } + console.log("repeatLike = "); + console.log(repeatLike.id); + await Like.destroy({ + id: repeatLike.id + }) + let findLike = await Like.find({ + commentId, + like: 2, + }) + let like = findLike.length; + console.log('like = ' + like); + await Comment.update({ + id: commentId + }, { + dislike: like + }) + + return res.ok({ + text: "like destroy success" + }) + + } catch (error) { + console.log("catch error = " + error); + res.ok({ + text: "something went wrong" + error + }) } }, }; diff --git a/api/controllers/StudentController.js b/api/controllers/StudentController.js index abc71ee..1ca6c93 100644 --- a/api/controllers/StudentController.js +++ b/api/controllers/StudentController.js @@ -5,10 +5,10 @@ * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers */ -const jwt = require('jwt-simple'); +const jwt = require('jwt-simple'); //for register and login function module.exports = { - + login: function (req, res) { try { var account = req.body.account; @@ -17,48 +17,48 @@ module.exports = { var result = Student.findOne({ account: account, password: password, - }).exec(function(err, data){ + }).exec(function (err, data) { if (err) { - return res.serverError(err); + return res.serverError(err); } - if(!data){ + if (!data) { return res.notFound('Could not find Finn, sorry.'); } console.log("heoolo"); console.log(data); var moment = require("moment"); - var expires = moment().add(7, 'days').valueOf(); - console.log("id = " + data.id); - var token = jwt.encode({ - iss: data.id, - exp: expires, - name: data.name - }, secret); - Student.update({ - account: account, - password: password - },{ - token: token - }).exec(function(err, updated){ - if(err){ - console.log("updated error"); - } - console.log("token = " + token); - console.log("data = " + updated); - res.ok({ - text: 'login success', - token: token, - }); - }) - + var expires = moment().add(7, 'days').valueOf(); + console.log("id = " + data.id); + var token = jwt.encode({ + iss: data.id, + exp: expires, + name: data.name + }, secret); + Student.update({ + account: account, + password: password + }, { + token: token + }).exec(function (err, updated) { + if (err) { + console.log("updated error"); + } + console.log("token = " + token); + console.log("data = " + updated); + res.ok({ + text: 'login success', + token: token, + }); + }) + }) - } catch (err){ + } catch (err) { console.log("catch error = " + err); res.serverError(err); } }, - - register: function (req, res){ + + register: function (req, res) { try { var name = req.body.name; var gender = req.body.gender; @@ -68,107 +68,94 @@ module.exports = { var secret = 'zzggzz'; var newStudent = Student.create({ name: name, - gender: gender, - email: email, - account: account, - password: password, - }) - .then(function(){ - - var result = Student.findOne({ - account: account, - password: password, - }).exec(function(err, data){ - if(err){ - console.log(err); - return res.ok({ - text: 'Student not found' - }) - } - if(!data){ - return res.ok({ - text: 'Student not found' - }) - } - console.log("heoolo"); - console.log(data); - console.log("Studentname = " + data.name); - var moment = require("moment"); - var expires = moment().add(7, 'days').valueOf(); - console.log("id = " + data.id); - var token = jwt.encode({ - iss: data.id, - exp: expires, - name: data.name - }, secret); - Student.update({ - account: account, - password: password - },{ - token: token - }).exec(function(err, updated){ - if(err){ - console.log("updated error"); - } - console.log("token = " + token); - console.log("data = " + updated); - res.ok({ - text: 'register success', - token: token, - }); - }) - - }) - + gender: gender, + email: email, + account: account, + password: password, }) - } catch (e) { - res.serverError(e); - } - }, - - checkAuth: function(req, res) { - var token = req.headers['x-access-token']; - console.log("token = " + token); - var secret = 'zzggzz'; - if(token){ - try { - var decoded = jwt.decode(token, secret); - console.log("decoded = " + decoded.iss); - if (decoded.exp <= Date.now()) { - console.log("Access token has expired"); - return res.ok({ - text: "Access token has expired" - }); - } - else{ - Student.findOne({ id: decoded.iss }).exec(function(err,data){ - if(err){ - console.log("error = " + err); + .then(function () { + + var result = Student.findOne({ + account: account, + password: password, + }).exec(function (err, data) { + if (err) { + console.log(err); return res.ok({ - text: "Student not found" + text: 'Student not found' }) } - if(!data){ + if (!data) { return res.ok({ - text: "student not data", + text: 'Student not found' }) } - else{ - return res.ok({ - text: "check success", - name: data.name + console.log("heoolo"); + console.log(data); + console.log("Studentname = " + data.name); + var moment = require("moment"); + var expires = moment().add(7, 'days').valueOf(); + console.log("id = " + data.id); + var token = jwt.encode({ + iss: data.id, + exp: expires, + name: data.name + }, secret); + Student.update({ + account: account, + password: password + }, { + token: token + }).exec(function (err, updated) { + if (err) { + console.log("updated error"); + } + console.log("token = " + token); + console.log("data = " + updated); + res.ok({ + text: 'register success', + token: token, + }); }) - } + }) - } - - }catch (error){ - console("catch error = " + error); - return res.ok({ - text: "something went wrong" + }) - } + } catch (e) { + res.serverError(e); } - }, + + checkAuth: function (req, res) { + try { + let decode = res.locals.decoded; + + Student.findOne({ id: decoded.iss }).exec(function (err, data) { + if (err) { + console.log("error = " + err); + return res.ok({ + text: "Student not found" + }) + } + if (!data) { + return res.ok({ + text: "student not data", + }) + } + else { + return res.ok({ + text: "check success", + name: data.name + }) + } + }) + + + } catch (error) { + console("catch error = " + error); + return res.ok({ + text: "something went wrong" + }) + } + } }; \ No newline at end of file diff --git a/api/controllers/UserController.js b/api/controllers/UserController.js index 45057ec..4bc2aef 100644 --- a/api/controllers/UserController.js +++ b/api/controllers/UserController.js @@ -4,42 +4,42 @@ * @description :: Server-side logic for managing users * @help :: See http://sailsjs.org/#!/documentation/concepts/Controllers */ - + const jwt = require('jwt-simple'); module.exports = { - checkIdRepeat: async (req,res) => { - try{ + checkIdRepeat: async (req, res) => { + try { let account = await req.body.account; console.log("gg"); console.log(account); - let result =await User.findOne({ + let result = await User.findOne({ account: account - }).exec( (err, data) => { - if(err){ - console.log(err+"fuck you"); + }).exec((err, data) => { + if (err) { + console.log(err + "fuck you"); res.ok({ text: 'user not found' }) } - if(!data){ + if (!data) { res.ok({ text: 'not found' }); } - else{ - res.ok({ - data:1 - }) + else { + res.ok({ + data: 1 + }) } - }) - } catch (err){ + }) + } catch (err) { console.log("catch error = " + err); - } + } }, - login: async(req, res) => { + login: async (req, res) => { try { - var account =await req.body.account; + var account = await req.body.account; console.log(account); var password = req.body.password; console.log(password); @@ -47,14 +47,14 @@ module.exports = { var result = User.findOne({ account: account, password: password, - }).exec(function(err, data){ - if(err){ + }).exec(function (err, data) { + if (err) { console.log(err); return res.ok({ text: 'user not found' }) } - if(!data){ + if (!data) { return res.ok({ text: 'user not found' }) @@ -63,38 +63,38 @@ module.exports = { console.log(data); console.log("username = " + data.name); var moment = require("moment"); - var expires = moment().add(7, 'days').valueOf(); - console.log("id = " + data.id); - var token = jwt.encode({ - iss: data.id, - exp: expires, - name: data.name - }, secret); - User.update({ - account: account, - password: password - },{ - token: token - }).exec(function(err, updated){ - if(err){ - console.log("updated error"); - } - console.log("token = " + token); - console.log("data = " + updated); - res.ok({ - text: 'login success', - token: token, - }); - }) - + var expires = moment().add(7, 'days').valueOf(); + console.log("id = " + data.id); + var token = jwt.encode({ + iss: data.id, + exp: expires, + name: data.name + }, secret); + User.update({ + account: account, + password: password + }, { + token: token + }).exec(function (err, updated) { + if (err) { + console.log("updated error"); + } + console.log("token = " + token); + console.log("data = " + updated); + res.ok({ + text: 'login success', + token: token, + }); + }) + }) - } catch (err){ + } catch (err) { console.log("catch error = " + err); res.serverError(err); } }, - - register: function (req, res){ + + register: function (req, res) { try { var name = req.body.name; var phone = req.body.phone; @@ -105,124 +105,108 @@ module.exports = { var secret = 'zzggzz'; var newUser = User.create({ name: name, - phone: phone, - gender: gender, - address: address, - account: account, - password: password, + phone: phone, + gender: gender, + address: address, + account: account, + password: password, }) - .then(function(){ - - var result = User.findOne({ - account: account, - password: password, - }).exec(function(err, data){ - if(err){ - console.log(err); - return res.ok({ - text: 'user not found' - }) - } - if(!data){ - return res.ok({ - text: 'user not found' - }) - } - console.log("heoolo"); - console.log(data); - console.log("username = " + data.name); - var moment = require("moment"); - var expires = moment().add(7, 'days').valueOf(); - console.log("id = " + data.id); - var token = jwt.encode({ - iss: data.id, - exp: expires, - name: data.name - }, secret); - User.update({ - account: account, - password: password - },{ - token: token - }).exec(function(err, updated){ - if(err){ - console.log("updated error"); - } - console.log("token = " + token); - console.log("data = " + updated); - res.ok({ - text: 'register success', - token: token, - }); - }) - + .then(function () { + + var result = User.findOne({ + account: account, + password: password, + }).exec(function (err, data) { + if (err) { + console.log(err); + return res.ok({ + text: 'user not found' + }) + } + if (!data) { + return res.ok({ + text: 'user not found' + }) + } + console.log("heoolo"); + console.log(data); + console.log("username = " + data.name); + var moment = require("moment"); + var expires = moment().add(7, 'days').valueOf(); + console.log("id = " + data.id); + var token = jwt.encode({ + iss: data.id, + exp: expires, + name: data.name + }, secret); + User.update({ + account: account, + password: password + }, { + token: token + }).exec(function (err, updated) { + if (err) { + console.log("updated error"); + } + console.log("token = " + token); + console.log("data = " + updated); + res.ok({ + text: 'register success', + token: token, + }); + }) + + }) + }) - - }) } catch (e) { res.serverError(e); } }, - - checkAuth: function(req, res) { - var token = req.headers['x-access-token']; - console.log("token = " + token); - var secret = 'zzggzz'; - if(token){ - try { - var decoded = jwt.decode(token, secret); - if (decoded.exp <= Date.now()) { - console.log("Access token has expired"); + + checkAuth: function (req, res) { + try { + User.findOne({ id: decoded.iss }).exec(function (err, data) { + if (err) { + res.serverError(e); + } + if (!data) { res.ok({ - text: "Access token has expired" + text: 'not found' }); } - else{ - User.findOne({ id: decoded.iss }).exec(function(err,data){ - if(err){ - res.serverError(e); - } - if(!data){ - res.ok({ - text: 'not found' - }); - } - else{ - console.log("data = " + data); - console.log("name = " + data.name); - res.ok({ - text: "check success", - name: data.name - }) - } + else { + console.log("data = " + data); + console.log("name = " + data.name); + res.ok({ + text: "check success", + name: data.name }) } - - }catch (error){ - console("catch error = " + error); - res.ok({ - text: "something went wrong" - }) - } + }) + } catch (error) { + console("catch error = " + error); + res.ok({ + text: "something went wrong" + }) } - }, - - upload: function (req, res) { + + upload: function (req, res) { console.log("upload"); req.file('avatar').upload({ - dirname: require('path').resolve(sails.config.appPath, 'assets/images') - },function (err, uploadedFiles) { - if (err) return res.negotiate(err); - - return res.json({ - message: uploadedFiles.length + ' file(s) uploaded successfully!', - file: uploadedFiles - }); + dirname: require('path').resolve(sails.config.appPath, 'assets/images') + }, function (err, uploadedFiles) { + if (err) return res.negotiate(err); + + return res.json({ + message: uploadedFiles.length + ' file(s) uploaded successfully!', + file: uploadedFiles + }); }); - }, - - test: function (req, res) { + }, + + test: function (req, res) { console.log("upload"); console.log(req.body.avatar); res.ok({ @@ -230,6 +214,6 @@ module.exports = { file: req.body.avatar }) }, - + }; diff --git a/api/policies/jwtAuth.js b/api/policies/jwtAuth.js new file mode 100644 index 0000000..93f9746 --- /dev/null +++ b/api/policies/jwtAuth.js @@ -0,0 +1,30 @@ +const jwt = require('jwt-simple'); + +module.exports = function (req, res, next) { + + //validate token + try { + let token = req.headers['x-access-token']; + let secret = 'zzggzz'; + let decoded = jwt.decode(token, secret); + + console.log("Token=" + token); + + if (decoded.exp <= Date.now()) { + console.log("Access token has expired"); + res.ok({ + text: "Access token has expired" + }); + } else { + //valid token + res.locals.decoded = decoded; + next(); + } + } catch (error) { + //decode failed, jwt.decode throw an error + console.log(error); + res.ok({ + text: "something went wrong" + error + }) + } +}; diff --git a/config/policies.js b/config/policies.js index b2f5ca4..ff8ca37 100644 --- a/config/policies.js +++ b/config/policies.js @@ -19,66 +19,67 @@ module.exports.policies = { - /*************************************************************************** - * * - * Default policy for all controllers and actions (`true` allows public * - * access) * - * * - ***************************************************************************/ + /*************************************************************************** + * * + * Default policy for all controllers and actions (`true` allows public * + * access) * + * * + ***************************************************************************/ + + '*': true, + + 'UserController': { + 'register': [], + 'login': [], + 'checkAuth': ['jwtAuth'], + 'checkIdRepeat': [], + 'test': [], + }, + + 'StudentController': { + 'register': [], + 'login': [], + 'checkAuth': ['jwtAuth'], + }, - '*': true, - - 'UserController': { - 'register': [], - 'login': [], - 'checkAuth': [], - 'checkIdRepeat': [], - 'test': [], - }, - - 'StudentController': { - 'register': [], - 'login': [], - 'checkAuth': [], - }, - 'HouseController': { 'index': [], - 'createMyHouse': [], - 'updateMyHouse': [], + 'findMyHouse': ['jwtAuth'], + 'createMyHouse': ['jwtAuth'], + 'updateMyHouse': ['jwtAuth'], 'findFilterHouse': [], 'findTheHouse': [], 'findHouseData': [], }, - + 'CommentController': { - 'createMyComment': [], + 'createMyComment': ['jwtAuth'], 'findHouseComment': [], 'findBestComment': [], }, - + 'LikeController': { - 'addLike': [], - 'addDislike': [], + 'addLike': ['jwtAuth'], + 'addDislike': ['jwtAuth'], }, - /*************************************************************************** - * * - * Here's an example of mapping some policies to run before a controller * - * and its actions * - * * - ***************************************************************************/ + /*************************************************************************** + * * + * Here's an example of mapping some policies to run before a controller * + * and its actions * + * * + ***************************************************************************/ // RabbitController: { - // Apply the `false` policy as the default for all of RabbitController's actions - // (`false` prevents all access, which ensures that nothing bad happens to our rabbits) - // '*': false, + // Apply the `false` policy as the default for all of RabbitController's actions + // (`false` prevents all access, which ensures that nothing bad happens to our rabbits) + // '*': false, - // For the action `nurture`, apply the 'isRabbitMother' policy - // (this overrides `false` above) - // nurture : 'isRabbitMother', + // For the action `nurture`, apply the 'isRabbitMother' policy + // (this overrides `false` above) + // nurture : 'isRabbitMother', - // Apply the `isNiceToAnimals` AND `hasRabbitFood` policies - // before letting any users feed our rabbits - // feed : ['isNiceToAnimals', 'hasRabbitFood'] + // Apply the `isNiceToAnimals` AND `hasRabbitFood` policies + // before letting any users feed our rabbits + // feed : ['isNiceToAnimals', 'hasRabbitFood'] // } }; From 7860d0ca73f00195afe3f5d54f7f723316c99d8d Mon Sep 17 00:00:00 2001 From: rageNami Date: Wed, 3 May 2017 23:41:28 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=A7=A3=E6=B1=BA=E5=95=8F=E9=A1=8C:"regen?= =?UTF-8?q?eratorRuntime=20is=20not=20defined."=20=E8=A7=A3=E6=B1=BA?= =?UTF-8?q?=E6=96=B9=E6=B3=95:=E5=A2=9E=E5=8A=A0=E5=A5=97=E4=BB=B6babel-pl?= =?UTF-8?q?ugin-transform-regenerator=20&=20Babel=20polyfill=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9Econfig/babel.js=E4=BB=A5=E5=95=9F=E7=94=A8bab?= =?UTF-8?q?el-polyfill=20=E5=8F=83=E8=80=83=E8=B3=87=E6=96=99:https://babe?= =?UTF-8?q?ljs.io/docs/plugins/transform-regenerator/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/babel.js | 3 +++ package.json | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 config/babel.js diff --git a/config/babel.js b/config/babel.js new file mode 100644 index 0000000..1d92fa4 --- /dev/null +++ b/config/babel.js @@ -0,0 +1,3 @@ +module.exports.babel = { + polyfill: true +}; \ No newline at end of file diff --git a/package.json b/package.json index 166c779..e6ae844 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "description": "a Sails application", "keywords": [], "dependencies": { + "babel-polyfill": "^6.23.0", "ejs": "2.3.4", "grunt": "1.0.1", "grunt-babel": "^6.0.0", @@ -38,6 +39,7 @@ "author": "ubuntu", "license": "", "devDependencies": { - "babel-plugin-syntax-async-functions": "^6.13.0" + "babel-plugin-syntax-async-functions": "^6.13.0", + "babel-plugin-transform-regenerator": "^6.24.1" } } From 881fda25a40791c7609d157dc4c30245f69b5098 Mon Sep 17 00:00:00 2001 From: rageNami Date: Sun, 7 May 2017 17:08:14 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=AD=A3let=20decoded=20=3D=20res?= =?UTF-8?q?.locals.decoded;=E8=AA=A4=E6=A4=8D=E6=88=90let=20decode=20=3D?= =?UTF-8?q?=20res.locals.decoded;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controllers/CommentController.js | 2 +- api/controllers/HouseController.js | 6 +++--- api/controllers/LikeController.js | 4 ++-- api/controllers/StudentController.js | 2 +- api/controllers/UserController.js | 1 + 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/api/controllers/CommentController.js b/api/controllers/CommentController.js index 2da05d5..50cddcb 100644 --- a/api/controllers/CommentController.js +++ b/api/controllers/CommentController.js @@ -14,7 +14,7 @@ module.exports = { console.log(req.body.star); try { - let decode=res.locals.decoded; + let decoded=res.locals.decoded; console.log("id = " + decoded.iss); let houseId = req.body.houseId; diff --git a/api/controllers/HouseController.js b/api/controllers/HouseController.js index b267d43..8c6953c 100644 --- a/api/controllers/HouseController.js +++ b/api/controllers/HouseController.js @@ -19,7 +19,7 @@ module.exports = { findMyHouse: function (req, res) { try { - let decode = res.locals.decoded; + let decoded = res.locals.decoded; House.find({ landlordId: decoded.iss }).exec(function (err, findData) { if (err) { console.log("error = " + err); @@ -44,7 +44,7 @@ module.exports = { createMyHouse: async (req, res) => { try { - let decode = res.locals.decoded; + let decoded = res.locals.decoded; console.log(req.body.title); console.log(req.body.area); @@ -98,7 +98,7 @@ module.exports = { updateMyHouse: function (req, res) { try { - let decode = res.locals.decoded; + let decoded = res.locals.decoded; console.log(req.body.title); console.log(req.body.area); console.log(req.body.id); diff --git a/api/controllers/LikeController.js b/api/controllers/LikeController.js index 66e785c..febf92e 100644 --- a/api/controllers/LikeController.js +++ b/api/controllers/LikeController.js @@ -9,7 +9,7 @@ module.exports = { addLike: async (req, res) => { try { - let decode = res.locals.decoded; + let decoded = res.locals.decoded; var commentId = req.body.commentId; console.log(req.body.commentId); @@ -77,7 +77,7 @@ module.exports = { addDislike: async (req, res) => { try { - let decode = res.locals.decoded; + let decoded = res.locals.decoded; var commentId = req.body.commentId; console.log(req.body.commentId); diff --git a/api/controllers/StudentController.js b/api/controllers/StudentController.js index 1ca6c93..ebaf53c 100644 --- a/api/controllers/StudentController.js +++ b/api/controllers/StudentController.js @@ -128,7 +128,7 @@ module.exports = { checkAuth: function (req, res) { try { - let decode = res.locals.decoded; + let decoded = res.locals.decoded; Student.findOne({ id: decoded.iss }).exec(function (err, data) { if (err) { diff --git a/api/controllers/UserController.js b/api/controllers/UserController.js index 4bc2aef..152a129 100644 --- a/api/controllers/UserController.js +++ b/api/controllers/UserController.js @@ -166,6 +166,7 @@ module.exports = { checkAuth: function (req, res) { try { + let decoded=res.locals.decoded; User.findOne({ id: decoded.iss }).exec(function (err, data) { if (err) { res.serverError(e);