83
83
{{ getFullDisplayName(item.mappingDisplayName, item.mappingType) }}
84
84
</td>
85
85
<td class="state-column">
86
- <AclStateButton :state="getState(OC.PERMISSION_READ, item.permissions, item.mask, item.inherited )"
86
+ <AclStateButton :state="getState(OC.PERMISSION_READ, item)"
87
87
:inherited="item.inherited"
88
88
:disabled="loading"
89
89
@update="changePermission(item, OC.PERMISSION_READ, $event)" />
90
90
</td>
91
91
<td class="state-column">
92
- <AclStateButton :state="getState(OC.PERMISSION_UPDATE, item.permissions, item.mask, item.inherited )"
92
+ <AclStateButton :state="getState(OC.PERMISSION_UPDATE, item)"
93
93
:inherited="item.inherited"
94
94
:disabled="loading"
95
95
@update="changePermission(item, OC.PERMISSION_UPDATE, $event)" />
96
96
</td>
97
97
<td v-if="model.type === 'dir'" class="state-column">
98
- <AclStateButton :state="getState(OC.PERMISSION_CREATE, item.permissions, item.mask, item.inherited )"
98
+ <AclStateButton :state="getState(OC.PERMISSION_CREATE, item)"
99
99
:inherited="item.inherited"
100
100
:disabled="loading"
101
101
@update="changePermission(item, OC.PERMISSION_CREATE, $event)" />
102
102
</td>
103
103
<td class="state-column">
104
- <AclStateButton :state="getState(OC.PERMISSION_DELETE, item.permissions, item.mask, item.inherited )"
104
+ <AclStateButton :state="getState(OC.PERMISSION_DELETE, item)"
105
105
:inherited="item.inherited"
106
106
:disabled="loading"
107
107
@update="changePermission(item, OC.PERMISSION_DELETE, $event)" />
108
108
</td>
109
109
<td class="state-column">
110
- <AclStateButton :state="getState(OC.PERMISSION_SHARE, item.permissions, item.mask, item.inherited )"
110
+ <AclStateButton :state="getState(OC.PERMISSION_SHARE, item)"
111
111
:inherited="item.inherited"
112
112
:disabled="loading"
113
113
@update="changePermission(item, OC.PERMISSION_SHARE, $event)" />
157
157
import Vue from 'vue'
158
158
import axios from '@nextcloud/axios'
159
159
import { generateUrl } from '@nextcloud/router'
160
- import AclStateButton from './AclStateButton.vue'
160
+ import AclStateButton, {STATES} from './AclStateButton.vue'
161
161
import Rule from './../model/Rule.js'
162
162
import BinaryTools from './../BinaryTools.js'
163
163
import client from './../client.js'
@@ -208,7 +208,7 @@ export default {
208
208
return this.aclCanManage
209
209
},
210
210
isNotInherited() {
211
- return (permission, permissions, mask) => {
211
+ return (permission, mask) => {
212
212
return (permission & ~mask) === 0
213
213
}
214
214
},
@@ -218,10 +218,18 @@ export default {
218
218
}
219
219
},
220
220
getState() {
221
- return (permission, permissions, mask, inherited) => {
222
- const inheritance = (!inherited && this.isNotInherited(permission, permissions, mask)) << 1
223
- const permitted = this.isAllowed(permission, permissions)
224
- return inheritance | permitted
221
+ return (permission, item) => {
222
+ const permitted = this.isAllowed(permission, item.permissions)
223
+ if (this.isNotInherited(permission, item.mask)) {
224
+ return permitted ? STATES.SELF_ALLOW : STATES.SELF_DENY
225
+ } else {
226
+ const inheritPermitted = this.isAllowed(permission, item.inheritedPermissions)
227
+ if (this.isNotInherited(permission, item.inheritedMask)) {
228
+ return inheritPermitted ? STATES.INHERIT_ALLOW : STATES.INHERIT_DENY
229
+ } else {
230
+ return STATES.INHERIT_DEFAULT
231
+ }
232
+ }
225
233
}
226
234
},
227
235
},
@@ -328,13 +336,13 @@ export default {
328
336
},
329
337
changePermission(item, permission, $event) {
330
338
const index = this.list.indexOf(item)
331
- const inherit = ( $event < 2)
332
- const allow = ( $event & (0b01)) === 1
339
+ const inherit = $event === STATES.INHERIT_ALLOW || $event === STATES.INHERIT_DENY || $event === STATES.INHERIT_DEFAULT
340
+ const allow = $event === STATES.SELF_ALLOW
333
341
const bit = BinaryTools.firstHigh(permission)
334
342
item = item.clone()
335
343
if (inherit) {
336
344
item.mask = BinaryTools.clear(item.mask, bit)
337
- // TODO check if: we can ignore permissions, since they are inherited
345
+ // we can ignore permissions, since they are inherited
338
346
} else {
339
347
item.mask = BinaryTools.set(item.mask, bit)
340
348
if (allow) {
0 commit comments