neutral-old/neutral-functions.js

220 lines
5.4 KiB
JavaScript
Raw Normal View History

2023-02-18 21:09:04 +00:00
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)
2023-02-21 11:02:37 +00:00
const userData = JSON.parse(fs.readFileSync(__dirname + path.sep + "users" + path.sep + users.get(user) + ".json", 'utf-8'))
2023-02-18 21:09:04 +00:00
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 {
2023-02-21 11:02:37 +00:00
res.clearCookie('tokenID');
2023-02-18 21:09:04 +00:00
return false;
}
}
} else {
return false;
}
return false;
}
2023-02-21 11:02:37 +00:00
module.exports.getFullName = (username) => {
const userData = JSON.parse(fs.readFileSync(__dirname + path.sep + "users" + path.sep + this.getUUID(username) + ".json", 'utf-8'))
return userData.fullname
}
2023-02-18 21:09:04 +00:00
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 => {
2023-02-21 11:02:37 +00:00
const fileData = JSON.parse(fs.readFileSync(__dirname + path.sep + "users" + path.sep + file, 'utf-8'))
2023-02-18 21:09:04 +00:00
users.set(fileData.username, fileData.uuid)
})
return users
}
module.exports.getAllToken = () => {
const token = new Map();
fs.readdirSync(__dirname + path.sep + "users").forEach(file => {
2023-02-21 11:02:37 +00:00
const fileData = JSON.parse(fs.readFileSync(__dirname + path.sep + "users" + path.sep + file, 'utf-8'))
2023-02-18 21:09:04 +00:00
token.set(fileData.token.tokenID, fileData.username)
})
return token
2023-02-21 11:02:37 +00:00
}
module.exports.getUUID = (username) => {
const users = new Map();
fs.readdirSync(__dirname + path.sep + "users").forEach(fileD => {
const fileData = JSON.parse(fs.readFileSync(__dirname + path.sep + "users" + path.sep + fileD, 'utf-8'))
users.set(fileData.username, fileData.uuid)
})
return users.get(username);
}
module.exports.changeFullName = (username, req, res) => {
const userData = JSON.parse(fs.readFileSync(__dirname + path.sep + "users" + path.sep + this.getUUID(this.checkToken(req, res)) + ".json", 'utf-8'))
Object.defineProperties(userData, {
fullname: {
value: username,
writable: true
}
})
const user = this.getUUIDRequest(req);
fs.writeFileSync(__dirname + path.sep + "users" + path.sep + user + ".json", JSON.stringify(userData, null, 2))
}
module.exports.getUUIDRequest = (req) => {
const users = this.getUsers()
const tokens = this.getAllToken()
users.get(tokens.get(req.cookies.tokenID))
if(req.cookies.tokenID == null) {
return false;
} else if(tokens.has(req.cookies.tokenID)) {
return users.get(tokens.get(req.cookies.tokenID))
} else {
return false;
}
}
module.exports.changePassword = (req, res) => {
const userData = JSON.parse(fs.readFileSync(__dirname + path.sep + "users" + path.sep + this.getUUID(this.checkToken(req, res)) + ".json", 'utf-8'))
const oldp = CryptoJS.AES.encrypt(req.body.additional, "D*G-KaPdSgVkYp3s")
const newp = CryptoJS.AES.encrypt(req.body.value, "D*G-KaPdSgVkYp3s")
if(CryptoJS.AES.decrypt(oldp, "D*G-KaPdSgVkYp3s").toString(CryptoJS.enc.Utf8) == CryptoJS.AES.decrypt(userData.password, "D*G-KaPdSgVkYp3s").toString(CryptoJS.enc.Utf8)) {
Object.defineProperties(userData, {
password: {
value: newp.toString(),
writable: true
}
})
const user = this.getUUIDRequest(req);
fs.writeFileSync(__dirname + path.sep + "users" + path.sep + user + ".json", JSON.stringify(userData, null, 2))
res.send({"result":"success", "content": "<span style='color:rgb(130, 255, 163);'>Le mot de passe a été changé avec succès.</span>"})
} else {
res.send({"result":"success", "content": "Le mot de passe actuel est éronné."})
}
}