This commit is contained in:
peter
2019-11-24 13:25:36 +01:00
parent 7221a25258
commit 66aedac6d0
+25 -20
View File
@@ -12,10 +12,11 @@ implements FrontworkComponent<UserManagerIfc, UserManagerFeatureIfc>{
name = "Authenticator" as "Authenticator"; name = "Authenticator" as "Authenticator";
admin:FrontworkAdmin admin:FrontworkAdmin
constructor(private exporters: PrivilegedRPCExporter[]){} constructor(
private exporters: PrivilegedRPCExporter[]
){}
exportRPCs() { exportRPCs = () => [
return [
{ {
name: 'login' as 'login', name: 'login' as 'login',
call: async (username:string, pwHash:string) => await this.login(username, pwHash) call: async (username:string, pwHash:string) => await this.login(username, pwHash)
@@ -24,20 +25,17 @@ implements FrontworkComponent<UserManagerIfc, UserManagerFeatureIfc>{
call: async (tokenValue:string | Token) => await this.authenticate(tokenValue) call: async (tokenValue:string | Token) => await this.authenticate(tokenValue)
} }
] ]
}
onSetAdmin(admin:FrontworkAdmin){ onSetAdmin(admin:FrontworkAdmin){
this.exporters.forEach(e => e['admin'] = admin) this.exporters.forEach(e => e['admin'] = admin)
} }
exportRPCFeatures() { exportRPCFeatures = () => [
return [{ {
name: 'createUser' as 'createUser', name: 'createUser' as 'createUser',
exportRPCs: () => [{ exportRPCs: () => [{
name: 'createUser' as 'createUser', name: 'createUser' as 'createUser',
call: async (user:User) => { call: async (user:User) => await this.createUser(user)
return await this.createUser(user)
}
}] }]
},{ },{
name: 'modifyPermissions' as 'modifyPermissions', name: 'modifyPermissions' as 'modifyPermissions',
@@ -48,11 +46,11 @@ implements FrontworkComponent<UserManagerIfc, UserManagerFeatureIfc>{
name: 'setPermission' as 'setPermission', name: 'setPermission' as 'setPermission',
call: async (perm: RPCPermission) => await this.setPermission(perm) call: async (perm: RPCPermission) => await this.setPermission(perm)
}] }]
}]
} }
]
getTableDefinitions(): TableDefiniton[] {
return [ getTableDefinitions = (): TableDefiniton[] => [
{ {
name: 'users', name: 'users',
tableBuilder: (table) => { tableBuilder: (table) => {
@@ -60,10 +58,18 @@ implements FrontworkComponent<UserManagerIfc, UserManagerFeatureIfc>{
table.string("name").notNullable().unique() table.string("name").notNullable().unique()
table.string("pwhash").notNullable() table.string("pwhash").notNullable()
table.string("rank").notNullable() table.string("rank").notNullable()
table.integer("specid").notNullable()
table.foreign('specid').references('specs.id')
table.string("email").nullable().unique() table.string("email").nullable().unique()
} }
},{
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', name: 'rpcpermissions',
tableBuilder: (table) => { tableBuilder: (table) => {
@@ -82,13 +88,14 @@ implements FrontworkComponent<UserManagerIfc, UserManagerFeatureIfc>{
},{ },{
name: 'specs', name: 'specs',
tableBuilder: (table) => { tableBuilder: (table) => {
table.increments('id').primary()
table.string('class') table.string('class')
table.string('name') table.string('name')
table.primary(['class', 'name'])
} }
} }
,...this.exporters.flatMap(exp => exp['getTableDefinitions']?exp['getTableDefinitions']():undefined)] ,...this.exporters.flatMap(exp => exp['getTableDefinitions']?exp['getTableDefinitions']():undefined)
} ]
async initialize(){ async initialize(){
await Promise.all( await Promise.all(
@@ -100,9 +107,7 @@ implements FrontworkComponent<UserManagerIfc, UserManagerFeatureIfc>{
await Promise.all(this.exporters.map(ex => ex['initialize']?ex['initialize']():undefined)) await Promise.all(this.exporters.map(ex => ex['initialize']?ex['initialize']():undefined))
console.log(getSpecTableData()) await this.admin.knex('specs').insert(getSpecTableData()).catch(e => { console.log("skipping spec insertion") })
await this.admin.knex('specs').insert(getSpecTableData()).catch(console.log)
} }
async setPermission(permission: RPCPermission){ async setPermission(permission: RPCPermission){