1
0
Fork 0
mirror of synced 2024-09-30 09:07:25 +13:00
budibase/packages/server/middleware/routers.js

190 lines
6.3 KiB
JavaScript
Raw Normal View History

2019-06-14 21:05:46 +12:00
const Router = require("koa-router");
const session = require("./session");
const StatusCodes = require("../utilities/statusCodes");
module.exports = (config, app) => {
2019-06-15 04:01:01 +12:00
const router = new Router();
2019-06-14 21:05:46 +12:00
router
2019-06-15 04:01:01 +12:00
/*.use(async (ctx) => {
if(!await ctx.master.getApplication(ctx.params.appname)) {
ctx.throw(StatusCodes.NOT_FOUND, `could not find app named ${ctx.params.appname}`);
}
})*/
.use(session(config, app))
.use(async (ctx, next) => {
ctx.sessionId = ctx.session._sessCtx.externalKey;
ctx.session.accessed = true;
await next();
})
.get("/:appname", async (ctx) => {
ctx.response.status = StatusCodes.OK;
ctx.response.body = "UI Served Here";
})
.post("/:appname/api/authenticate", async (ctx, next) => {
2019-06-14 21:05:46 +12:00
const user = await ctx.master.authenticate(
2019-06-15 04:01:01 +12:00
ctx.sessionId,
2019-06-14 21:05:46 +12:00
ctx.params.appname,
ctx.request.body.username,
ctx.request.body.password
);
if(!user) {
ctx.throw(StatusCodes.UNAUTHORIZED, "invalid username or password");
}
2019-06-15 04:01:01 +12:00
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.post("/:appname/api/setPasswordFromTemporaryCode", async (ctx) => {
const instanceApi = await ctx.master.getFullAccessInstanceApiForUsername(
ctx.params.appname,
ctx.request.body.username
);
await instanceApi.authApi.setPasswordFromTemporaryCode(
ctx.request.body.tempCode,
ctx.request.body.newpassword);
ctx.response.status = StatusCodes.OK;
2019-06-16 10:55:32 +12:00
})
.post("/:appname/api/createTemporaryAccess", async (ctx) => {
const instanceApi = await ctx.master.getFullAccessInstanceApiForUsername(
ctx.params.appname,
ctx.request.body.username
);
await instanceApi.authApi.createTemporaryAccess(
ctx.request.body.username);
2019-06-16 10:55:32 +12:00
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.use(async (ctx, next) => {
const pathParts = ctx.path.split("/");
if(pathParts.length < 2) {
ctx.throw(StatusCodes.NOT_FOUND, "App Name not declared");
}
2019-06-14 21:05:46 +12:00
2019-06-15 04:01:01 +12:00
ctx.instance = await ctx.master.getInstanceApiForSession(
pathParts[1],
ctx.sessionId);
await next();
2019-06-14 21:05:46 +12:00
})
2019-06-16 10:55:32 +12:00
.post("/:appname/api/changeMyPassword", async (ctx) => {
await ctx.instance.authApi.changeMyPassword(
ctx.request.body.currentPassword,
ctx.request.body.newPassword
);
ctx.response.status = StatusCodes.OK;
})
.post("/:appname/api/changeMyPassword", async (ctx) => {
await ctx.instance.authApi.changeMyPassword(
ctx.request.body.currentPassword,
ctx.request.body.newPassword
);
ctx.response.status = StatusCodes.OK;
})
2019-06-15 04:01:01 +12:00
.post("/:appname/api/executeAction/:actionname", async (ctx) => {
2019-06-16 10:55:32 +12:00
ctx.body = await ctx.instance.actionApi.execute(
ctx.request.body.actionname,
ctx.request.body.parameters);
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.post("/:appname/api/createUser", async (ctx) => {
await ctx.instance.authApi.createUser(
ctx.request.body.user,
ctx.request.body.password
);
2019-06-14 21:05:46 +12:00
2019-06-15 04:01:01 +12:00
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.post("/:appname/api/enableUser", async (ctx) => {
2019-06-16 10:55:32 +12:00
await ctx.instance.authApi.enableUser(
ctx.request.body.username);
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.post("/:appname/api/disableUser", async (ctx) => {
2019-06-16 10:55:32 +12:00
await ctx.instance.authApi.disableUser(
ctx.request.body.username);
2019-06-20 09:05:53 +12:00
await ctx.master.removeSessionsForUser(
ctx.params.appname,
ctx.request.body.username
);
2019-06-16 10:55:32 +12:00
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.get("/:appname/api/users", async (ctx) => {
2019-06-15 10:03:01 +12:00
ctx.body = await ctx.instance.authApi.getUsers();
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.get("/:appname/api/accessLevels", async (ctx) => {
2019-06-16 10:55:32 +12:00
ctx.body = await ctx.instance.authApi.getAccessLevels();
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.post("/:appname/api/listRecords/:indexkey", async (ctx) => {
2019-06-16 10:55:32 +12:00
ctx.body = await ctx.instance.indexApi.listItems(
ctx.request.body.indexKey,
{
rangeStartParams:ctx.request.body.rangeStartParams,
rangeEndParams:ctx.request.body.rangeEndParams,
searchPhrase:ctx.request.body.searchPhrase
}
);
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-16 10:55:32 +12:00
.post("/:appname/api/aggregates/:indexkey", async (ctx) => {
ctx.body = await ctx.instance.indexApi.aggregates(
ctx.request.body.indexKey,
{
rangeStartParams:ctx.request.body.rangeStartParams,
rangeEndParams:ctx.request.body.rangeEndParams,
searchPhrase:ctx.request.body.searchPhrase
}
);
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.post("/:appname/api/record/:recordkey", async (ctx) => {
2019-06-16 10:55:32 +12:00
ctx.body = await ctx.instance.recordApi.save(
ctx.request.body
);
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.get("/:appname/api/record/:recordkey", async (ctx) => {
2019-06-16 10:55:32 +12:00
ctx.body = await ctx.instance.recordApi.load(
ctx.params.recordKey
);
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.del("/:appname/api/record/:recordkey", async (ctx) => {
2019-06-16 10:55:32 +12:00
await ctx.instance.recordApi.delete(
ctx.params.recordKey
);
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.post("/:appname/api/appHeirarchy", async (ctx) => {
2019-06-16 10:55:32 +12:00
ctx.body = await ctx.instance.templateApi.saveApplicationHeirarchy(
ctx.body
);
ctx.response.status = StatusCodes.OK;
2019-06-14 21:05:46 +12:00
})
2019-06-15 04:01:01 +12:00
.post("/:appname/api/actionsAndTriggers", async (ctx) => {
2019-06-16 10:55:32 +12:00
ctx.body = await ctx.instance.templateApi.saveApplicationHeirarchy(
ctx.body
);
ctx.response.status = StatusCodes.OK;
2019-06-15 04:01:01 +12:00
})
2019-06-16 10:55:32 +12:00
.get("/:appname/api/appDefinition", async (ctx) => {
ctx.body = await ctx.instance.templateApi.saveActionsAndTriggers(
ctx.body
);
ctx.response.status = StatusCodes.OK;
2019-06-15 04:01:01 +12:00
});
2019-06-14 21:05:46 +12:00
return router;
}
/*
front end get authenticateTemporaryAccess {}
*/