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

View File

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

View File

@ -655,9 +655,9 @@ function newsPrivilege (req, res, next) {
next()
}
router.get('/news/compose', newsPrivilege, formKeep, wrap(async (req, res) => {
router.get('/news/compose', newsPrivilege, formKeep, (req, res) => {
res.render('news/composer')
}))
})
router.post('/news/compose', newsPrivilege, wrap(async (req, res) => {
if (req.body.csrf !== req.session.csrf) {
@ -708,11 +708,11 @@ router.get('/news/', wrap(async (req, res) => {
}))
// Render partials
router.get('/partials/:view', wrap(async (req, res, next) => {
router.get('/partials/:view', (req, res, next) => {
if (!req.params.view) return next()
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()
res.redirect('/')
}))
})
// User activation endpoint (emailed link)
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 = {
id: user.id,
uuid: user.uuid,
username: user.username,
display_name: user.display_name,
avatar_file: user.avatar_file