From 602e8d1cc3f289e6674c0771f9ee4975a640cffe Mon Sep 17 00:00:00 2001 From: Alexandre Marcos Date: Sun, 4 Sep 2022 14:40:28 +0200 Subject: [PATCH 1/2] Update API --- .DS_Store | Bin 6148 -> 6148 bytes API/client/admin.http | 34 +--- API/client/place.http | 64 ------ API/client/service.http | 43 ---- API/client/user.http | 15 +- API/controller/admin/place.js | 107 ---------- API/controller/admin/service.js | 88 -------- API/controller/admin/user.js | 49 ----- API/controller/user/auth.js | 82 +++++--- API/helper/authtoken.js | 5 +- API/model/place.js | 20 -- API/model/placelinkschedules.js | 20 -- API/model/role.js | 4 +- API/model/schedules.js | 12 -- API/model/service.js | 16 -- API/package.json | 4 +- API/routes/admin.js | 162 --------------- API/routes/user.js | 189 +----------------- API/server.js | 31 +-- .../UserInterfaceState.xcuserstate | Bin 75520 -> 75520 bytes 20 files changed, 86 insertions(+), 859 deletions(-) delete mode 100644 API/client/place.http delete mode 100644 API/client/service.http delete mode 100644 API/controller/admin/place.js delete mode 100644 API/controller/admin/service.js delete mode 100644 API/controller/admin/user.js delete mode 100644 API/model/place.js delete mode 100644 API/model/placelinkschedules.js delete mode 100644 API/model/schedules.js delete mode 100644 API/model/service.js diff --git a/.DS_Store b/.DS_Store index 9986bb5090003dc53e64e375d90c1727082f364a..e3cb19208fa6ad8f9094f08ecc06ee58580da947 100644 GIT binary patch delta 62 zcmZoMXfc@JFUrQiz`)4BAiz*ukd%|31mtZ`D%dQ@v7DKaZL<-}YDNx2OH&;MBV&`z RPg#|iCN`*TX6N|J4*<>X590s; delta 95 zcmZoMXfc@JFU-!sz`)4BAi$8HoRpKF1mp>97UWpTtPYZ3W^iN(VDR+JK}Z5c9f4Ty hKNv7DZ02EE&B$S5Y@nlHWMH&;KdTbcW_FIh`~c)z7i|Cl diff --git a/API/client/admin.http b/API/client/admin.http index 5cc55ef..3764aaa 100644 --- a/API/client/admin.http +++ b/API/client/admin.http @@ -10,36 +10,4 @@ Content-Type: application/json ### POST http://localhost:8081/bye HTTP/1.1 Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ4MzkyLCJleHAiOjE2NTkzNzM1OTJ9.8NAN8kS0ACJQTPjUaSR74E7uFNt9FAa9RW1bL2rDWvo - -### -GET http://localhost:8081/getUsers HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ4MzkyLCJleHAiOjE2NTkzNzM1OTJ9.8NAN8kS0ACJQTPjUaSR74E7uFNt9FAa9RW1bL2rDWvo - -### -POST http://localhost:8081/getUserById HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ4MzkyLCJleHAiOjE2NTkzNzM1OTJ9.8NAN8kS0ACJQTPjUaSR74E7uFNt9FAa9RW1bL2rDWvo - -{ - "id":"62e797836150151c50b24dc8" -} - -### -POST http://localhost:8081/getUserByRole HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ4MzkyLCJleHAiOjE2NTkzNzM1OTJ9.8NAN8kS0ACJQTPjUaSR74E7uFNt9FAa9RW1bL2rDWvo - -{ - "role": "62e436aa1a254799431166b0" -} - -### -DELETE http://localhost:8081/deleteUsers HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ4MzkyLCJleHAiOjE2NTkzNzM1OTJ9.8NAN8kS0ACJQTPjUaSR74E7uFNt9FAa9RW1bL2rDWvo - -{ - "id": "62e797836150151c50b24dc8" -} \ No newline at end of file +Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ2Mjg3LCJleHAiOjE2NTkzNzE0ODd9.C-fr-Xmpy9ZHsrXYrXYi3SI-zDgI3Rhvt4A-VIeLUMo \ No newline at end of file diff --git a/API/client/place.http b/API/client/place.http deleted file mode 100644 index 501ecfa..0000000 --- a/API/client/place.http +++ /dev/null @@ -1,64 +0,0 @@ -### -POST http://localhost:8081/createPlace HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5NDU0ODI1LCJleHAiOjE2NTk0ODAwMjV9.T6ty88FqVNHMRgiZTBSjJu0vGxMgJ3lVfUq7TGFzZaY - -{ - "name": "COWORK BASTILLE", - "city": "Paris", - "cp": 75004, - "horaire":{ - "lundi":"9h-20h", - "mardi": "9h-20h", - "mercredi": "9h-20h", - "jeudi": "9h-20h", - "vendredi": "9h-20h", - "samedi": "9h-20h", - "dimanche": "11h-20h" - } -} - - -### -GET http://localhost:8081/getPlace HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5NDU0ODI1LCJleHAiOjE2NTk0ODAwMjV9.T6ty88FqVNHMRgiZTBSjJu0vGxMgJ3lVfUq7TGFzZaY - -### -POST http://localhost:8081/getPlaceById HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5NDU0ODI1LCJleHAiOjE2NTk0ODAwMjV9.T6ty88FqVNHMRgiZTBSjJu0vGxMgJ3lVfUq7TGFzZaY - -{ - "id": "62e95018684d1822849593e9" -} - -### -PATCH http://localhost:8081/updatePlace HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5NDU0ODI1LCJleHAiOjE2NTk0ODAwMjV9.T6ty88FqVNHMRgiZTBSjJu0vGxMgJ3lVfUq7TGFzZaY - -{ - "id": "62e95018684d1822849593e9", - "name": "COWORK BASTILLE", - "city": "Paris", - "cp": 75004, - "horaire":{ - "lundi":"8h-19h", - "mardi": "9h-21h", - "mercredi": "9h-20h", - "jeudi": "9h-20h", - "vendredi": "9h-20h", - "samedi": "9h-20h", - "dimanche": "13h-20h" - } -} - -### -DELETE http://localhost:8081/deletePlace HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5NDU0ODI1LCJleHAiOjE2NTk0ODAwMjV9.T6ty88FqVNHMRgiZTBSjJu0vGxMgJ3lVfUq7TGFzZaY - -{ - "id": "62e94f7d07c0bf1340e4541f" -} \ No newline at end of file diff --git a/API/client/service.http b/API/client/service.http deleted file mode 100644 index 2c0ba50..0000000 --- a/API/client/service.http +++ /dev/null @@ -1,43 +0,0 @@ -### -POST http://localhost:8081/addService HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ4MzkyLCJleHAiOjE2NTkzNzM1OTJ9.8NAN8kS0ACJQTPjUaSR74E7uFNt9FAa9RW1bL2rDWvo - -{ - "name": "Gaming Room", - "price": 4.50 -} - -### -GET http://localhost:8081/getService HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ4MzkyLCJleHAiOjE2NTkzNzM1OTJ9.8NAN8kS0ACJQTPjUaSR74E7uFNt9FAa9RW1bL2rDWvo - -### -POST http://localhost:8081/getServiceById HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ4MzkyLCJleHAiOjE2NTkzNzM1OTJ9.8NAN8kS0ACJQTPjUaSR74E7uFNt9FAa9RW1bL2rDWvo - -{ - "service": "62e7d867cd167f34887fe849" -} - -### -PATCH http://localhost:8081/updateService HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ4MzkyLCJleHAiOjE2NTkzNzM1OTJ9.8NAN8kS0ACJQTPjUaSR74E7uFNt9FAa9RW1bL2rDWvo - -{ - "name": "Salle Gaming", - "price": 5, - "id": "62e7d867cd167f34887fe849" -} - -### -DELETE http://localhost:8081/deleteService HTTP/1.1 -Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzljNjI0ZDQ3MTAyYmIwY2MxNjYwIiwiZW1haWwiOiJzdW53dWtvbmdAZ21haWwuY29tIiwiaWF0IjoxNjU5MzQ4MzkyLCJleHAiOjE2NTkzNzM1OTJ9.8NAN8kS0ACJQTPjUaSR74E7uFNt9FAa9RW1bL2rDWvo - -{ - "id": "62e7b8d12b8e181dd0f90a2d" -} \ No newline at end of file diff --git a/API/client/user.http b/API/client/user.http index aa4718f..e0fe629 100644 --- a/API/client/user.http +++ b/API/client/user.http @@ -23,10 +23,21 @@ Content-Type: application/json ### POST http://localhost:8081/logout HTTP/1.1 Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlNzk3ODM2MTUwMTUxYzUwYjI0ZGM4IiwiZW1haWwiOiJzb25nb2t1QGdtYWlsLmNvbSIsImlhdCI6MTY1OTM0NTA1NywiZXhwIjoxNjU5MzcwMjU3fQ.PAk9FH0W8jw9HxAvhxoSeDinVEV1M3h1zxvixueajA8 +Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjMwYTNkNGNlN2ZhNjM5Yjk5NWE0NTVmIiwiZW1haWwiOiJ0ZXN0QGdtYWlsLmNvbSIsImlhdCI6MTY2MTYzOTM0NCwiZXhwIjoxNjYxNjY0NTQ0fQ.0peUYCbP8X1Tu1ySJzRU3wxJ5QpNSmUXjAAFfvQcHjE ### GET http://localhost:8081/getProfile HTTP/1.1 Content-Type: application/json -Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjMwYTNkNGNlN2ZhNjM5Yjk5NWE0NTVmIiwiZW1haWwiOiJ0ZXN0QGdtYWlsLmNvbSIsImlhdCI6MTY2MTYyMzMyMSwiZXhwIjoxNjYxNjQ4NTIxfQ.AgvF4-kKm2Qb4jbZG8nInzPyL6Hb6PApPD0FiQkw-w4 +Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjMwYTNkNGNlN2ZhNjM5Yjk5NWE0NTVmIiwiZW1haWwiOiJ0ZXN0QGdtYWlsLmNvbSIsImlhdCI6MTY2MTY5NjM1OSwiZXhwIjoxNjYxNzIxNTU5fQ.0KMHHHT-db4qk0PFj6BQB6STvLEmd3a1HMbbMb6i1O4 +### +PUT http://localhost:8081/updateProfile HTTP/1.1 +Content-Type: application/json +Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjMwYTNkNGNlN2ZhNjM5Yjk5NWE0NTVmIiwiZW1haWwiOiJ0ZXN0QGdtYWlsLmNvbSIsImlhdCI6MTY2MjEzMjU3MCwiZXhwIjoxNjYyMTU3NzcwfQ.vX0PjcVyWZbNHVlgEckbn_lZjBm6UsTlD-J6_3yCmsM + +{ + "firstname": "Test", + "phonenumber": "0634067407", + "lastname": "Test", + "pseudo": "Gkt" +} \ No newline at end of file diff --git a/API/controller/admin/place.js b/API/controller/admin/place.js deleted file mode 100644 index 06850c5..0000000 --- a/API/controller/admin/place.js +++ /dev/null @@ -1,107 +0,0 @@ -const PlaceModel = require('../../model/place.js') -const slpModel = require('../../model/placelinkschedules.js') -const SchedulesModel = require('../../model/schedules.js') - - -const addPlace = async(body,res) => { - const {name,city,cp,horaire} = body - if(!name || !city || !cp || !horaire){ - res.status(400).send("All input are required") - }else{ - const place = new PlaceModel(body) - const checkPlace = await PlaceModel.findOne({name: place.name}) - if(checkPlace){ - res.status(400).send("this place already exist") - }else{ - if(place.save()){ - let count = 0 - const arrayTime = ["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"] - for(let i in horaire){ - let arraySchedules = {"idPlace": place._id, "day": arrayTime[count],"time": body.horaire[i]} - console.log(arraySchedules) - let schedules = new slpModel(arraySchedules) - schedules.save() - count++ - } - res.status(200).send("new place created") - }else{ - res.status(400).send("error in creation of new place") - } - } - } - -} - -const getPlace = async(res) => { - const places = await PlaceModel.find() - - if(places){ - var tmp = [] - for(i in places){ - var horaire = await slpModel.find({idPlace: places[i]._id}) - var result = [{"place":places[i],"schedules": horaire}] - tmp = tmp.concat(result) - } - res.status(200).send(tmp) - }else{ - res.status(400).send("no place found") - } - -} - -const getPlaceById = async(body,res) => { - const place = await PlaceModel.findOne({_id: body.id}) - if(place){ - var horaire = await slpModel.find({idPlace: place._id}) - var result = {"place":place,"schedules": horaire} - res.status(200).send(result) - }else{ - res.status(400).send("no place found") - } - -} - -const updatePlace = async(body,res) => { - const {id, name, city, cp, horaire} = body - const place = await PlaceModel.findOne({_id: id}) - if(place){ - if(!name){ - place.name = name - } - if(!city){ - place.city = city - } - if(!cp){ - place.cp = cp - } - if(!horaire){ - - } - - }else{ - res.status(400).send("no place found") - } -} - -const deletePlace = async(body,res) => { - const {id} = body - if(!id){ - res.status(400).send("all input are required") - }else{ - const schedules = await slpModel.find({idPlace: id}) - for(let i = 0; i < schedules.length; i++){ - await slpModel.findOneAndDelete({idPlace: id}) - } - const place = await PlaceModel.findOne({_id: id}) - if(place.delete()){ - res.status(200).send("Place delete success") - }else{ - res.status(400).send("error in delete place process") - } - - } -} - - - -module.exports = {addPlace, getPlace, getPlaceById, updatePlace, deletePlace} \ No newline at end of file diff --git a/API/controller/admin/service.js b/API/controller/admin/service.js deleted file mode 100644 index 86c52a7..0000000 --- a/API/controller/admin/service.js +++ /dev/null @@ -1,88 +0,0 @@ -const ServiceModel = require('../../model/service.js') -const Mongoose = require('mongoose'); - - -const addService = async(body,res) => { - const {name,price} = body - if(!name || !price){ - res.status(400).send("All input are required") - }else{ - const existService = await ServiceModel.findOne({name: name}) - if(existService){ - res.status(200).send("this service already exist") - }else{ - const service = new ServiceModel(body) - service.save() - res.status(200).send("service create") - } - } - -} - -const getService = async(res) => { - const services = await ServiceModel.find() - if(services){ - res.status(200).json(services) - }else{ - res.status(400).send("no services found") - } - -} - -const getServiceById = async(body,res) => { - console.log(body.service) - const id = body.service - if(!id){ - res.status(400).send("All input are required") - }else{ - const Service = await ServiceModel.findOne({_id: id}) - if(Service){ - res.status(200).json(Service) - }else{ - res.status(400).send("No Service found") - } - } - -} - -const updateService = async(body,res) => { - const {name,price,id} = body - if(!id || !name || !price){ - res.status(400).send("All input are required") - }else{ - const Service = await ServiceModel.findOne({_id: id}) - if(Service){ - Service.name = name - Service.price = price - Service.save() - res.status(200).send("update done") - }else{ - res.status(400).send("No Service found") - } - } - -} - -const deleteService = async(body,res) => { - const id = body.id - if(!id){ - res.status(400).send("All input are required") - }else{ - const idService = Mongoose.Types.ObjectId(id) - console.log(idService) - const Service = await ServiceModel.findOneAndDelete({_id: idService}) - if(Service){ - res.status(200).send("delete done") - }else{ - res.status(400).send("No Service found") - } - } - -} - - - - - - -module.exports = {addService, getService, getServiceById, updateService,deleteService} \ No newline at end of file diff --git a/API/controller/admin/user.js b/API/controller/admin/user.js deleted file mode 100644 index 640a23b..0000000 --- a/API/controller/admin/user.js +++ /dev/null @@ -1,49 +0,0 @@ -const UserModel = require('../../model/user.js') - - - -const getAllUsers = async(body,res) => { - const AllUsers = await UserModel.find() - if(AllUsers){ - res.status(200).json(AllUsers) - }else{ - res.status(400).send("No Users found") - } - -} - -const getUserById = async(body,res) => { - const user = await UserModel.findOne({_id: body.id}) - if(user){ - res.status(200).json(user) - }else{ - res.status(400).send("No Users found") - } - -} - -const getUserByRole= async(body,res) => { - const user = await UserModel.find({fk_role: body.role}) - if(user){ - res.status(200).json(user) - }else{ - res.status(400).send("No Users found") - } - -} - -const deleteUsers= async(body,res) => { - const user = await UserModel.findOneAndDelete({_id: body.id}) - if(user){ - res.status(200).send("User delete success") - }else{ - res.status(400).send("User not found") - } - -} - - - - - -module.exports = {getAllUsers, getUserById, getUserByRole, deleteUsers} \ No newline at end of file diff --git a/API/controller/user/auth.js b/API/controller/user/auth.js index 01a139c..20e9edd 100644 --- a/API/controller/user/auth.js +++ b/API/controller/user/auth.js @@ -38,27 +38,31 @@ const login = async(body,res) => { // Find if user exist console.log(email) const user = await UserModel.findOne({email: email }); - console.log(user) - const RoleUser = await RoleModel.findOne({_id: user.fk_role}) - //if my user exist and the password match - if (user && (await bcrypt.compare(password, user.password)) && RoleUser.name == "user") { - // Create token - const token = jwt.sign( - { user_id: user._id, email }, - process.env.TS, - { - expiresIn: "7h", - } - ); + if (user) { + console.log(user) + const RoleUser = await RoleModel.findOne({_id: user.fk_role}) + //if my user exist and the password match + if (user && (await bcrypt.compare(password, user.password)) && RoleUser.name == "user") { + // Create token + const token = jwt.sign( + { user_id: user._id, email }, + process.env.TS, + { + expiresIn: "7h", + } + ); - // save user token - user.token = token; - user.save() + // save user token + user.token = token; + user.save() - // user - res.status(200).json({message: user.token}); - }else { - res.status(400).send("Invalid Credentials") + // user + res.status(200).json({message: user.token}); + }else { + res.status(400).send("Invalid Credentials") + } + } else { + res.status(400).send("User not found"); } } @@ -82,9 +86,9 @@ const getProfile = async(req, res) => { if (token) { const user = await UserModel.findOne({token}) if (!user) { - return res.status(403).send("Something wrong with your request"); + res.status(403).send("Something wrong with your request"); } - return res.status(200).json({ + res.status(200).json({ id: user._id, email: user.email, lastname: user.lastname, @@ -93,8 +97,40 @@ const getProfile = async(req, res) => { phone: user.phonenumber, }) } else { - return res.status(403).send("You need a token"); + res.status(403).send("You need a token"); + } +} + +const updateProfile = async(req, res) => { + const token = req.headers["authorization"]; + if (token) { + const user = await UserModel.findOne({token}) + if (!user){ + res.status(403).send("Something wrong with your request"); + } + + if(req.body.firstname) { + user.firstname = req.body.firstname + } + if(req.body.lastname) { + user.lastname = req.body.lastname + } + if(req.body.pseudo) { + user.pseudo = req.body.pseudo + } + if(req.body.phonenumber) { + user.phonenumber = req.body.phonenumber + } + if(req.body.email) { + user.email = req.body.email + } + + user.save() + + res.status(200).send({message: "Successfully updated"}) + } else { + res.status(403).send("You need a token"); } } -module.exports = {signUp, login, logout, getProfile} \ No newline at end of file +module.exports = {signUp, login, logout, getProfile, updateProfile} \ No newline at end of file diff --git a/API/helper/authtoken.js b/API/helper/authtoken.js index cb43443..c89fefe 100644 --- a/API/helper/authtoken.js +++ b/API/helper/authtoken.js @@ -4,10 +4,7 @@ const UserModel = require("../model/user.js") const config = process.env; const isAuthorized = async (req, res, next) => { - var token = req.headers["authorization"]; - if (token.includes("Bearer")) { - token = token.replace("Bearer ", ""); - } + const token = req.headers["authorization"]; const user = await UserModel.findOne({token}) if (!token || !user) { return res.status(403).send("Something wrong with your request"); diff --git a/API/model/place.js b/API/model/place.js deleted file mode 100644 index bacd0a8..0000000 --- a/API/model/place.js +++ /dev/null @@ -1,20 +0,0 @@ -const mongoose = require('mongoose'); - -const PlaceSchema = new mongoose.Schema( - { - name: { - type: String, - default: "" - }, - city: { - type: String, - default: "" - }, - cp: { - type: Number, - default: "" - }, - } - ); - const place = mongoose.model("places", PlaceSchema) - module.exports = place \ No newline at end of file diff --git a/API/model/placelinkschedules.js b/API/model/placelinkschedules.js deleted file mode 100644 index 2c1a1ea..0000000 --- a/API/model/placelinkschedules.js +++ /dev/null @@ -1,20 +0,0 @@ -const mongoose = require('mongoose'); - -const SLPSchema = new mongoose.Schema( - { - idPlace: { - type: String, - default: "" - }, - time: { - type: String, - default: "" - }, - day :{ - type: String, - default: "" - } - } - ); - const slp = mongoose.model("scheduleslinkplaces", SLPSchema) - module.exports = slp \ No newline at end of file diff --git a/API/model/role.js b/API/model/role.js index 9f9fa43..cad5286 100644 --- a/API/model/role.js +++ b/API/model/role.js @@ -8,5 +8,5 @@ const RoleSchema = new mongoose.Schema( }, } ); -const role = mongoose.model("roles", RoleSchema) -module.exports = role \ No newline at end of file + const role = mongoose.model("roles", RoleSchema) + module.exports = role \ No newline at end of file diff --git a/API/model/schedules.js b/API/model/schedules.js deleted file mode 100644 index b5148cf..0000000 --- a/API/model/schedules.js +++ /dev/null @@ -1,12 +0,0 @@ -const mongoose = require('mongoose'); - -const SchedulesSchema = new mongoose.Schema( - { - day: { - type: String, - default: "" - } - } - ); - const schedules = mongoose.model("schedules", SchedulesSchema) - module.exports = schedules \ No newline at end of file diff --git a/API/model/service.js b/API/model/service.js deleted file mode 100644 index 9cf92ec..0000000 --- a/API/model/service.js +++ /dev/null @@ -1,16 +0,0 @@ -const mongoose = require('mongoose'); - -const ServiceSchema = new mongoose.Schema( - { - name: { - type: String, - default: "" - }, - price: { - type: Number, - default: "" - }, - } - ); - const service = mongoose.model("services", ServiceSchema) - module.exports = service \ No newline at end of file diff --git a/API/package.json b/API/package.json index 3ef03e9..467d5da 100644 --- a/API/package.json +++ b/API/package.json @@ -17,8 +17,6 @@ "jsonwebtoken": "^8.5.1", "mongoose": "^5.9.22", "morgan": "^1.10.0", - "nodemon": "^2.0.16", - "swagger-jsdoc": "^6.2.3", - "swagger-ui-express": "^4.5.0" + "nodemon": "^2.0.16" } } diff --git a/API/routes/admin.js b/API/routes/admin.js index fbe9417..0c02bed 100644 --- a/API/routes/admin.js +++ b/API/routes/admin.js @@ -1,14 +1,9 @@ const express = require('express'); const isAuthorized = require("../helper/authtoken") const auth = require("../controller/admin/auth.js") -const user = require("../controller/admin/user.js") -const service = require("../controller/admin/service.js") -const place = require("../controller/admin/place.js") const router = express.Router() -//User routes - router.post('/welcome', async (req, res) => { await auth.login(req.body,res) }) @@ -17,163 +12,6 @@ router.post('/bye', isAuthorized, async(req, res) => { await auth.logout(req,res) }) -router.get('/getUsers', isAuthorized, async(req,res) => { - await user.getAllUsers(req,res) -}) - -router.post('/getUserById',isAuthorized,async(req,res) => { - await user.getUserById(req.body, res) -}) - -router.post('/getUserByRole',isAuthorized, async(req,res) => { - await user.getUserByRole(req.body, res) -}) - -router.delete('/deleteUsers', isAuthorized, async(req,res) => { - await user.deleteUsers(req.body,res) -}) -//Service Routes -router.post('/addService', isAuthorized, async(req,res) => { - await service.addService(req.body,res) -}) - -router.get('/getService', isAuthorized, async(req,res) => { - await service.getService(res) -}) - -router.post('/getServiceById', isAuthorized, async(req,res) => { - await service.getServiceById(req.body, res) -}) - -router.patch('/updateService', isAuthorized, async(req,res) => { - await service.updateService(req.body, res) -}) - -router.delete('/deleteService', isAuthorized, async(req,res) => { - await service.deleteService(req.body, res) -}) - -//Lieux routes - -router.post('/createPlace',isAuthorized, async(req,res) => { - await place.addPlace(req.body,res) -}) - -router.get('/getPlace', isAuthorized, async(req,res) => { - await place.getPlace(res) -}) - -router.post('/getPlaceById', isAuthorized, async(req,res) => { - await place.getPlaceById(req.body, res) -}) - -router.patch('/updatePlace', isAuthorized, async(req,res) => { - await place.updatePlace(req.body, res) -}) - -router.delete('/deletePlace', isAuthorized, async(req,res) => { - await place.deletePlace(req.body, res) -}) - -/** - * @swagger - * components: - * schemas: - * AdminLogin: - * type: object - * required: - * - email - * - password - * properties: - * email: - * type: string - * description: The admin email - * password: - * type: string - * description: The admin password - * example: - * email: yone4life@gmail.com - * password: YoneBtcEth - */ - -/** - * @swagger - * components: - * schemas: - * AdminToken: - * type: object - * properties: - * token: - * type: string - * description: The admin token - * example: - * token: JhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlYmJlZGZhMmRi... - */ - -/** - * @swagger - * components: - * securitySchemes: - * bearerAuth: - * type: http - * scheme: bearer - * bearerFormat: JWT - */ - - /** - * @swagger - * tags: - * name: Admin - * description: Admin management - */ - - -/** - * @swagger - * /welcome: - * post: - * summary: Login a admin - * tags: [Admin] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/AdminLogin' - * responses: - * 200: - * description: The admin was successfully login - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/AdminToken' - * 500: - * description: Internal server error - */ - -/** - * @swagger - * /bye: - * post: - * summary: Logout a admin - * tags: [Admin] - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: The admin was successfully disconnected - * content: - * text/html: - * schema: - * type: string - * required: true - * description: confirm logout - * example: "you are disconnected" - * 500: - * description: Internal server error - */ - - module.exports = router \ No newline at end of file diff --git a/API/routes/user.js b/API/routes/user.js index d99d8e1..748993a 100644 --- a/API/routes/user.js +++ b/API/routes/user.js @@ -3,199 +3,26 @@ const isAuthorized = require("../helper/authtoken") const auth = require("../controller/user/auth.js") const router = express.Router() - router.post('/login', async (req, res) => { - await auth.login(req.body, res) + await auth.login(req.body,res) }) - - router.post('/signUp', async (req, res) => { - await auth.signUp(req.body, res) -}) - + await auth.signUp(req.body,res) +}) -router.post('/logout', isAuthorized, async (req, res) => { - await auth.logout(req, res) +router.post('/logout', isAuthorized, async(req, res) => { + await auth.logout(req,res) }) router.get('/getProfile', isAuthorized, async(req, res) => { await auth.getProfile(req,res) }) +router.put('/updateProfile', isAuthorized, async(req, res) => { + await auth.updateProfile(req, res) +}) -// Define the User schema in the swagger, we will use it in endpoints descriptions - -/** - * @swagger - * components: - * schemas: - * User: - * type: object - * required: - * - firstname - * - lastname - * - phonenumber - * - pseudo - * - email - * - password - * properties: - * id: - * type: string - * description: The auto-generated id of the book - * firstname: - * type: string - * description: The user firstname - * lastname: - * type: string - * description: The user lastname - * phonenumber: - * type: string - * description: The user phone number - * pseudo: - * type: string - * description: The user pseudo - * email: - * type: string - * description: The user email - * password: - * type: string - * description: The user password - * token: - * type: string - * description: The user token for authentication - * fk_role: - * type: string - * description: The user role - * example: - * id: 2e79c624d47102bb0cc16 - * firstname: Tagri - * lastname: Hokuto - * phonenumber: 0601020304 - * pseudo: Yone_btc - * email: yone4life@gmail.com - * password: YoneBtcEth - */ - -/** - * @swagger - * components: - * schemas: - * UserLogin: - * type: object - * required: - * - email - * - password - * properties: - * email: - * type: string - * description: The user email - * password: - * type: string - * description: The user password - * example: - * email: gkata@gmail.com - * password: "123456" - */ - -/** - * @swagger - * components: - * schemas: - * UserToken: - * type: object - * properties: - * token: - * type: string - * description: The user token - * example: - * token: JhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNjJlYmJlZGZhMmRi... - */ - - /** - * @swagger - * tags: - * name: User - * description: User management - */ - - /** - * @swagger - * components: - * securitySchemes: - * bearerAuth: - * type: http - * scheme: bearer - * bearerFormat: JWT - */ - -/** - * @swagger - * /login: - * post: - * summary: Login a user - * tags: [User] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/UserLogin' - * responses: - * 200: - * description: The user was successfully login - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/UserToken' - * 500: - * description: Internal server error - */ - -/** - * @swagger - * /signUp: - * post: - * summary: Create a new user - * tags: [User] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * responses: - * 200: - * description: The user was successfully created - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * 500: - * description: Internal server error - */ - -/** - * @swagger - * /logout: - * post: - * summary: Logout a user - * tags: [User] - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: The user was successfully disconnected - * content: - * text/html: - * schema: - * type: string - * required: true - * description: confirm logout - * example: "you are disconnected" - * 500: - * description: Internal server error - */ module.exports = router \ No newline at end of file diff --git a/API/server.js b/API/server.js index 08de027..a3e2db2 100644 --- a/API/server.js +++ b/API/server.js @@ -5,8 +5,7 @@ const dotenv = require('dotenv') const mongoose = require('mongoose'); const morgan = require('morgan') const bodyparser = require('body-parser') -const swaggerJsDoc = require('swagger-jsdoc') -const swaggerUiExpress = require('swagger-ui-express') + dotenv.config() const app = express() @@ -16,34 +15,7 @@ const password = process.env.DBPWD const dbname = process.env.DBNAME -// Options are use by swagger-js-doc -const options = { - definition: { - openapi: '3.0.0', - info: { - title: 'CoWork API Documentation', - version: '1.0.0', - description: 'API Documentation for CoWork Project', - contact: { - name: 'CoWork API', - url: '', - https: '//swagger.io', - email: '', - }, - }, - - servers: [ - { - url: 'http://localhost:8081/', - } - ], - }, - apis: [ - './routes/*.js', - ], -}; -const specs = swaggerJsDoc(options) // Middleware app.use(bodyparser.json()) @@ -67,7 +39,6 @@ db.once("open", function () { app.use(routeruser); app.use(routeradmin) -app.use("/api-docs", swaggerUiExpress.serve, swaggerUiExpress.setup(specs)) app.listen(process.env.PORT || 8080, () => { console.log(`server listen at ${port}`) diff --git a/CoWorkApp/CoWorkApp.xcodeproj/project.xcworkspace/xcuserdata/alex.xcuserdatad/UserInterfaceState.xcuserstate b/CoWorkApp/CoWorkApp.xcodeproj/project.xcworkspace/xcuserdata/alex.xcuserdatad/UserInterfaceState.xcuserstate index 7c6804c9817f637e930e10e023a6d1d66c077eb6..007ba0e52ee4c7ee1a38c3cc7d250d616c1bf29d 100644 GIT binary patch delta 22 ecmZoT$I@_)Wy4}MmM>S%?r2`FHhsAoV Date: Sun, 4 Sep 2022 17:04:25 +0200 Subject: [PATCH 2/2] Add button --- CoWorkApp/CoWorkApp.xcodeproj/project.pbxproj | 4 + .../UserInterfaceState.xcuserstate | Bin 75520 -> 74761 bytes CoWorkApp/CoWorkApp/View/userEditRent.swift | 72 ++++++++++++++++++ CoWorkApp/CoWorkApp/View/userProfile.swift | 36 ++++++++- 4 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 CoWorkApp/CoWorkApp/View/userEditRent.swift diff --git a/CoWorkApp/CoWorkApp.xcodeproj/project.pbxproj b/CoWorkApp/CoWorkApp.xcodeproj/project.pbxproj index 1065af9..5500fb7 100644 --- a/CoWorkApp/CoWorkApp.xcodeproj/project.pbxproj +++ b/CoWorkApp/CoWorkApp.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ FA6B273528AFD7FD00507AA4 /* CoWorkApp.xcodeproj in Resources */ = {isa = PBXBuildFile; fileRef = FA6B273428AFD7FD00507AA4 /* CoWorkApp.xcodeproj */; }; FA6B273C28AFD8D600507AA4 /* Comfortaa.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FA6B273B28AFD8D600507AA4 /* Comfortaa.ttf */; }; FA6B273E28AFD8DF00507AA4 /* BungeeShade.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FA6B273D28AFD8DF00507AA4 /* BungeeShade.ttf */; }; + FAD4065528C4DE3F0083320B /* userEditRent.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD4065428C4DE3F0083320B /* userEditRent.swift */; }; FAE2D95828C23FC000A47606 /* userEditProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAE2D95728C23FC000A47606 /* userEditProfile.swift */; }; FAE2D95A28C2400D00A47606 /* UserProfileService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAE2D95928C2400D00A47606 /* UserProfileService.swift */; }; FAE2D95C28C2401400A47606 /* UserLogoutService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAE2D95B28C2401400A47606 /* UserLogoutService.swift */; }; @@ -44,6 +45,7 @@ FA6B273428AFD7FD00507AA4 /* CoWorkApp.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = CoWorkApp.xcodeproj; sourceTree = SOURCE_ROOT; }; FA6B273B28AFD8D600507AA4 /* Comfortaa.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Comfortaa.ttf; sourceTree = ""; }; FA6B273D28AFD8DF00507AA4 /* BungeeShade.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = BungeeShade.ttf; sourceTree = ""; }; + FAD4065428C4DE3F0083320B /* userEditRent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = userEditRent.swift; sourceTree = ""; }; FAE2D95728C23FC000A47606 /* userEditProfile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = userEditProfile.swift; sourceTree = ""; }; FAE2D95928C2400D00A47606 /* UserProfileService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserProfileService.swift; sourceTree = ""; }; FAE2D95B28C2401400A47606 /* UserLogoutService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserLogoutService.swift; sourceTree = ""; }; @@ -142,6 +144,7 @@ FAEE3CAD28BA8ADC00A4A67D /* userProfile.swift */, FAE2D95728C23FC000A47606 /* userEditProfile.swift */, FAEE3CAF28BA8BD800A4A67D /* userRent.swift */, + FAD4065428C4DE3F0083320B /* userEditRent.swift */, FAEE3CB128BA8C4900A4A67D /* logout.swift */, ); path = View; @@ -290,6 +293,7 @@ FAEE3C9128B3744000A4A67D /* signIn.swift in Sources */, FAEE3CB028BA8BD800A4A67D /* userRent.swift in Sources */, FAEE3CB228BA8C4900A4A67D /* logout.swift in Sources */, + FAD4065528C4DE3F0083320B /* userEditRent.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/CoWorkApp/CoWorkApp.xcodeproj/project.xcworkspace/xcuserdata/alex.xcuserdatad/UserInterfaceState.xcuserstate b/CoWorkApp/CoWorkApp.xcodeproj/project.xcworkspace/xcuserdata/alex.xcuserdatad/UserInterfaceState.xcuserstate index 007ba0e52ee4c7ee1a38c3cc7d250d616c1bf29d..8ac3e2dcb9d141fb780e7dfaed01cb5430c39d79 100644 GIT binary patch literal 74761 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 vwuHAtw?!aN+)y-&6pj`uPE0U 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