const { LogType } = require("loguix") const fs = require("fs") const path = require("path") const { __glob } = require("./global-variables") const alog = new LogType("Authentification") const keygen = require("./keygen") const users = require("./users") /** * Vérifie si le token est présent et appartient à un utilisateur * @param {string} token */ module.exports.check = function(token) { var isApproved = false; var username = null users.fetchUsers().forEach((fetchUser) => { if(fetchUser.tokens.includes(token)) { isApproved = true username = fetchUser.username } }) if(isApproved) { return true } else { if(token) { alog.warn("Erreur d'authentification - Token n'existe pas : " + token) } return false } } /** * Permet de se connecter à Neutral * @param {object} data * @returns Token or AUTH_FAILED */ module.exports.login = function(data) { var username = data.username var password = data.password if(users.fetchUsers().has(username)) { const user = users.fetchUsers().get(username) if(password == user.getPassword()) { const token = user.generateToken() alog.log("Connexion approuvé de l'utilisateur : " + username) return token } else { alog.warn("Echec de connexion de l'utilisateur : " + username + " - Mot de passe incorrect") return "AUTH_FAILED" } } else { alog.warn("Echec de connexion de l'utilisateur : " + username + " - Utilisateur non-inscrit dans la base de donnée") return "AUTH_FAILED" } } /** * Remove the token * @param {string} token * @returns */ module.exports.signout = function(token) { var isDone = false; var username = null users.fetchUsers().forEach((fetchUser) => { if(fetchUser.tokens.includes(token)) { isDone = true username = fetchUser.username fetchUser.removeToken(token) } }) if(isDone) { alog.log("Suppression du Token '" + token + "' de l'utilisateur : " + username) return true } else { if(token) { alog.warn("Erreur d'opération lors de la déconnexion - Token n'existe pas : " + token) } return false } } module.exports.getUserByToken = function(token) { var isApproved = false; var userGetted = null users.fetchUsers().forEach((fetchUser) => { if(fetchUser.tokens.includes(token)) { userGetted = fetchUser } }) if(userGetted) { return userGetted } else { if(token) { alog.warn("Erreur d'authentification - Token n'existe pas : " + token) } return false } }