- Added add user methods (will need polish imo)

This commit is contained in:
Alexis
2020-07-03 21:44:01 +02:00
parent 3f82b487dc
commit e6f0ee38aa
3 changed files with 51 additions and 22 deletions

View File

@@ -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."),
("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
INSERT INTO `meta_school` (name, description) VALUES
('Magies blanches', 'Magies disciplinant les arts de soins et de lumières.'),

View File

@@ -33,13 +33,12 @@ class UserRepository {
resolve(v.toJSON({ omitPivot: true }))
})
.catch(err => {
console.log(err)
reject(new HttpError(500, "Couldn't get users"))
})
})
}
getOneFromUUID(uuid) {
getOneByUUID(uuid) {
return new Promise((resolve, reject) => {
model.forge()
.where({ 'uuid' : uuid })
@@ -48,12 +47,37 @@ class UserRepository {
resolve(v.toJSON({ omitPivot: true }))
})
.catch(err => {
console.log(err)
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) {
return new Promise(async (resolve, reject) => {
// Checks if body exists and if the model fits, and throws errors if it doesn't
@@ -67,7 +91,8 @@ class UserRepository {
let hash = await bcrypt.hash(u.password, 10)
let uuid = uuidv4()
// Needs to account for duplicate emails
this.checkIfEmailAvailable(u.mail)
.then(() => {
bookshelf.transaction(t => {
return model.forge({
'uuid': uuid,
@@ -82,7 +107,16 @@ class UserRepository {
console.log(err)
})
})
.then(v => {
resolve(this.getOneByUUID(uuid))
})
.catch(err => {
throw err
})
})
.catch(() => {
reject(new HttpError(403, 'Email is already in use !'))
})
}
})
}

View File

@@ -39,15 +39,15 @@ router.get('/', async (req, res) => {
// GET ONE FORM UUID ------------------
const getUserFromUUID = (uuid) => {
return Users.getOneFromUUID(uuid)
const getUserByUUID = (uuid) => {
return Users.getOneByUUID(uuid)
.catch(err => {
console.log(err)
throw err
})
}
router.get('/:uuid/', async (req, res) => {
getUserFromUUID(req.params.uuid)
getUserByUUID(req.params.uuid)
.then(v => {
res.setHeader('Content-Type', 'application/json;charset=utf-8')
res.end(JSON.stringify(v))
@@ -67,7 +67,6 @@ router.get('/:uuid/', async (req, res) => {
const addUser = (u) => {
return Users.addOne(u)
.catch(err => {
console.log(err)
throw err
})
}