neutral/bin/auth.js

91 lines
2.4 KiB
JavaScript

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.getUsers().forEach((fetchUser) => {
if(fetchUser.tokens.includes(token)) {
isApproved = true
username = fetchUser.username
}
})
if(isApproved) {
alog.log("Connexion par Token de l'utilisateur : " + username)
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.getUsers().has(username)) {
const user = users.getUsers().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.getUsers().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
}
}