Merge branch 'develop' into BUDI-7393/use_permissions_on_middleware

This commit is contained in:
Adria Navarro 2023-09-04 15:51:45 +02:00 committed by GitHub
commit 111e999962
11 changed files with 38 additions and 14 deletions

View File

@ -1,5 +1,5 @@
{ {
"version": "2.9.33-alpha.12", "version": "2.9.33-alpha.13",
"npmClient": "yarn", "npmClient": "yarn",
"packages": [ "packages": [
"packages/*" "packages/*"

View File

@ -87,6 +87,7 @@ export const BUILTIN_PERMISSIONS = {
new Permission(PermissionType.QUERY, PermissionLevel.WRITE), new Permission(PermissionType.QUERY, PermissionLevel.WRITE),
new Permission(PermissionType.TABLE, PermissionLevel.WRITE), new Permission(PermissionType.TABLE, PermissionLevel.WRITE),
new Permission(PermissionType.AUTOMATION, PermissionLevel.EXECUTE), new Permission(PermissionType.AUTOMATION, PermissionLevel.EXECUTE),
new Permission(PermissionType.LEGACY_VIEW, PermissionLevel.READ),
], ],
}, },
POWER: { POWER: {
@ -97,6 +98,7 @@ export const BUILTIN_PERMISSIONS = {
new Permission(PermissionType.USER, PermissionLevel.READ), new Permission(PermissionType.USER, PermissionLevel.READ),
new Permission(PermissionType.AUTOMATION, PermissionLevel.EXECUTE), new Permission(PermissionType.AUTOMATION, PermissionLevel.EXECUTE),
new Permission(PermissionType.WEBHOOK, PermissionLevel.READ), new Permission(PermissionType.WEBHOOK, PermissionLevel.READ),
new Permission(PermissionType.LEGACY_VIEW, PermissionLevel.READ),
], ],
}, },
ADMIN: { ADMIN: {
@ -108,6 +110,7 @@ export const BUILTIN_PERMISSIONS = {
new Permission(PermissionType.AUTOMATION, PermissionLevel.ADMIN), new Permission(PermissionType.AUTOMATION, PermissionLevel.ADMIN),
new Permission(PermissionType.WEBHOOK, PermissionLevel.READ), new Permission(PermissionType.WEBHOOK, PermissionLevel.READ),
new Permission(PermissionType.QUERY, PermissionLevel.ADMIN), new Permission(PermissionType.QUERY, PermissionLevel.ADMIN),
new Permission(PermissionType.LEGACY_VIEW, PermissionLevel.READ),
], ],
}, },
} }

View File

@ -270,4 +270,21 @@ describe("/permission", () => {
expect(publicPerm.name).toBeDefined() expect(publicPerm.name).toBeDefined()
}) })
}) })
describe("default permissions", () => {
it("legacy views", async () => {
const legacyView = await config.createLegacyView()
const res = await config.api.permission.get(legacyView.name)
expect(res.body).toEqual({
permissions: {
read: {
permissionType: "BASE",
role: "BASIC",
},
},
})
})
})
}) })

View File

