102 lines
3.1 KiB
JavaScript
102 lines
3.1 KiB
JavaScript
const utils = require('../utils.js');
|
|
const path = require('path');
|
|
const auth = require('../utils/auth_utils');
|
|
const db = require('../utils/db');
|
|
|
|
db.createTable('users', [
|
|
{name :'id', type: 'INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL'},
|
|
{name :'name', type: 'VARCHAR(32) NOT NULL UNIQUE'},
|
|
{name :'password', type: `VARCHAR(255) NOT NULL DEFAULT '123456'`},
|
|
{name :'update_time', type: 'DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP'}
|
|
]);
|
|
|
|
function getUser(username) {
|
|
let ret = db.selectData('users', null, `name='${username}'`);
|
|
let info = db.info;
|
|
return [ret, info];
|
|
}
|
|
|
|
function addUser(username, password) {
|
|
let ret = db.insertData('users', {name: username, password: password});
|
|
if (ret == false) {
|
|
return [false, db.err.code];
|
|
}
|
|
let info = db.info;
|
|
return [ret, info];
|
|
}
|
|
|
|
function getAllUsers() {
|
|
let ret = db.selectData('users');
|
|
let info = db.info;
|
|
return [ret, info];
|
|
}
|
|
|
|
function checkAdmin(adminname, password) {
|
|
if (adminname === (utils.env.ADMIN_LOGIN_NAME || 'admin') &&
|
|
password === (utils.env.ADMIN_LOGIN_PASSWORD || 'admin') ) {
|
|
const token = auth.generateToken({
|
|
username: adminname,
|
|
id: -1
|
|
});
|
|
return {...utils.json.success, data: {token: token, href: '/users/admin'}};
|
|
} else {
|
|
return {...utils.json.user_is_invalid};
|
|
}
|
|
}
|
|
|
|
function checkUsers(username, password) {
|
|
let [ret, info] = getUser(username);
|
|
if (!ret) {
|
|
return {...utils.json.user_is_invalid, data: info};
|
|
} else if (!info || (Array.isArray(info) && info.length === 1)) {
|
|
info = info[0];
|
|
if (info.password !== password) {
|
|
return {...utils.json.user_is_invalid, data: 'password error'};
|
|
} else {
|
|
const token = auth.generateToken({
|
|
username: username,
|
|
id: info.id
|
|
})
|
|
return {...utils.json.success, data: {token: token, href: '/users'}};
|
|
}
|
|
} else {
|
|
return {...utils.json.user_is_invalid, data: 'user name error'};
|
|
}
|
|
}
|
|
|
|
|
|
function registerUsers(username, password) {
|
|
let [ret, info] = addUser(username, password);
|
|
if (!ret) {
|
|
if (info === 'SQLITE_CONSTRAINT_UNIQUE') {
|
|
info = 'user name is exist';
|
|
} else {
|
|
info = 'unknown error';
|
|
}
|
|
return {...utils.json.user_register_is_invalid, data: info};
|
|
} else {
|
|
return {...utils.json.success};
|
|
}
|
|
}
|
|
|
|
function getAllUsersToJson(token) {
|
|
if (typeof token === 'string') {
|
|
return auth.verifyToken(token, (err) => {
|
|
if (err) {
|
|
return {...utils.json.token_is_invalid, data: info};
|
|
}
|
|
let [ret, info] = getAllUsers();
|
|
if (ret) {
|
|
return {...utils.json.success, data: info};
|
|
} else {
|
|
return {...utils.json.error};
|
|
}
|
|
});
|
|
} else {
|
|
return {...utils.json.token_is_invalid, data: null};
|
|
}
|
|
}
|
|
|
|
const VIEWS_USERS_PATH = path.resolve(utils.VIEWS_PATH, 'users')
|
|
|
|
module.exports = { checkAdmin, checkUsers, registerUsers, getAllUsersToJson, VIEWS_USERS_PATH }; |