11import TPEN from "../../api/TPEN.js"
2+ import CheckPermissions from "../../components/check-permissions/checkPermissions.js"
23
34class ManagePages extends HTMLElement {
45
@@ -7,8 +8,16 @@ class ManagePages extends HTMLElement {
78 this . attachShadow ( { mode : "open" } )
89 }
910
10- connectedCallback ( ) {
11+ async connectedCallback ( ) {
1112 TPEN . attachAuthentication ( this )
13+
14+ // Check if user has view permission
15+ const hasViewAccess = await CheckPermissions . checkViewAccess ( 'PAGE' , 'METADATA' )
16+ if ( ! hasViewAccess ) {
17+ this . shadowRoot . innerHTML = `<p>You don't have permission to view pages</p>`
18+ return
19+ }
20+
1221 if ( TPEN . activeProject ?. _id ) {
1322 this . render ( )
1423 }
@@ -99,6 +108,15 @@ class ManagePages extends HTMLElement {
99108 const pages = layers ?. pages
100109 this . shadowRoot . querySelectorAll ( ".manage-pages" ) . forEach ( ( button ) => {
101110 button . addEventListener ( "click" , async ( ) => {
111+ // Check if user has edit permission for pages
112+ const hasEditAccess = await CheckPermissions . checkEditAccess ( 'PAGE' , 'METADATA' )
113+ if ( ! hasEditAccess ) {
114+ TPEN . eventDispatcher . dispatch ( "tpen-toast" , {
115+ status : "error" ,
116+ message : "You don't have permission to manage pages"
117+ } )
118+ return
119+ }
102120 const buttonParent = button . getRootNode ( ) . host
103121 const mainParent = buttonParent . getRootNode ( ) . host
104122 const layerIndex = buttonParent . getAttribute ( "data-index" )
@@ -174,7 +192,15 @@ class ManagePages extends HTMLElement {
174192 deleteButton . innerText = "Delete Page"
175193 editPageLabelButton . after ( deleteButton )
176194
177- editPageLabelButton . addEventListener ( "click" , ( ) => {
195+ editPageLabelButton . addEventListener ( "click" , async ( ) => {
196+ const hasUpdateAccess = await CheckPermissions . checkEditAccess ( 'PAGE' , 'METADATA' )
197+ if ( ! hasUpdateAccess ) {
198+ TPEN . eventDispatcher . dispatch ( "tpen-toast" , {
199+ status : "error" ,
200+ message : "You don't have permission to edit page labels"
201+ } )
202+ return
203+ }
178204 labelDiv . classList . add ( "hidden" )
179205 editPageLabelButton . classList . add ( "hidden" )
180206 const labelInput = document . createElement ( "input" )
@@ -227,7 +253,15 @@ class ManagePages extends HTMLElement {
227253 } )
228254 } )
229255
230- deleteButton . addEventListener ( "click" , ( ) => {
256+ deleteButton . addEventListener ( "click" , async ( ) => {
257+ const hasDeleteAccess = await CheckPermissions . checkDeleteAccess ( 'PAGE' , '*' )
258+ if ( ! hasDeleteAccess ) {
259+ TPEN . eventDispatcher . dispatch ( "tpen-toast" , {
260+ status : "error" ,
261+ message : "You don't have permission to delete pages"
262+ } )
263+ return
264+ }
231265 if ( ! confirm ( "This Page will be removed from this layer and deleted. This action cannot be undone." ) ) return
232266 layerCardOuter . querySelector ( ".layer-pages" ) . removeChild ( el )
233267 layers [ layerIndex ] . pages . splice ( el . dataset . index , 1 )
@@ -255,7 +289,15 @@ class ManagePages extends HTMLElement {
255289 layerActions . insertBefore ( saveButton , layerActions . firstChild )
256290 layerActions . removeChild ( layerCardOuter . querySelector ( "tpen-manage-pages" ) )
257291
258- editLayerLabelButton . addEventListener ( "click" , ( ) => {
292+ editLayerLabelButton . addEventListener ( "click" , async ( ) => {
293+ const hasUpdateAccess = await CheckPermissions . checkEditAccess ( 'LAYER' , 'METADATA' )
294+ if ( ! hasUpdateAccess ) {
295+ TPEN . eventDispatcher . dispatch ( "tpen-toast" , {
296+ status : "error" ,
297+ message : "You don't have permission to edit layer labels"
298+ } )
299+ return
300+ }
259301 labelDiv . querySelector ( ".layer-label" ) . classList . add ( "hidden" )
260302 editLayerLabelButton . classList . add ( "hidden" )
261303 const labelInput = document . createElement ( "input" )
@@ -313,7 +355,15 @@ class ManagePages extends HTMLElement {
313355 } )
314356 } )
315357
316- saveButton . addEventListener ( "click" , ( ) => {
358+ saveButton . addEventListener ( "click" , async ( ) => {
359+ const hasUpdateAccess = await CheckPermissions . checkEditAccess ( 'PAGE' , 'ORDER' )
360+ if ( ! hasUpdateAccess ) {
361+ TPEN . eventDispatcher . dispatch ( "tpen-toast" , {
362+ status : "error" ,
363+ message : "You don't have permission to reorder pages"
364+ } )
365+ return
366+ }
317367 if ( ! layerCardOuter . querySelector ( ".layer-pages" ) ?. $isDirty ) {
318368 TPEN . eventDispatcher . dispatch ( "tpen-toast" , { "status" :"info" , "message" :"No Changes to Save" } )
319369 return
0 commit comments