summaryrefslogtreecommitdiff
path: root/app/server
diff options
context:
space:
mode:
Diffstat (limited to 'app/server')
-rw-r--r--app/server/db/model.js55
-rw-r--r--app/server/db/models.js4
-rw-r--r--app/server/util/auth.js55
3 files changed, 54 insertions, 60 deletions
diff --git a/app/server/db/model.js b/app/server/db/model.js
index dd851bf..c829c85 100644
--- a/app/server/db/model.js
+++ b/app/server/db/model.js
@@ -17,9 +17,8 @@ module.exports = function modelScope(type, db_model, _props) {
crud: crud,
index: (query) => {
-
- return new Promise( (resolve, reject) => {
- crud.index(query).then( (data) => {
+ return new Promise((resolve, reject) => {
+ crud.index(query).then(data => {
if (! props.hasOne) {
resolve(data ? data.toJSON() : [])
@@ -27,13 +26,13 @@ module.exports = function modelScope(type, db_model, _props) {
else {
let recs = data.toJSON()
const loader = new Loader ()
- loader.onReady( () => {
+ loader.onReady(() => {
// console.log(type, 'ready')
resolve(recs)
})
// console.log('hasOne')
loader.register('hasOne')
- Object.keys(props.hasOne).forEach( (key,i) => {
+ Object.keys(props.hasOne).forEach((key, i) => {
loader.register(key)
// console.log('register', key)
const type = props.hasOne[key]
@@ -45,7 +44,7 @@ module.exports = function modelScope(type, db_model, _props) {
})
// console.log('\n\n%%%%%%%%%%%%%%%%%%%%%%%% index > hasOne ' + key + '\n\n\n')
// console.log(recs.length, Object.keys(id_lookup).length)
- db_crud(type).show_ids(Object.keys(id_lookup)).then( (sub_recs) => {
+ db_crud(type).show_ids(Object.keys(id_lookup)).then(sub_recs => {
// console.log(key, 'sub_recs', sub_recs)
const short_key = key.replace('_id','')
sub_recs.toJSON().forEach(rec => {
@@ -57,49 +56,51 @@ module.exports = function modelScope(type, db_model, _props) {
})
loader.ready('hasOne')
}
- }) // }).catch( () => res.sendStatus(500) )
+ })
})
},
- show: (id) => {
- return new Promise( (resolve, reject) => {
- crud.show(id).then( (data) => {
- if (! props.hasOne) {
+ show: (id, field = 'id') => {
+ return new Promise((resolve, reject) => {
+ crud.show(id, field).then(data => {
+ if (!data) {
+ resolve()
+ } else if (! props.hasOne) {
resolve(data.toJSON())
}
else {
let rec = data.toJSON()
const loader = new Loader ()
- loader.onReady( () => {
+ loader.onReady(() => {
resolve(rec)
})
loader.register('hasOne')
- Object.keys(props.hasOne).forEach( (key,i) => {
+ Object.keys(props.hasOne).forEach((key, i) => {
loader.register(key)
const type = props.hasOne[key]
- db_crud(type).show(rec[key + '_id']).then( (sub_rec) => {
+ db_crud(type).show(rec[key + '_id']).then((sub_rec) => {
rec[key] = sub_rec
loader.ready(key)
})
})
loader.ready('hasOne')
}
- }) // .catch( (err) => res.sendStatus(500) )
+ })
})
},
findOrCreate: (data) => {
- return new Promise( (resolve, reject) => {
+ return new Promise((resolve, reject) => {
let query = Object.assign({}, data)
query.limit = 1
- crud.index(query).then( (recs) => {
+ crud.index(query).then((recs) => {
if (recs && recs.length) {
const rec = recs.at(0)
// console.log('found rec', data.name)
return resolve(rec)
}
// console.log('creating rec', data.name)
- model.create(data).then( (rec) => {
+ model.create(data).then((rec) => {
resolve(rec)
})
})
@@ -107,12 +108,12 @@ module.exports = function modelScope(type, db_model, _props) {
},
create: (data) => {
- return new Promise( (resolve, reject) => {
+ return new Promise((resolve, reject) => {
const should_relay = data.should_relay === 'true'
- crud.create( model.sanitize(data) ).then( (rec) => {
+ crud.create( model.sanitize(data) ).then((rec) => {
resolve(rec.toJSON())
props.afterCreate && props.afterCreate(rec, should_relay)
- }).catch( (e) => {
+ }).catch(e => {
console.error('error creating', e)
reject()
})
@@ -121,10 +122,10 @@ module.exports = function modelScope(type, db_model, _props) {
update: (id, data) => {
// console.log('update', id)
- return new Promise( (resolve, reject) => {
- crud.update(id, model.sanitize(data)).then( (data) => {
+ return new Promise((resolve, reject) => {
+ crud.update(id, model.sanitize(data)).then(data => {
resolve(data.toJSON())
- }).catch( (e) => {
+ }).catch(e => {
console.error('error updating', e)
reject()
})
@@ -132,7 +133,7 @@ module.exports = function modelScope(type, db_model, _props) {
},
destroy: (id) => {
- return new Promise( (resolve, reject) => {
+ return new Promise((resolve, reject) => {
crud.show(id).then( data => {
if (! data) {
console.error('no record found', id)
@@ -141,9 +142,9 @@ module.exports = function modelScope(type, db_model, _props) {
if (type === 'file') {
upload.destroyFile(data)
}
- crud.destroy(id).then( (destroyData) => {
+ crud.destroy(id).then((destroyData) => {
resolve(data.toJSON())
- })// .catch( () => res.sendStatus(500) )
+ })
})
})
},
diff --git a/app/server/db/models.js b/app/server/db/models.js
index 24be774..8bf6d9a 100644
--- a/app/server/db/models.js
+++ b/app/server/db/models.js
@@ -21,7 +21,7 @@ let Task = bookshelf.Model.extend({
jsonColumns: ['opt'],
})
let User = bookshelf.Model.extend({
- tableName: 'user',
+ tableName: 'users',
hasTimestamps: true,
}, {
jsonColumns: ['profile'],
@@ -61,7 +61,7 @@ module.exports = {
// bridge.processTasks()
}
}),
- user: model('user', Task, {
+ user: model('user', User, {
fields: "username password realname level avatar lastseen profile created_at updated_at".split(" "),
afterCreate: (user) => {
console.log('created user')
diff --git a/app/server/util/auth.js b/app/server/util/auth.js
index d280927..fde0263 100644
--- a/app/server/util/auth.js
+++ b/app/server/util/auth.js
@@ -1,8 +1,9 @@
-let passport = require('passport')
-let LocalStrategy = require('passport-local').Strategy
-let crypto = require('crypto')
-// let fs = require('fs')
-let db = require('../db')
+import passport from 'passport'
+import { Strategy as LocalStrategy } from 'passport-local'
+import crypto from 'crypto'
+import db from '../db'
+
+const { user: userModel } = db.models
export function route(app, serve_index){
passport.serializeUser(serializeUser)
@@ -36,32 +37,38 @@ export function ensureAuthenticated(req, res, next) {
}
export function checkIfUserExists(req, res, next) {
- db.getUserByUsername(sanitizeName(req.body.username)).then((user) => {
+ userModel.show(sanitizeName(req.body.username), 'username').then((user) => {
+ console.log('gotta user?', !!user);
user ? res.json({ error: "user exists" }) : next()
+ }).catch(err => {
+ console.error('error', err)
})
}
-export function sanitizeName(s) { return (s || "").replace(new RegExp("[^-_a-zA-Z0-9]", 'g'), "") }
+export function sanitizeName(s) { return (s || "").replace(new RegExp('[^-_a-zA-Z0-9]', 'g'), "") }
export function sanitizeUser(req_user) {
// sanitize user object
- var user = JSON.parse(JSON.stringify(req_user))
+ let user = JSON.parse(JSON.stringify(req_user))
delete user.password
return user
}
export function createUser(req, res, next) {
- if (req.body.password !== req.body.password2) {
+ const { username, password, password2 } = req.body
+ if (password !== password2) {
return res.json({ error: "passwords don't match" })
}
let data = {
- username: sanitizeName(req.body.username),
- realname: sanitize(req.body.realname),
- password: makePassword(username, req.body.password),
- firstseen: new Date(),
+ username: sanitizeName(username),
+ realname: sanitizeName(username),
+ password: makePassword(username, password),
lastseen: new Date(),
- // lastsession: util.now(),
+ level: 0,
+ profile: {},
}
- db.createUser(data).then(() => next())
+ userModel.create(data)
+ .then(user => next(user))
+ .catch(err => res.json({ error }))
}
export function login(req, res) {
@@ -101,11 +108,11 @@ export function validPassword(user, password) {
}
export function changePassword(req, res, next) {
- if (! req.body.oldpassword && ! req.body.newpassword) return next()
+ if (!req.body.oldpassword && !req.body.newpassword) return next()
if (req.body.newpassword !== req.body.newpassword2) {
return res.send({ error: 'Passwords don\'t match.' })
}
- if (! validPassword(res.user, req.body.oldpassword)) {
+ if (!validPassword(res.user, req.body.oldpassword)) {
return res.send({ error: 'Password is incorrect.' })
}
let username = req.user.get('username')
@@ -113,19 +120,6 @@ export function changePassword(req, res, next) {
res.user.set('password', newPassword)
res.user.save().then(() => next()).catch(err => res.send({ error: err }))
}
-export function changePasswordDangerously(req, res, next) {
- if (! req.body.password && ! req.body.newpassword) return next()
- if (req.body.newpassword !== req.body.newpassword2) {
- return res.send({ error: 'Passwords don\'t match.' })
- }
- if (! validPassword(req.user, req.body.password)) {
- return res.send({ error: 'Password is incorrect.' })
- }
- let username = res.user.get('username')
- let newPassword = makePassword(username, req.body.newpassword)
- res.user.set('password', newPassword)
- res.user.save().then(() => next()).catch(err => res.send({ error: err }))
-}
export function verifyLocalUser(username, password, done) {
// handle passwords!!
@@ -142,7 +136,6 @@ export function verifyLocalUser(username, password, done) {
})
}
-
export function checkin(req, res) {
res.json({ user: sanitizeUser(req.user) })
}