@scefira/dfw-nodejs
Version:
126 lines (96 loc) • 4.72 kB
text/typescript
import DFWCore, { DFWScheme } from ".";
import SecurityManager from "./scripts/modules/SecurityManager";
import { DFWBoot } from "./scripts/modules/APIManager";
import dfw_access from "./model/dfw_access.model";
import dfw_credential from "./model/dfw_credential.model";
import DatabaseManager from "./scripts/modules/DatabaseManager";
import dfw_file from "./model/dfw_file.model";
//DatabaseManager.createDatabaseAsync("root","","dfw-test");
const DFW = DFWCore.createInstance({
database:{
username:"root",
database:"dfw-test",
password:"",
dialect:"mysql",
},
upload:{
tempDir:"./temp/"
}
});
//DFW.getDatabase().sequelize.sync({alter:true});
DFW.startServer(300);
DFW.modules.APIManager.addBootCallback(async (dfw:DFWScheme,boot:DFWBoot<{token:string}>)=>{
boot.token = dfw.session.model.token;
});
////////////////////////////////////////////////////////////////////////
//DFW.modules.APIManager.addUploadListener("/upload",{security:{ session:false , uploads:{ limits:{ fileSize: 1024*1024*5 }} }});
DFW.modules.APIManager.addListener("/upload",async (dfw)=>{
let file:dfw_file = await dfw.file.flushUploadAsync(dfw.request.files.file) as any;
await dfw.file.validateFileAsync(file);
await dfw.modules.uploadManager.assignChildLocalFileAsync(dfw,file.localPath,file,"copy",{copy:true , expiration:null })
return dfw.api.success(file);
},{ method:"post" , security:{ uploads:true }});
DFW.modules.APIManager.addListener("/boot",async (dfw)=>{
return { boot: await dfw.api.bootAsync() };
},{security:{}})
DFW.modules.APIManager.addListener("/login",async (dfw)=>{
return {
status: await dfw.session.loginAsync({user:"aldodelacomarca@gmail.com", password: "aldodelacomarca"}),
boot: await dfw.api.bootAsync()
} ;
});
DFW.modules.APIManager.addListener("/relations",async (dfw)=>{
var result = await dfw.db.sequelize.transaction((t)=>{
return Promise.all([
dfw.session.model.user!.assignCredentialAsync(["ADMIN","EDITOR"],t)
])
})
return { result }
});
DFW.modules.APIManager.addListener("/logout",async (dfw)=>{
return {
status : await dfw.session.logoutAsync() ,
boot: await dfw.api.bootAsync()
}
})
DFW.modules.APIManager.addListener("/testapi",async (dfw)=>{
if(!await dfw.security.checkRuleAsync(DFWCore.SecurityManager.RULE_BODY_PARAMS_SETTED,["a","b"])){
return dfw.api.error("no está seteado a y b");
}
return { body:dfw.request.body }
},{method:"post"});
DFW.modules.APIManager.addListener("/make",async (dfw)=>{
var result = {
createAdmin: await dfw.db.entityHandler.dfw_user.createAsync("scefira","contact@scefira.com","scefira"),
createCustomer: await dfw.db.entityHandler.dfw_user.createAsync("C001","a@test.com","aldo"),
AccessEdit: await dfw.db.retriveModel(dfw_access).create({ name: "EDIT_CHANNEL" }),
AccessCreate: await dfw.db.retriveModel(dfw_access).create({ name: "CREATE_CHANNEL" }),
CredentialAdmin: await dfw.db.retriveModel(dfw_credential).create({ name: "ADMIN"}),
CredentialEditor: await dfw.db.retriveModel(dfw_credential).create({ name: "EDITOR"}),
} as any
result.addCredentialToUser = result.createAdmin.$add("credentials",[result.CredentialAdmin]);
result.addCredentialToUser = result.CredentialAdmin.$add("access",[result.AccessCreate]);
return { result };
})
DFW.modules.APIManager.addListener("/models",async (dfw)=>{
return { models : Object.keys(dfw.DFWInstance.getDatabase().sequelize.models )}
})
DFW.modules.APIManager.addListener("/test",async (dfw)=>{
return dfw.api.success( await dfw.file.getFileRecordAsync(14));
})
DFW.modules.APIManager.addListener("/test2",async (dfw)=>{
if(! await dfw.security.checkRuleAsync(SecurityManager.RULE_LOGGED_SESSION,true))
return dfw.api.error("Acceso denegado");
if(! await dfw.security.checkRuleAsync(SecurityManager.RULE_LOGGED_SESSION,true))
return dfw.api.error("Acceso denegado");
var res:any = {}
//res.createUser = await dfw_user.createUserAsync("scefira","scefira@gmail.com","123");
if(dfw.session.isLogged == true && dfw.session.model.user){
res.isLogged = dfw.session.isLogged;
res.access = await dfw.session.model.user.checkAccessAsync("CREATE_CHANNEL");
res.credential = await dfw.session.model.user.checkCredentialAsync("ADMIN");
}else{
return dfw.api.error("no legged");
}
return res;
})