|
|
|
@ -7,34 +7,52 @@ const TOKEN_OPTIONS = {
|
|
|
|
maxLength: 20
|
|
|
|
maxLength: 20
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const SHORT_TOKEN_OPTIONS = {
|
|
|
|
|
|
|
|
length: 8,
|
|
|
|
|
|
|
|
chars: '0123456789abcdefghijklmnopqrstuvwxyz'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let tokens = {}
|
|
|
|
let tokens = {}
|
|
|
|
|
|
|
|
let shortTokens = {}
|
|
|
|
|
|
|
|
|
|
|
|
const tokenGenerator = new xkcdPassword()
|
|
|
|
const tokenGenerator = new xkcdPassword()
|
|
|
|
tokenGenerator.initWithWordList(toppings)
|
|
|
|
tokenGenerator.initWithWordList(toppings)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function generateShortToken() {
|
|
|
|
|
|
|
|
var result = '';
|
|
|
|
|
|
|
|
for (var i = SHORT_TOKEN_OPTIONS.length; i > 0; --i)
|
|
|
|
|
|
|
|
result += SHORT_TOKEN_OPTIONS.chars[Math.floor(Math.random() * SHORT_TOKEN_OPTIONS.chars.length)];
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function create(socket) {
|
|
|
|
export function create(socket) {
|
|
|
|
|
|
|
|
|
|
|
|
return tokenGenerator.generate(TOKEN_OPTIONS).then((parts) => {
|
|
|
|
return tokenGenerator.generate(TOKEN_OPTIONS).then((parts) => {
|
|
|
|
const token = parts.join('/')
|
|
|
|
const token = parts.join('/')
|
|
|
|
|
|
|
|
const shortToken = generateShortToken()
|
|
|
|
let result = {
|
|
|
|
let result = {
|
|
|
|
token: token,
|
|
|
|
token: token,
|
|
|
|
|
|
|
|
shortToken: shortToken,
|
|
|
|
socket: socket
|
|
|
|
socket: socket
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
tokens[token] = result
|
|
|
|
tokens[token] = result
|
|
|
|
|
|
|
|
shortTokens[shortToken] = result
|
|
|
|
return result
|
|
|
|
return result
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function exists(token) {
|
|
|
|
|
|
|
|
return token in tokens
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function find(token) {
|
|
|
|
export function find(token) {
|
|
|
|
return tokens[token]
|
|
|
|
return tokens[token]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function findShort(shortToken) {
|
|
|
|
|
|
|
|
return shortTokens[shortToken.toLowerCase()]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function remove(client) {
|
|
|
|
export function remove(client) {
|
|
|
|
if (client == null) return
|
|
|
|
if (client == null) return
|
|
|
|
delete tokens[client.token]
|
|
|
|
delete tokens[client.token]
|
|
|
|
|
|
|
|
delete shortTokens[client.shortToken]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|