add UUIDs to users as another way of identification

This commit is contained in:
Evert Prants 2017-09-22 23:59:43 +03:00
parent d9940a0462
commit 3546ddcc43
Signed by: evert
GPG Key ID: 1688DA83D222D0B5
5 changed files with 34 additions and 7 deletions

View File

@ -0,0 +1,22 @@
exports.up = function (knex, Promise) {
return Promise.all([
knex.schema.table('users', (table) => {
table.string('uuid', 36)
}),
knex.schema.table('news', (table) => {
table.dropColumn('slug')
})
])
}
exports.down = function (knex, Promise) {
return Promise.all([
knex.schema.table('users', (table) => {
table.dropColumn('uuid')
}),
knex.schema.table('news', (table) => {
table.string('slug')
})
])
}

View File

@ -6,6 +6,7 @@ import qs from 'querystring'
import oauth from 'oauth-libre' import oauth from 'oauth-libre'
import path from 'path' import path from 'path'
import url from 'url' import url from 'url'
import uuidV1 from 'uuid/v1'
const imgdir = path.join(__dirname, '../../', 'usercontent', 'images') const imgdir = path.join(__dirname, '../../', 'usercontent', 'images')
@ -48,7 +49,8 @@ const API = {
let udataLimited = Object.assign({ let udataLimited = Object.assign({
activated: 1, activated: 1,
created_at: new Date(), created_at: new Date(),
updated_at: new Date() updated_at: new Date(),
uuid: uuidV1()
}, data) }, data)
// Check if the username is already taken // Check if the username is already taken

View File

@ -8,6 +8,7 @@ import crypto from 'crypto'
import notp from 'notp' import notp from 'notp'
import base32 from 'thirty-two' import base32 from 'thirty-two'
import emailer from './emailer' import emailer from './emailer'
import uuidV1 from 'uuid/v1'
import Promise from 'bluebird' import Promise from 'bluebird'
const fs = Promise.promisifyAll(require('fs')) const fs = Promise.promisifyAll(require('fs'))
@ -350,6 +351,7 @@ const API = {
let data = Object.assign(regdata, { let data = Object.assign(regdata, {
created_at: new Date(), created_at: new Date(),
updated_at: new Date(), updated_at: new Date(),
uuid: uuidV1(),
activated: email ? 0 : 1 activated: email ? 0 : 1
}) })

View File

@ -655,9 +655,9 @@ function newsPrivilege (req, res, next) {
next() next()
} }
router.get('/news/compose', newsPrivilege, formKeep, wrap(async (req, res) => { router.get('/news/compose', newsPrivilege, formKeep, (req, res) => {
res.render('news/composer') res.render('news/composer')
})) })
router.post('/news/compose', newsPrivilege, wrap(async (req, res) => { router.post('/news/compose', newsPrivilege, wrap(async (req, res) => {
if (req.body.csrf !== req.session.csrf) { if (req.body.csrf !== req.session.csrf) {
@ -708,11 +708,11 @@ router.get('/news/', wrap(async (req, res) => {
})) }))
// Render partials // Render partials
router.get('/partials/:view', wrap(async (req, res, next) => { router.get('/partials/:view', (req, res, next) => {
if (!req.params.view) return next() if (!req.params.view) return next()
res.render('user/partials/' + req.params.view) res.render('user/partials/' + req.params.view)
})) })
/* /*
========= =========
@ -720,10 +720,10 @@ router.get('/partials/:view', wrap(async (req, res, next) => {
========= =========
*/ */
router.get('/logout', wrap(async (req, res) => { router.get('/logout', (req, res) => {
req.session.destroy() req.session.destroy()
res.redirect('/') res.redirect('/')
})) })
// User activation endpoint (emailed link) // User activation endpoint (emailed link)
router.get('/activate/:token', wrap(async (req, res) => { router.get('/activate/:token', wrap(async (req, res) => {

View File

@ -41,6 +41,7 @@ router.get('/user', oauth.bearer, wrap(async (req, res) => {
let udata = { let udata = {
id: user.id, id: user.id,
uuid: user.uuid,
username: user.username, username: user.username,
display_name: user.display_name, display_name: user.display_name,
avatar_file: user.avatar_file avatar_file: user.avatar_file