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.
41 lines
717 B
JavaScript
41 lines
717 B
JavaScript
import toppings from './toppings'
|
|
import xkcdPassword from 'xkcd-password'
|
|
|
|
const TOKEN_OPTIONS = {
|
|
numWords: 4,
|
|
minLength: 3,
|
|
maxLength: 20
|
|
}
|
|
|
|
let tokens = {}
|
|
const tokenGenerator = new xkcdPassword()
|
|
tokenGenerator.initWithWordList(toppings)
|
|
|
|
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) {
|
|
if (client == null) return
|
|
delete tokens[client.token]
|
|
}
|