diff --git a/packages/nc-gui-v2/components/shared-view/Grid.vue b/packages/nc-gui-v2/components/shared-view/Grid.vue
index 7c0c8690e9..a17f77b565 100644
--- a/packages/nc-gui-v2/components/shared-view/Grid.vue
+++ b/packages/nc-gui-v2/components/shared-view/Grid.vue
@@ -1,10 +1,13 @@
diff --git a/packages/nc-gui-v2/components/smartsheet/Cell.vue b/packages/nc-gui-v2/components/smartsheet/Cell.vue
index d18ac255d5..f746c15655 100644
--- a/packages/nc-gui-v2/components/smartsheet/Cell.vue
+++ b/packages/nc-gui-v2/components/smartsheet/Cell.vue
@@ -170,6 +170,6 @@ const syncAndNavigate = (dir: NavigateDir) => {
-
+
diff --git a/packages/nc-gui-v2/components/smartsheet/Grid.vue b/packages/nc-gui-v2/components/smartsheet/Grid.vue
index 9b17581440..a59da777f7 100644
--- a/packages/nc-gui-v2/components/smartsheet/Grid.vue
+++ b/packages/nc-gui-v2/components/smartsheet/Grid.vue
@@ -49,6 +49,7 @@ const reloadViewDataHook = inject(ReloadViewDataHookInj, createEventHook())
const openNewRecordFormHook = inject(OpenNewRecordFormHookInj, createEventHook())
const { isUIAllowed } = useUIPermission()
+const hasEditPermission = isUIAllowed('xcDatatableEditable')
// todo: get from parent ( inject or use prop )
const isView = false
@@ -65,7 +66,7 @@ const _contextMenu = ref(false)
const contextMenu = computed({
get: () => _contextMenu.value,
set: (val) => {
- if (!readOnly) {
+ if (hasEditPermission) {
_contextMenu.value = val
}
},
@@ -102,7 +103,7 @@ provide(PaginationDataInj, paginationData)
provide(ChangePageInj, changePage)
-provide(ReadonlyInj, !isUIAllowed('xcDatatableEditable'))
+provide(ReadonlyInj, !hasEditPermission)
reloadViewDataHook?.on(async () => {
await loadData()
@@ -170,7 +171,7 @@ const clearCell = async (ctx: { row: number; col: number }) => {
const { copy } = useClipboard()
const makeEditable = (row: Row, col: ColumnType) => {
- if (isPublicView.value || editEnabled || isView) {
+ if (!hasEditPermission || editEnabled || isView) {
return
}
if (!isPkAvail.value && !row.rowMeta.new) {
@@ -426,7 +427,7 @@ const onNavigate = (dir: NavigateDir) => {
:key="columnObj.id"
class="cell relative cursor-pointer nc-grid-cell"
:class="{
- active: !isPublicView && selected.col === colIndex && selected.row === rowIndex,
+ active: isUIAllowed('xcDatatableEditable') && selected.col === colIndex && selected.row === rowIndex,
}"
:data-key="rowIndex + columnObj.id"
:data-col="columnObj.id"
@@ -472,7 +473,7 @@ const onNavigate = (dir: NavigateDir) => {
TODO: add relationType !== 'bt' ?
v1:
-->
-
+
storage.value.token || '',
set: (val) => (storage.value.token = val),
})
+ const isAuthenticated = !!token.value
const appInfo = ref({
ncSiteUrl: process.env.NC_BACKEND_URL || (process.env.NODE_ENV === 'production' ? location.origin : 'http://localhost:8080'),
@@ -105,6 +106,7 @@ export function useGlobalState(storageKey = 'nocodb-gui-v2'): State {
...toRefs(storage.value),
storage,
token,
+ isAuthenticated,
jwtPayload: payload,
timestamp,
runningRequests,
diff --git a/packages/nc-gui-v2/composables/useUIPermission/rolePermissions.ts b/packages/nc-gui-v2/composables/useUIPermission/rolePermissions.ts
index b89ef57c00..fec40365bb 100644
--- a/packages/nc-gui-v2/composables/useUIPermission/rolePermissions.ts
+++ b/packages/nc-gui-v2/composables/useUIPermission/rolePermissions.ts
@@ -1,4 +1,5 @@
const rolePermissions = {
+ super: '*',
creator: '*',
owner: '*',
guest: {},
|