@ -673,7 +673,7 @@ describe("/rows", () => {
}) })
it("should be able to run on a view", async () => { it("should be able to run on a view", async () => {
const view = await config.createView() const view = await config.createLegacyView()
const row = await config.createRow() const row = await config.createRow()
const rowUsage = await getRowUsage() const rowUsage = await getRowUsage()
const queryUsage = await getQueryUsage() const queryUsage = await getQueryUsage()

View File

@ -87,7 +87,7 @@ describe("/tables", () => {
it("updates all the row fields for a table when a schema key is renamed", async () => { it("updates all the row fields for a table when a schema key is renamed", async () => {
const testTable = await config.createTable() const testTable = await config.createTable()
await config.createView({ await config.createLegacyView({
name: "TestView", name: "TestView",
field: "Price", field: "Price",
calculation: "stats", calculation: "stats",
@ -254,7 +254,7 @@ describe("/tables", () => {
})) }))
await config.api.viewV2.create({ tableId }) await config.api.viewV2.create({ tableId })
await config.createView({ tableId, name: generator.guid() }) await config.createLegacyView({ tableId, name: generator.guid() })
const res = await config.api.table.fetch() const res = await config.api.table.fetch()

View File

@ -249,7 +249,7 @@ describe("/views", () => {
}) })
it("returns only custom views", async () => { it("returns only custom views", async () => {
await config.createView({ await config.createLegacyView({
name: "TestView", name: "TestView",
field: "Price", field: "Price",
calculation: "stats", calculation: "stats",
@ -267,7 +267,7 @@ describe("/views", () => {
describe("query", () => { describe("query", () => {
it("returns data for the created view", async () => { it("returns data for the created view", async () => {
await config.createView({ await config.createLegacyView({
name: "TestView", name: "TestView",
field: "Price", field: "Price",
calculation: "stats", calculation: "stats",
@ -295,7 +295,7 @@ describe("/views", () => {
}) })
it("returns data for the created view using a group by", async () => { it("returns data for the created view using a group by", async () => {
await config.createView({ await config.createLegacyView({
calculation: "stats", calculation: "stats",
name: "TestView", name: "TestView",
field: "Price", field: "Price",
@ -331,7 +331,7 @@ describe("/views", () => {
describe("destroy", () => { describe("destroy", () => {
it("should be able to delete a view", async () => { it("should be able to delete a view", async () => {
const table = await config.createTable(priceTable()) const table = await config.createTable(priceTable())
const view = await config.createView() const view = await config.createLegacyView()
const res = await request const res = await request
.delete(`/api/views/${view.name}`) .delete(`/api/views/${view.name}`)
.set(config.defaultHeaders()) .set(config.defaultHeaders())
@ -395,7 +395,7 @@ describe("/views", () => {
it("should be able to export a view as JSON", async () => { it("should be able to export a view as JSON", async () => {
let table = await setupExport() let table = await setupExport()
const view = await config.createView() const view = await config.createLegacyView()
table = await config.getTable(table._id) table = await config.getTable(table._id)
let res = await exportView(view.name, "json") let res = await exportView(view.name, "json")
@ -407,7 +407,7 @@ describe("/views", () => {
it("should be able to export a view as CSV", async () => { it("should be able to export a view as CSV", async () => {
let table = await setupExport() let table = await setupExport()
const view = await config.createView() const view = await config.createLegacyView()
table = await config.getTable(table._id) table = await config.getTable(table._id)
let res = await exportView(view.name, "csv") let res = await exportView(view.name, "csv")

View File

@ -296,7 +296,7 @@ describe.each([
}) })
it("cannot update views v1", async () => { it("cannot update views v1", async () => {
const viewV1 = await config.createView() const viewV1 = await config.createLegacyView()
await config.api.viewV2.update( await config.api.viewV2.update(
{ {
...viewV1, ...viewV1,

View File

@ -50,9 +50,9 @@ describe("migrations", () => {
await config.createRole() await config.createRole()
await config.createRole() await config.createRole()
await config.createTable() await config.createTable()
await config.createView() await config.createLegacyView()
await config.createTable() await config.createTable()
await config.createView(structures.view(config.table!._id!)) await config.createLegacyView(structures.view(config.table!._id!))
await config.createScreen() await config.createScreen()
await config.createScreen() await config.createScreen()

View File

@ -622,7 +622,7 @@ class TestConfiguration {
// VIEW // VIEW
async createView(config?: any) { async createLegacyView(config?: any) {
if (!this.table) { if (!this.table) {
throw "Test requires table to be configured." throw "Test requires table to be configured."
} }

View File

@ -23,6 +23,9 @@ export function getPermissionType(resourceId: string) {
case DocumentType.QUERY: case DocumentType.QUERY:
case DocumentType.DATASOURCE: case DocumentType.DATASOURCE:
return permissions.PermissionType.QUERY return permissions.PermissionType.QUERY
default:
// legacy views don't have an ID, will end up here
return permissions.PermissionType.LEGACY_VIEW
} }
} }

View File

@ -16,6 +16,7 @@ export enum PermissionType {
GLOBAL_BUILDER = "globalBuilder", GLOBAL_BUILDER = "globalBuilder",
QUERY = "query", QUERY = "query",
VIEW = "view", VIEW = "view",
LEGACY_VIEW = "legacy_view",
} }
export enum PermissionSource { export enum PermissionSource {