121 lines
2.8 KiB
JavaScript
121 lines
2.8 KiB
JavaScript
|
var fs = require("fs")
|
||
|
var uuid = require('uuid')
|
||
|
var path = require("path")
|
||
|
var CryptoJS = require("crypto-js")
|
||
|
|
||
|
module.exports.createUser = (name, password) => {
|
||
|
|
||
|
const passcrypt = CryptoJS.AES.encrypt(password, "D*G-KaPdSgVkYp3s");
|
||
|
const userUUID = uuid.v4();
|
||
|
const userData = {
|
||
|
"username":name,
|
||
|
"password": passcrypt.toString(),
|
||
|
"uuid": userUUID,
|
||
|
"token":{
|
||
|
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fs.writeFileSync(__dirname + path.sep + "users" + path.sep + userUUID + ".json", JSON.stringify(userData, null, 2))
|
||
|
|
||
|
}
|
||
|
|
||
|
module.exports.checkToken = (req, res) => {
|
||
|
|
||
|
const tokens = this.getAllToken()
|
||
|
const users = this.getUsers()
|
||
|
|
||
|
if(req.cookies.tokenID == null) {
|
||
|
return false;
|
||
|
|
||
|
} else if(tokens.has(req.cookies.tokenID)) {
|
||
|
const user = tokens.get(req.cookies.tokenID)
|
||
|
const userData = JSON.parse(fs.readFileSync(__dirname + path.sep + "users" + path.sep + users.get(user) + ".json"))
|
||
|
|
||
|
if(userData.token.livableToken == true) {
|
||
|
|
||
|
return user;
|
||
|
|
||
|
} else {
|
||
|
const tokenDate = new Date(userData.token.createdAt)
|
||
|
const nowDate = new Date(Date.now())
|
||
|
|
||
|
if(tokenDate.getDay() == nowDate.getDay() && tokenDate.getMonth() == nowDate.getMonth()) {
|
||
|
|
||
|
return user;
|
||
|
} else {
|
||
|
|
||
|
res.delete('tokenID');
|
||
|
return false;
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
module.exports.generateTokenID = (username, userData, req, users) => {
|
||
|
const tokenID = uuid.v4()
|
||
|
const date = Date.now()
|
||
|
|
||
|
var newUserData = userData;
|
||
|
var livable = false;
|
||
|
|
||
|
if(req.body.remindus == true) {
|
||
|
|
||
|
livable = true;
|
||
|
}
|
||
|
|
||
|
Object.defineProperties(newUserData, {
|
||
|
token: {
|
||
|
value: {
|
||
|
"tokenID":tokenID,
|
||
|
"livableToken": livable,
|
||
|
"createdAt": date
|
||
|
},
|
||
|
writable: true
|
||
|
|
||
|
}
|
||
|
|
||
|
})
|
||
|
|
||
|
fs.writeFileSync(__dirname + path.sep + "users" + path.sep + users.get(username) + ".json", JSON.stringify(newUserData, null, 2))
|
||
|
|
||
|
return tokenID
|
||
|
|
||
|
}
|
||
|
|
||
|
module.exports.getUsers = () => {
|
||
|
|
||
|
const users = new Map();
|
||
|
|
||
|
fs.readdirSync(__dirname + path.sep + "users").forEach(file => {
|
||
|
const fileData = JSON.parse(fs.readFileSync(__dirname + path.sep + "users" + path.sep + file))
|
||
|
users.set(fileData.username, fileData.uuid)
|
||
|
|
||
|
})
|
||
|
|
||
|
return users
|
||
|
}
|
||
|
|
||
|
module.exports.getAllToken = () => {
|
||
|
|
||
|
const token = new Map();
|
||
|
|
||
|
fs.readdirSync(__dirname + path.sep + "users").forEach(file => {
|
||
|
const fileData = JSON.parse(fs.readFileSync(__dirname + path.sep + "users" + path.sep + file))
|
||
|
token.set(fileData.token.tokenID, fileData.username)
|
||
|
|
||
|
})
|
||
|
|
||
|
return token
|
||
|
}
|