- Added add user methods (will need polish imo)
This commit is contained in:
@@ -128,10 +128,6 @@ INSERT INTO `role` (name, description) VALUES
|
|||||||
("Arcanologue", "Maîtres de l'arcane, ils ont le pouvoir et la responsabilité de juger les sortilèges récents et de les supprimer, ou valider."),
|
("Arcanologue", "Maîtres de l'arcane, ils ont le pouvoir et la responsabilité de juger les sortilèges récents et de les supprimer, ou valider."),
|
||||||
("Augure", "Régents des grimoires, ils ont droit d'accès à l'intégralité des informations connues, et pouvoir absolu sur le savoir arcanique.");
|
("Augure", "Régents des grimoires, ils ont droit d'accès à l'intégralité des informations connues, et pouvoir absolu sur le savoir arcanique.");
|
||||||
|
|
||||||
-- USERS
|
|
||||||
INSERT INTO `user` (uuid, name, mail, password, role_id) VALUES
|
|
||||||
("6af978f0-96ed-11e8-bb38-37f5ae311cf6", "Izàc Tymos", "tymos@ambrose.edu", "root", 4);
|
|
||||||
|
|
||||||
-- META SCHOOLS
|
-- META SCHOOLS
|
||||||
INSERT INTO `meta_school` (name, description) VALUES
|
INSERT INTO `meta_school` (name, description) VALUES
|
||||||
('Magies blanches', 'Magies disciplinant les arts de soins et de lumières.'),
|
('Magies blanches', 'Magies disciplinant les arts de soins et de lumières.'),
|
||||||
|
|||||||
@@ -33,13 +33,12 @@ class UserRepository {
|
|||||||
resolve(v.toJSON({ omitPivot: true }))
|
resolve(v.toJSON({ omitPivot: true }))
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.log(err)
|
|
||||||
reject(new HttpError(500, "Couldn't get users"))
|
reject(new HttpError(500, "Couldn't get users"))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
getOneFromUUID(uuid) {
|
getOneByUUID(uuid) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
model.forge()
|
model.forge()
|
||||||
.where({ 'uuid' : uuid })
|
.where({ 'uuid' : uuid })
|
||||||
@@ -48,12 +47,37 @@ class UserRepository {
|
|||||||
resolve(v.toJSON({ omitPivot: true }))
|
resolve(v.toJSON({ omitPivot: true }))
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.log(err)
|
|
||||||
reject(new HttpError(500, "Couldn't get user"))
|
reject(new HttpError(500, "Couldn't get user"))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getOneByEmail(mail) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
model.forge()
|
||||||
|
.where({ 'mail': mail})
|
||||||
|
.fetch()
|
||||||
|
.then(v => {
|
||||||
|
resolve(v.toJSON({ omitPivot: true }))
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
reject(new HttpError(500, "Couldn't get user"))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
checkIfEmailAvailable(mail) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.getOneByEmail(mail)
|
||||||
|
.then(() => {
|
||||||
|
reject(false)
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
resolve(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
addOne(u) {
|
addOne(u) {
|
||||||
return new Promise(async (resolve, reject) => {
|
return new Promise(async (resolve, reject) => {
|
||||||
// Checks if body exists and if the model fits, and throws errors if it doesn't
|
// Checks if body exists and if the model fits, and throws errors if it doesn't
|
||||||
@@ -67,22 +91,32 @@ class UserRepository {
|
|||||||
let hash = await bcrypt.hash(u.password, 10)
|
let hash = await bcrypt.hash(u.password, 10)
|
||||||
let uuid = uuidv4()
|
let uuid = uuidv4()
|
||||||
|
|
||||||
// Needs to account for duplicate emails
|
this.checkIfEmailAvailable(u.mail)
|
||||||
bookshelf.transaction(t => {
|
.then(() => {
|
||||||
return model.forge({
|
bookshelf.transaction(t => {
|
||||||
'uuid': uuid,
|
return model.forge({
|
||||||
'name': u.name,
|
'uuid': uuid,
|
||||||
'mail': u.mail,
|
'name': u.name,
|
||||||
'password': hash,
|
'mail': u.mail,
|
||||||
|
'password': hash,
|
||||||
|
})
|
||||||
|
.save(null, {
|
||||||
|
transacting: t
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.log(err)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
.save(null, {
|
.then(v => {
|
||||||
transacting: t
|
resolve(this.getOneByUUID(uuid))
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.log(err)
|
throw err
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
.catch(() => {
|
||||||
|
reject(new HttpError(403, 'Email is already in use !'))
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,15 +39,15 @@ router.get('/', async (req, res) => {
|
|||||||
|
|
||||||
|
|
||||||
// GET ONE FORM UUID ------------------
|
// GET ONE FORM UUID ------------------
|
||||||
const getUserFromUUID = (uuid) => {
|
const getUserByUUID = (uuid) => {
|
||||||
return Users.getOneFromUUID(uuid)
|
return Users.getOneByUUID(uuid)
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
throw err
|
throw err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
router.get('/:uuid/', async (req, res) => {
|
router.get('/:uuid/', async (req, res) => {
|
||||||
getUserFromUUID(req.params.uuid)
|
getUserByUUID(req.params.uuid)
|
||||||
.then(v => {
|
.then(v => {
|
||||||
res.setHeader('Content-Type', 'application/json;charset=utf-8')
|
res.setHeader('Content-Type', 'application/json;charset=utf-8')
|
||||||
res.end(JSON.stringify(v))
|
res.end(JSON.stringify(v))
|
||||||
@@ -67,7 +67,6 @@ router.get('/:uuid/', async (req, res) => {
|
|||||||
const addUser = (u) => {
|
const addUser = (u) => {
|
||||||
return Users.addOne(u)
|
return Users.addOne(u)
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.log(err)
|
|
||||||
throw err
|
throw err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user