locator-ars-lib 1.1.4 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -12
- package/package.json +1 -1
- package/types/index.d.ts +2 -1
- package/types/locator-ars-lib.d.ts +2 -1
package/README.md
CHANGED
@@ -82,7 +82,23 @@ app.mount("#app");
|
|
82
82
|
</template>
|
83
83
|
```
|
84
84
|
|
85
|
+
С массивом разрешений:
|
86
|
+
|
87
|
+
```vue
|
88
|
+
<template>
|
89
|
+
<Check :action="['edit_user', 'manage_users']">
|
90
|
+
<button>Edit User</button>
|
91
|
+
|
92
|
+
<template #fallback>
|
93
|
+
<span>You need edit_user or manage_users permission</span>
|
94
|
+
</template>
|
95
|
+
</Check>
|
96
|
+
</template>
|
97
|
+
```
|
98
|
+
|
85
99
|
> **Важно:** Компонент Check изначально скрывает основной контент до получения подтверждения о правах доступа. Только после успешной проверки прав происходит отображение контента. До этого момента отображается слот `loading`, если он предоставлен.
|
100
|
+
>
|
101
|
+
> **Массив разрешений:** При передаче массива разрешений компонент отобразит основной контент, если у пользователя есть хотя бы одно из указанных разрешений. Это позволяет реализовать логику "ИЛИ" для проверки прав.
|
86
102
|
|
87
103
|
### 2. Директивы v-can и v-cant
|
88
104
|
|
@@ -97,10 +113,15 @@ app.mount("#app");
|
|
97
113
|
<div v-can="'view_analytics'">
|
98
114
|
<!-- Аналитика будет видна только при наличии прав -->
|
99
115
|
</div>
|
116
|
+
|
117
|
+
<!-- Использование массива разрешений -->
|
118
|
+
<button v-can="['edit_user', 'manage_users']">Edit User</button>
|
100
119
|
</template>
|
101
120
|
```
|
102
121
|
|
103
122
|
> **Важно:** Директива v-can изначально скрывает элементы, к которым она применена. Элементы отображаются только после успешной проверки прав доступа.
|
123
|
+
>
|
124
|
+
> **Массив разрешений:** При передаче массива разрешений элемент будет отображен, если у пользователя есть хотя бы одно из указанных разрешений. Это позволяет реализовать логику "ИЛИ" для проверки прав.
|
104
125
|
|
105
126
|
#### Директива v-cant
|
106
127
|
|
@@ -112,6 +133,11 @@ app.mount("#app");
|
|
112
133
|
<div v-cant="'edit_user'" class="no-permission-message">
|
113
134
|
У вас нет прав на редактирование
|
114
135
|
</div>
|
136
|
+
|
137
|
+
<!-- Использование массива разрешений -->
|
138
|
+
<div v-cant="['edit_user', 'manage_users']" class="no-permission-message">
|
139
|
+
У вас нет ни одного из необходимых прав
|
140
|
+
</div>
|
115
141
|
</template>
|
116
142
|
```
|
117
143
|
|
@@ -152,28 +178,28 @@ function handleDelete() {
|
|
152
178
|
|
153
179
|
### Компонент Check
|
154
180
|
|
155
|
-
| Prop | Тип
|
156
|
-
| -------- |
|
157
|
-
| action | string
|
158
|
-
| fallback | boolean
|
181
|
+
| Prop | Тип | По умолчанию | Описание |
|
182
|
+
| -------- | ------------------ | ------------ | -------------------------------------------------- |
|
183
|
+
| action | string \| string[] | | Название действия или массив действий для проверки |
|
184
|
+
| fallback | boolean | false | Показывать ли fallback слот при отсутствии прав |
|
159
185
|
|
160
186
|
### Директивы
|
161
187
|
|
162
188
|
#### Директива v-can
|
163
189
|
|
164
190
|
```vue
|
165
|
-
v-can="'action_name'"
|
191
|
+
v-can="'action_name'" // или v-can="['action_name1', 'action_name2']"
|
166
192
|
```
|
167
193
|
|
168
|
-
Показывает элемент только при наличии прав доступа.
|
194
|
+
Показывает элемент только при наличии прав доступа. При передаче массива разрешений элемент будет отображен, если у пользователя есть хотя бы одно из указанных разрешений.
|
169
195
|
|
170
196
|
#### Директива v-cant
|
171
197
|
|
172
198
|
```vue
|
173
|
-
v-cant="'action_name'"
|
199
|
+
v-cant="'action_name'" // или v-cant="['action_name1', 'action_name2']"
|
174
200
|
```
|
175
201
|
|
176
|
-
Показывает элемент только при отсутствии прав доступа (противоположность v-can).
|
202
|
+
Показывает элемент только при отсутствии прав доступа (противоположность v-can). При передаче массива разрешений элемент будет отображен только если у пользователя нет ни одного из указанных разрешений.
|
177
203
|
|
178
204
|
### usePermissions composable
|
179
205
|
|
@@ -186,10 +212,10 @@ const {
|
|
186
212
|
} = usePermissions(action, options);
|
187
213
|
```
|
188
214
|
|
189
|
-
| Параметр | Тип
|
190
|
-
| ----------------- |
|
191
|
-
| action | string \| Ref<string> | | Название действия для проверки
|
192
|
-
| options.autoCheck | boolean
|
215
|
+
| Параметр | Тип | По умолчанию | Описание |
|
216
|
+
| ----------------- | --------------------------------------------- | ------------ | -------------------------------------------------- |
|
217
|
+
| action | string \| string[] \| Ref<string \| string[]> | | Название действия или массив действий для проверки |
|
218
|
+
| options.autoCheck | boolean | true | Автоматически проверять при создании |
|
193
219
|
|
194
220
|
## Особенности реализации
|
195
221
|
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
@@ -3,6 +3,7 @@ import { App, Component, Ref, ComputedRef, ObjectDirective } from 'vue'
|
|
3
3
|
export interface PermissionsOptions {
|
4
4
|
baseUrl?: string
|
5
5
|
endpoint?: string
|
6
|
+
application?: string
|
6
7
|
}
|
7
8
|
|
8
9
|
export interface UsePermissionsOptions {
|
@@ -27,7 +28,7 @@ export const Check: Component
|
|
27
28
|
export const vCan: ObjectDirective
|
28
29
|
|
29
30
|
export function usePermissions(
|
30
|
-
action: string | Ref<string>,
|
31
|
+
action: string | string[] | Ref<string | string[]>,
|
31
32
|
options?: UsePermissionsOptions
|
32
33
|
): UsePermissionsResult
|
33
34
|
|
@@ -4,6 +4,7 @@ declare module 'locator-ars-lib' {
|
|
4
4
|
export interface PermissionsOptions {
|
5
5
|
baseUrl?: string
|
6
6
|
endpoint?: string
|
7
|
+
application?: string
|
7
8
|
}
|
8
9
|
|
9
10
|
export interface UsePermissionsOptions {
|
@@ -28,7 +29,7 @@ declare module 'locator-ars-lib' {
|
|
28
29
|
export const vCan: ObjectDirective
|
29
30
|
|
30
31
|
export function usePermissions(
|
31
|
-
action: string | Ref<string>,
|
32
|
+
action: string | string[] | Ref<string | string[]>,
|
32
33
|
options?: UsePermissionsOptions
|
33
34
|
): UsePermissionsResult
|
34
35
|
|