2023-03-09 19:12:15 -05:00
import { backend } from './handlers.js' ;
2023-02-05 09:50:49 -05:00
2023-02-07 18:06:18 -05:00
const AUTH _ACTIONS = [
'postCreate' ,
2023-02-07 19:36:32 -05:00
'fileCreate' ,
2023-02-11 02:11:45 -05:00
'vote' ,
2023-03-06 02:26:57 -05:00
'postDelete' ,
2023-03-06 16:15:27 -05:00
'pfp' ,
2023-03-06 02:26:57 -05:00
'follow'
2023-02-07 18:06:18 -05:00
] ;
2023-02-05 09:50:49 -05:00
import sqlite3 from 'sqlite3'
import { open } from 'sqlite'
var db ;
2023-03-09 19:12:15 -05:00
2023-02-05 09:50:49 -05:00
async function initDb ( ) {
db = await open ( {
filename : ` ${ process . cwd ( ) } /db/main.db ` ,
driver : sqlite3 . Database
} ) ;
await db . run ( 'CREATE TABLE IF NOT EXISTS auth (username CHAR(64), password CHAR(1024))' ) ;
await db . run ( 'CREATE TABLE IF NOT EXISTS token (username CHAR(64), token CHAR(1024))' ) ;
2023-02-12 12:06:19 -05:00
await db . run ( 'CREATE TABLE IF NOT EXISTS post (username CHAR(64), id CHAR(64), content CHAR(10240), upvotes INTEGER, downvotes INTEGER, rating REAL, reply CHAR(64), time INTEGER)' ) ;
2023-02-05 09:50:49 -05:00
await db . run ( 'CREATE TABLE IF NOT EXISTS vote (id CHAR(64), username CHAR(64), type INTEGER)' ) ;
2023-02-11 19:42:10 -05:00
await db . run ( 'CREATE TABLE IF NOT EXISTS user (username CHAR(64), followers INTEGER, following INTEGER, upvotes INTEGER, downvotes INTEGER, reputation REAL)' ) ;
2023-03-06 02:26:57 -05:00
await db . run ( 'CREATE TABLE IF NOT EXISTS bio (username CHAR(64), content CHAR(10240), roles INTEGER)' ) ;
await db . run ( 'CREATE TABLE IF NOT EXISTS follow (username CHAR(64), following CHAR(64))' ) ;
2023-02-05 09:50:49 -05:00
}
2023-02-07 18:06:18 -05:00
let backendProxy = async ( { route , backendParams } ) => {
if ( ! db ) await initDb ( ) ;
2023-03-09 19:12:15 -05:00
let extraParams = { } ;
2023-02-05 09:50:49 -05:00
2023-03-09 19:12:15 -05:00
extraParams [ 'db' ] = db ;
2023-02-11 02:11:45 -05:00
2023-03-09 19:12:15 -05:00
let user = ( await backend . token ( { cookies : backendParams . cookies } , extraParams ) ) || { } ;
2023-02-05 09:50:49 -05:00
2023-03-09 19:12:15 -05:00
user = user . data ;
2023-03-08 20:09:51 -05:00
2023-03-09 19:12:15 -05:00
if ( ( ! user || user == '' ) && AUTH _ACTIONS . indexOf ( route ) != - 1 ) return { 'success' : 'Not authorized.' } ;
3
let isAdmin = false ;
if ( user && user != '' ) isAdmin = ( ( await backend . userRoles ( { } , { user , db } ) ) || [ ] ) . indexOf ( 'Admin' ) != - 1 ;
2023-02-05 09:50:49 -05:00
2023-03-09 19:12:15 -05:00
extraParams [ 'admin' ] = isAdmin ;
extraParams [ 'user' ] = user ;
2023-02-05 09:50:49 -05:00
2023-03-09 19:12:15 -05:00
return backend [ route ] ( backendParams , extraParams ) || { } ;
2023-02-05 09:50:49 -05:00
}
export {
2023-03-09 19:12:15 -05:00
backendProxy
} ;