mirror of https://github.com/kern/filepizza
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
663 B
JavaScript
40 lines
663 B
JavaScript
import bases from 'bases'
|
|
import crypto from 'crypto'
|
|
import xkcdPassword from 'xkcd-password'
|
|
|
|
const TOKEN_OPTIONS = {
|
|
numWords: 4,
|
|
minLength: 4,
|
|
maxLength: 8
|
|
}
|
|
|
|
var tokenGenerator = new xkcdPassword()
|
|
var tokens = {}
|
|
|
|
export function create(socket) {
|
|
|
|
return tokenGenerator.generate(TOKEN_OPTIONS).then((parts) => {
|
|
const token = parts.join('-')
|
|
let result = {
|
|
token: token,
|
|
socket: socket
|
|
}
|
|
|
|
tokens[token] = result
|
|
return result
|
|
})
|
|
|
|
}
|
|
|
|
export function exists(token) {
|
|
return token in tokens
|
|
}
|
|
|
|
export function find(token) {
|
|
return tokens[token]
|
|
}
|
|
|
|
export function remove(client) {
|
|
delete tokens[client.token]
|
|
}
|