diff --git a/src/backend/Components/User/UserManager.ts b/src/backend/Components/User/UserManager.ts index 70b1c1a..8d5ec03 100644 --- a/src/backend/Components/User/UserManager.ts +++ b/src/backend/Components/User/UserManager.ts @@ -12,32 +12,30 @@ implements FrontworkComponent{ name = "Authenticator" as "Authenticator"; admin:FrontworkAdmin - constructor(private exporters: PrivilegedRPCExporter[]){} + constructor( + private exporters: PrivilegedRPCExporter[] + ){} - exportRPCs() { - return [ - { - name: 'login' as 'login', - call: async (username:string, pwHash:string) => await this.login(username, pwHash) - },{ - name: 'authenticate' as 'authenticate', - call: async (tokenValue:string | Token) => await this.authenticate(tokenValue) - } - ] - } + exportRPCs = () => [ + { + name: 'login' as 'login', + call: async (username:string, pwHash:string) => await this.login(username, pwHash) + },{ + name: 'authenticate' as 'authenticate', + call: async (tokenValue:string | Token) => await this.authenticate(tokenValue) + } + ] onSetAdmin(admin:FrontworkAdmin){ this.exporters.forEach(e => e['admin'] = admin) } - exportRPCFeatures() { - return [{ + exportRPCFeatures = () => [ + { name: 'createUser' as 'createUser', exportRPCs: () => [{ name: 'createUser' as 'createUser', - call: async (user:User) => { - return await this.createUser(user) - } + call: async (user:User) => await this.createUser(user) }] },{ name: 'modifyPermissions' as 'modifyPermissions', @@ -48,47 +46,56 @@ implements FrontworkComponent{ name: 'setPermission' as 'setPermission', call: async (perm: RPCPermission) => await this.setPermission(perm) }] - }] - } + } + ] - getTableDefinitions(): TableDefiniton[] { - return [ - { - name: 'users', - tableBuilder: (table) => { - table.increments("id").primary() - table.string("name").notNullable().unique() - table.string("pwhash").notNullable() - table.string("rank").notNullable() - table.integer("specid").notNullable() - table.foreign('specid').references('specs.id') - table.string("email").nullable().unique() - } - },{ - name: 'rpcpermissions', - tableBuilder: (table) => { - table.string("name").primary().notNullable() - table.boolean("ADMIN").defaultTo(true).notNullable() - _Rank.forEach(r => table.boolean(r).defaultTo(false).notNullable()) - } - },{ - name: 'tokens', - tableBuilder: (table) => { - table.string('value').primary() - table.integer('user_id').notNullable() - table.foreign('user_id').references('users') - table.dateTime('created').defaultTo(this.admin.knex.fn.now()) - } - },{ - name: 'specs', - tableBuilder: (table) => { - table.increments('id').primary() - table.string('class') - table.string('name') - } + + getTableDefinitions = (): TableDefiniton[] => [ + { + name: 'users', + tableBuilder: (table) => { + table.increments("id").primary() + table.string("name").notNullable().unique() + table.string("pwhash").notNullable() + table.string("rank").notNullable() + table.string("email").nullable().unique() } - ,...this.exporters.flatMap(exp => exp['getTableDefinitions']?exp['getTableDefinitions']():undefined)] - } + },{ + name: 'characters', + tableBuilder: (table) => { + table.increments("id").primary() + table.string("name").notNullable().unique() + table.integer("specid").notNullable() + table.foreign("specid").references("specs.id") + table.integer("userid").notNullable() + table.foreign("userid").references("users.id") + } + },{ + name: 'rpcpermissions', + tableBuilder: (table) => { + table.string("name").primary().notNullable() + table.boolean("ADMIN").defaultTo(true).notNullable() + _Rank.forEach(r => table.boolean(r).defaultTo(false).notNullable()) + } + },{ + name: 'tokens', + tableBuilder: (table) => { + table.string('value').primary() + table.integer('user_id').notNullable() + table.foreign('user_id').references('users') + table.dateTime('created').defaultTo(this.admin.knex.fn.now()) + } + },{ + name: 'specs', + tableBuilder: (table) => { + table.string('class') + table.string('name') + table.primary(['class', 'name']) + } + } + ,...this.exporters.flatMap(exp => exp['getTableDefinitions']?exp['getTableDefinitions']():undefined) + ] + async initialize(){ await Promise.all( @@ -100,9 +107,7 @@ implements FrontworkComponent{ await Promise.all(this.exporters.map(ex => ex['initialize']?ex['initialize']():undefined)) - console.log(getSpecTableData()) - - await this.admin.knex('specs').insert(getSpecTableData()).catch(console.log) + await this.admin.knex('specs').insert(getSpecTableData()).catch(e => { console.log("skipping spec insertion") }) } async setPermission(permission: RPCPermission){