@eeplatform/nuxt-layer-common 1.7.47 → 1.7.49
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/CHANGELOG.md +12 -0
- package/components/Layout/Header.vue +5 -5
- package/components/ListGroupSelection.vue +134 -0
- package/components/RoleForm.vue +327 -0
- package/components/RolePermissionMain.vue +131 -199
- package/composables/useApps.ts +58 -0
- package/composables/useLocal.ts +1 -1
- package/composables/useLocalAuth.ts +15 -0
- package/composables/useMember.ts +63 -33
- package/composables/usePermission.ts +97 -0
- package/composables/useRole.ts +24 -37
- package/middleware/02.member.ts +8 -4
- package/middleware/03.role.ts +4 -2
- package/package.json +1 -1
- package/plugins/secure-member.client.ts +2 -2
- package/types/local.d.ts +8 -4
- package/types/member.d.ts +9 -0
- package/types/permission.d.ts +24 -0
- package/types/role.d.ts +3 -2
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
class="text-none"
|
|
7
7
|
rounded="pill"
|
|
8
8
|
variant="tonal"
|
|
9
|
-
@click="
|
|
9
|
+
@click="setRole({ mode: 'add', dialog: true })"
|
|
10
10
|
size="large"
|
|
11
11
|
v-if="canCreateRole"
|
|
12
12
|
>
|
|
13
|
-
|
|
13
|
+
Add Role
|
|
14
14
|
</v-btn>
|
|
15
15
|
</v-row>
|
|
16
16
|
</v-col>
|
|
@@ -60,98 +60,66 @@
|
|
|
60
60
|
</span>
|
|
61
61
|
<v-chip>{{ value.length }}</v-chip>
|
|
62
62
|
</template>
|
|
63
|
-
|
|
64
|
-
<template #item.action-table="{ item }" v-if="canDeleteRole">
|
|
65
|
-
<v-menu :close-on-content-click="false" offset-y width="150">
|
|
66
|
-
<template v-slot:activator="{ props }">
|
|
67
|
-
<v-icon v-bind="props">mdi-dots-horizontal</v-icon>
|
|
68
|
-
</template>
|
|
69
|
-
<v-list>
|
|
70
|
-
<v-list-item @click="openDeleteDialog(item._id)">
|
|
71
|
-
Delete Role
|
|
72
|
-
</v-list-item>
|
|
73
|
-
</v-list>
|
|
74
|
-
</v-menu>
|
|
75
|
-
</template>
|
|
76
63
|
</v-data-table>
|
|
77
64
|
</v-card>
|
|
78
65
|
</v-col>
|
|
79
66
|
|
|
80
67
|
<!-- dialogs -->
|
|
81
|
-
<v-dialog v-model="
|
|
82
|
-
<
|
|
83
|
-
|
|
84
|
-
:
|
|
85
|
-
:
|
|
86
|
-
@
|
|
87
|
-
|
|
88
|
-
:types="props.types"
|
|
89
|
-
@success:create-more="getRoles()"
|
|
68
|
+
<v-dialog v-model="dialogAdd" width="500" persistent>
|
|
69
|
+
<RoleForm
|
|
70
|
+
v-model="role"
|
|
71
|
+
v-model:message="message"
|
|
72
|
+
:app="props.app"
|
|
73
|
+
@cancel="setRole({ mode: 'add' })"
|
|
74
|
+
@submit="submitAdd()"
|
|
90
75
|
/>
|
|
91
76
|
</v-dialog>
|
|
92
77
|
|
|
93
|
-
<v-dialog v-model="
|
|
94
|
-
<
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
:id="roleId"
|
|
78
|
+
<v-dialog v-model="dialogPreview" width="500" persistent>
|
|
79
|
+
<RoleForm
|
|
80
|
+
title="Role Details"
|
|
81
|
+
:app="props.app"
|
|
82
|
+
v-model="role"
|
|
83
|
+
@close="setRole({ mode: 'view' })"
|
|
84
|
+
@edit="handOpenEdit()"
|
|
85
|
+
@delete="handleOpenDelete()"
|
|
86
|
+
mode="view"
|
|
103
87
|
/>
|
|
104
88
|
</v-dialog>
|
|
105
89
|
|
|
106
|
-
<
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
<p class="text-subtitle-2">
|
|
117
|
-
Are you sure you want to delete this role? This action cannot be
|
|
118
|
-
undone.
|
|
119
|
-
</p>
|
|
120
|
-
</template>
|
|
121
|
-
|
|
122
|
-
<template #footer>
|
|
123
|
-
<v-btn
|
|
124
|
-
variant="text"
|
|
125
|
-
@click="confirmDialog = false"
|
|
126
|
-
:disabled="deleteLoading"
|
|
127
|
-
>
|
|
128
|
-
Close
|
|
129
|
-
</v-btn>
|
|
130
|
-
<v-btn
|
|
131
|
-
color="primary"
|
|
132
|
-
variant="flat"
|
|
133
|
-
@click="handleDeleteRole"
|
|
134
|
-
:loading="deleteLoading"
|
|
135
|
-
>
|
|
136
|
-
Delete Role
|
|
137
|
-
</v-btn>
|
|
138
|
-
</template>
|
|
139
|
-
</ConfirmDialog>
|
|
90
|
+
<v-dialog v-model="dialogEdit" width="500" persistent>
|
|
91
|
+
<RoleForm
|
|
92
|
+
title="Edit Role Details"
|
|
93
|
+
:app="props.app"
|
|
94
|
+
v-model="role"
|
|
95
|
+
@cancel="setRole({ mode: 'edit' })"
|
|
96
|
+
@submit="submitEdit()"
|
|
97
|
+
mode="edit"
|
|
98
|
+
/>
|
|
99
|
+
</v-dialog>
|
|
140
100
|
|
|
141
|
-
<
|
|
101
|
+
<v-dialog v-model="dialogDelete" width="450" persistent>
|
|
102
|
+
<ConfirmationPrompt
|
|
103
|
+
title="Delete Role"
|
|
104
|
+
action="Delete Role"
|
|
105
|
+
content="Are you sure you want to delete this role? This action cannot be undone."
|
|
106
|
+
@cancel="setRole({ mode: 'delete' })"
|
|
107
|
+
@confirm="submitDelete()"
|
|
108
|
+
v-model:message="message"
|
|
109
|
+
/>
|
|
110
|
+
</v-dialog>
|
|
142
111
|
</v-row>
|
|
143
112
|
</template>
|
|
144
113
|
|
|
145
114
|
<script setup lang="ts">
|
|
146
115
|
const props = defineProps({
|
|
147
|
-
|
|
116
|
+
app: {
|
|
148
117
|
type: String,
|
|
149
118
|
default: "",
|
|
150
119
|
},
|
|
151
|
-
|
|
152
|
-
type:
|
|
153
|
-
|
|
154
|
-
default: () => ({}),
|
|
120
|
+
org: {
|
|
121
|
+
type: String,
|
|
122
|
+
default: "",
|
|
155
123
|
},
|
|
156
124
|
types: {
|
|
157
125
|
type: Array as PropType<Array<{ title: string; value: string }>>,
|
|
@@ -168,7 +136,7 @@ const props = defineProps({
|
|
|
168
136
|
title: "permissions",
|
|
169
137
|
value: "permissions",
|
|
170
138
|
},
|
|
171
|
-
{ title: "
|
|
139
|
+
{ title: "App", value: "app" },
|
|
172
140
|
],
|
|
173
141
|
},
|
|
174
142
|
canCreateRole: {
|
|
@@ -193,40 +161,75 @@ const props = defineProps({
|
|
|
193
161
|
},
|
|
194
162
|
});
|
|
195
163
|
|
|
196
|
-
const type = defineModel<string>("type", {
|
|
197
|
-
type: String,
|
|
198
|
-
default: "",
|
|
199
|
-
});
|
|
200
|
-
|
|
201
164
|
const { headerSearch } = useLocal();
|
|
202
165
|
|
|
203
|
-
const {
|
|
166
|
+
const {
|
|
167
|
+
role,
|
|
168
|
+
add: addRole,
|
|
169
|
+
getAll: _getRoles,
|
|
170
|
+
updateById,
|
|
171
|
+
deleteById,
|
|
172
|
+
} = useRole();
|
|
204
173
|
|
|
205
174
|
const page = ref(1);
|
|
206
175
|
const pages = ref(0);
|
|
207
176
|
const pageRange = ref("-- - -- of --");
|
|
177
|
+
const modeRole = ref("");
|
|
208
178
|
|
|
209
179
|
const message = ref("");
|
|
210
|
-
|
|
211
|
-
|
|
180
|
+
|
|
181
|
+
function setRole({
|
|
182
|
+
mode = "",
|
|
183
|
+
dialog = false,
|
|
184
|
+
data = useRole().role.value,
|
|
185
|
+
} = {}) {
|
|
186
|
+
Object.assign(
|
|
187
|
+
role.value,
|
|
188
|
+
JSON.parse(
|
|
189
|
+
JSON.stringify({
|
|
190
|
+
...data,
|
|
191
|
+
app: mode === "admin" || mode === "add" ? props.app : data.app,
|
|
192
|
+
})
|
|
193
|
+
)
|
|
194
|
+
);
|
|
195
|
+
modeRole.value = mode;
|
|
196
|
+
message.value = "";
|
|
197
|
+
|
|
198
|
+
if (modeRole.value === "add") {
|
|
199
|
+
dialogAdd.value = dialog;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (modeRole.value === "view") {
|
|
203
|
+
dialogPreview.value = dialog;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
if (modeRole.value === "edit") {
|
|
207
|
+
dialogEdit.value = dialog;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (modeRole.value === "delete") {
|
|
211
|
+
dialogDelete.value = dialog;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
212
214
|
|
|
213
215
|
const items = ref<Array<Record<string, any>>>([]);
|
|
214
216
|
|
|
217
|
+
const isOrg = computed(() => props.app === "org");
|
|
218
|
+
|
|
215
219
|
const {
|
|
216
220
|
data: getRoleReq,
|
|
217
221
|
refresh: getRoles,
|
|
218
222
|
status: getRoleReqStatus,
|
|
219
223
|
} = useLazyAsyncData(
|
|
220
|
-
|
|
224
|
+
`roles-permissions-get-all-by-${props.app}-${props.org}-page-${page.value}`,
|
|
221
225
|
() =>
|
|
222
226
|
_getRoles({
|
|
223
227
|
page: page.value,
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
id: props.id,
|
|
228
|
+
org: props.org,
|
|
229
|
+
app: isOrg.value ? "" : props.app,
|
|
227
230
|
}),
|
|
228
231
|
{
|
|
229
|
-
watch: [page
|
|
232
|
+
watch: [page],
|
|
230
233
|
}
|
|
231
234
|
);
|
|
232
235
|
|
|
@@ -241,135 +244,64 @@ watchEffect(() => {
|
|
|
241
244
|
});
|
|
242
245
|
|
|
243
246
|
function tableRowClickHandler(_: any, data: any) {
|
|
244
|
-
|
|
245
|
-
roleId.value = data.item._id;
|
|
247
|
+
setRole({ data: data.item, mode: "view", dialog: true });
|
|
246
248
|
}
|
|
247
249
|
|
|
248
|
-
const
|
|
249
|
-
|
|
250
|
-
function success() {
|
|
251
|
-
createDialog.value = false;
|
|
252
|
-
type.value = "";
|
|
253
|
-
getRoles();
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
const previewDialog = ref(false);
|
|
257
|
-
|
|
258
|
-
const name = ref("");
|
|
259
|
-
const selectedPermissions = ref<Array<string>>([]);
|
|
260
|
-
const originalPermissions = ref<Array<string>>([]);
|
|
261
|
-
const edit = ref(false);
|
|
250
|
+
const dialogAdd = ref(false);
|
|
262
251
|
|
|
263
|
-
|
|
264
|
-
if (!edit.value) {
|
|
265
|
-
selectedPermissions.value = originalPermissions.value;
|
|
266
|
-
}
|
|
267
|
-
});
|
|
252
|
+
const dialogPreview = ref(false);
|
|
268
253
|
|
|
269
|
-
const
|
|
254
|
+
const { loggedInUser } = useLocalAuth();
|
|
270
255
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
})
|
|
283
|
-
|
|
284
|
-
watchEffect(() => {
|
|
285
|
-
if (role.value) {
|
|
286
|
-
name.value = role.value.name as any;
|
|
287
|
-
|
|
288
|
-
selectedPermissions.value = role.value.permissions as any;
|
|
289
|
-
originalPermissions.value = role.value.permissions as any;
|
|
256
|
+
async function submitAdd() {
|
|
257
|
+
try {
|
|
258
|
+
await addRole({
|
|
259
|
+
name: role.value.name,
|
|
260
|
+
permissions: role.value.permissions,
|
|
261
|
+
app: role.value.app,
|
|
262
|
+
org: props.org,
|
|
263
|
+
createdBy: loggedInUser(),
|
|
264
|
+
});
|
|
265
|
+
setRole({ mode: "add" });
|
|
266
|
+
getRoles();
|
|
267
|
+
} catch (error: any) {
|
|
268
|
+
message.value = error.response._data.message;
|
|
290
269
|
}
|
|
291
|
-
});
|
|
292
|
-
|
|
293
|
-
function filterPermissions(
|
|
294
|
-
allPermissions: TPermissions,
|
|
295
|
-
storedPermissions: string[]
|
|
296
|
-
) {
|
|
297
|
-
const filteredPermissions: TPermissions = {};
|
|
298
|
-
|
|
299
|
-
Object.entries(allPermissions).forEach(([resource, actions]) => {
|
|
300
|
-
const filteredActions = Object.entries(actions)
|
|
301
|
-
.filter(([action]) => storedPermissions.includes(`${resource}:${action}`))
|
|
302
|
-
.reduce((acc: Record<string, any>, [action, data]) => {
|
|
303
|
-
acc[action] = data;
|
|
304
|
-
return acc;
|
|
305
|
-
}, {});
|
|
306
|
-
|
|
307
|
-
if (Object.keys(filteredActions).length > 0) {
|
|
308
|
-
filteredPermissions[resource] = filteredActions;
|
|
309
|
-
}
|
|
310
|
-
});
|
|
311
|
-
|
|
312
|
-
return filteredPermissions;
|
|
313
270
|
}
|
|
314
271
|
|
|
315
|
-
const
|
|
316
|
-
const
|
|
317
|
-
|
|
318
|
-
const permissions = computed(() => {
|
|
319
|
-
if (role.value?.type === "organization") {
|
|
320
|
-
return orgPermissions;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
if (role.value?.type === "school") {
|
|
324
|
-
return schoolPermissions;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
return {};
|
|
328
|
-
});
|
|
329
|
-
|
|
330
|
-
const Permissions = computed(() => {
|
|
331
|
-
return edit.value
|
|
332
|
-
? permissions.value
|
|
333
|
-
: filterPermissions(permissions.value, selectedPermissions.value);
|
|
334
|
-
});
|
|
272
|
+
const dialogEdit = ref(false);
|
|
273
|
+
const dialogDelete = ref(false);
|
|
335
274
|
|
|
336
|
-
function
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
getRoleById();
|
|
340
|
-
edit.value = false;
|
|
275
|
+
function handOpenEdit() {
|
|
276
|
+
dialogPreview.value = false;
|
|
277
|
+
dialogEdit.value = true;
|
|
341
278
|
}
|
|
342
279
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
280
|
+
async function submitEdit() {
|
|
281
|
+
try {
|
|
282
|
+
await updateById(role.value._id ?? "", {
|
|
283
|
+
name: role.value.name,
|
|
284
|
+
permissions: role.value.permissions,
|
|
285
|
+
});
|
|
286
|
+
await setRole({ mode: "edit" });
|
|
287
|
+
await getRoles();
|
|
288
|
+
} catch (error: any) {
|
|
289
|
+
message.value = error.response._data.message;
|
|
290
|
+
}
|
|
350
291
|
}
|
|
351
292
|
|
|
352
|
-
function
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
messageSnackbar.value = true;
|
|
293
|
+
function handleOpenDelete() {
|
|
294
|
+
dialogPreview.value = false;
|
|
295
|
+
dialogDelete.value = true;
|
|
356
296
|
}
|
|
357
297
|
|
|
358
|
-
async function
|
|
359
|
-
if (!selectedRoleId.value) return;
|
|
360
|
-
deleteLoading.value = true;
|
|
298
|
+
async function submitDelete() {
|
|
361
299
|
try {
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
confirmDialog.value = false;
|
|
365
|
-
showMessage(res.message, "success");
|
|
300
|
+
await deleteById(role.value._id ?? "");
|
|
301
|
+
dialogDelete.value = false;
|
|
366
302
|
getRoles();
|
|
367
303
|
} catch (error: any) {
|
|
368
|
-
|
|
369
|
-
showMessage(errorMessage, "error");
|
|
370
|
-
} finally {
|
|
371
|
-
deleteLoading.value = false;
|
|
372
|
-
selectedRoleId.value = null;
|
|
304
|
+
message.value = error.response._data.message;
|
|
373
305
|
}
|
|
374
306
|
}
|
|
375
307
|
</script>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export default function useApps() {
|
|
2
|
+
const app = ref<TApp>({
|
|
3
|
+
_id: "",
|
|
4
|
+
code: "",
|
|
5
|
+
name: "",
|
|
6
|
+
description: "",
|
|
7
|
+
status: "active",
|
|
8
|
+
createdAt: "",
|
|
9
|
+
updatedAt: "",
|
|
10
|
+
deletedAt: "",
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
const resource = "/api/apps";
|
|
14
|
+
|
|
15
|
+
function add(value: TApp) {
|
|
16
|
+
return useNuxtApp().$api(resource, {
|
|
17
|
+
method: "POST",
|
|
18
|
+
body: value,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function getAll({
|
|
23
|
+
page = 1,
|
|
24
|
+
limit = 10,
|
|
25
|
+
search = "",
|
|
26
|
+
status = "active",
|
|
27
|
+
type = "standard",
|
|
28
|
+
} = {}) {
|
|
29
|
+
return useNuxtApp().$api<Record<string, any>>(resource, {
|
|
30
|
+
method: "GET",
|
|
31
|
+
query: { page, limit, search, status, type },
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function updateById(
|
|
36
|
+
id: string,
|
|
37
|
+
value: { name: string; description: string }
|
|
38
|
+
) {
|
|
39
|
+
return useNuxtApp().$api(`${resource}/id/${id}`, {
|
|
40
|
+
method: "PATCH",
|
|
41
|
+
body: value,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function deleteById(id: string) {
|
|
46
|
+
return useNuxtApp().$api(`${resource}/id/${id}`, {
|
|
47
|
+
method: "DELETE",
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
app,
|
|
53
|
+
add,
|
|
54
|
+
getAll,
|
|
55
|
+
updateById,
|
|
56
|
+
deleteById,
|
|
57
|
+
};
|
|
58
|
+
}
|
package/composables/useLocal.ts
CHANGED
|
@@ -2,6 +2,18 @@ export default function useLocalAuth() {
|
|
|
2
2
|
const { cookieConfig } = useRuntimeConfig().public;
|
|
3
3
|
|
|
4
4
|
const currentUser = useState<TUser | null>("currentUser", () => null);
|
|
5
|
+
const permissions = useState<string[]>("permissions", () => []);
|
|
6
|
+
|
|
7
|
+
const hasPermission = (permissionKey: string): ComputedRef<boolean> => {
|
|
8
|
+
return computed(() => {
|
|
9
|
+
if (!permissions.value.length) return false;
|
|
10
|
+
return permissions.value.some((perm) => perm === permissionKey);
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
function loggedInUser() {
|
|
15
|
+
return useCookie("user", cookieConfig).value ?? "";
|
|
16
|
+
}
|
|
5
17
|
|
|
6
18
|
function authenticate() {
|
|
7
19
|
if (currentUser.value) {
|
|
@@ -128,6 +140,9 @@ export default function useLocalAuth() {
|
|
|
128
140
|
}
|
|
129
141
|
|
|
130
142
|
return {
|
|
143
|
+
loggedInUser,
|
|
144
|
+
permissions,
|
|
145
|
+
hasPermission,
|
|
131
146
|
authenticate,
|
|
132
147
|
login,
|
|
133
148
|
setSession,
|
package/composables/useMember.ts
CHANGED
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
export default function useMember() {
|
|
2
|
-
const
|
|
3
|
-
const page = useState("page", () => 1);
|
|
4
|
-
const pages = useState("pages", () => 0);
|
|
5
|
-
const pageRange = useState("pageRange", () => "-- - -- of --");
|
|
6
|
-
|
|
7
|
-
const member = useState<TMember>("member", () => ({
|
|
8
|
-
_id: "",
|
|
2
|
+
const member = ref<TMember>({
|
|
9
3
|
org: "",
|
|
10
4
|
orgName: "",
|
|
11
|
-
roleName: "",
|
|
12
5
|
name: "",
|
|
13
6
|
user: "",
|
|
14
7
|
role: "",
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
const invitation = ref<TMemberInvitation>({
|
|
11
|
+
_id: "",
|
|
12
|
+
email: "",
|
|
13
|
+
app: "",
|
|
14
|
+
org: "",
|
|
15
|
+
role: "",
|
|
16
|
+
});
|
|
23
17
|
|
|
24
18
|
function getByUserId(user: string) {
|
|
25
19
|
return useNuxtApp().$api<TMember>(`/api/members/user/${user}`);
|
|
@@ -32,18 +26,41 @@ export default function useMember() {
|
|
|
32
26
|
});
|
|
33
27
|
}
|
|
34
28
|
|
|
29
|
+
function getByApp({ app = "", user = "", org = "" } = {}) {
|
|
30
|
+
return useNuxtApp().$api<TMember>(`/api/members/app/${app}/user/${user}`, {
|
|
31
|
+
method: "GET",
|
|
32
|
+
query: { org },
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function getAllByAppUser({
|
|
37
|
+
app = "",
|
|
38
|
+
user = "",
|
|
39
|
+
limit = 10,
|
|
40
|
+
page = 1,
|
|
41
|
+
search = "",
|
|
42
|
+
} = {}) {
|
|
43
|
+
return useNuxtApp().$api<Record<string, any>>(
|
|
44
|
+
`/api/members/orgs/app/${app}/user/${user}`,
|
|
45
|
+
{
|
|
46
|
+
method: "GET",
|
|
47
|
+
query: { page, limit, search },
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
35
52
|
async function getAll({
|
|
36
53
|
page = 1,
|
|
37
54
|
search = "",
|
|
38
55
|
limit = 10,
|
|
39
56
|
user = "",
|
|
40
57
|
org = "",
|
|
41
|
-
|
|
58
|
+
app = "",
|
|
42
59
|
status = "active",
|
|
43
60
|
} = {}) {
|
|
44
|
-
return useNuxtApp().$api<Record<string, any>>(
|
|
61
|
+
return useNuxtApp().$api<Record<string, any>>(`/api/members/app/${app}`, {
|
|
45
62
|
method: "GET",
|
|
46
|
-
query: { page, limit, search, user, org,
|
|
63
|
+
query: { page, limit, search, user, org, status },
|
|
47
64
|
});
|
|
48
65
|
}
|
|
49
66
|
function createUserByVerification(
|
|
@@ -76,32 +93,45 @@ export default function useMember() {
|
|
|
76
93
|
);
|
|
77
94
|
}
|
|
78
95
|
|
|
79
|
-
function
|
|
80
|
-
id: string,
|
|
81
|
-
role: string,
|
|
82
|
-
type: string,
|
|
83
|
-
org: string
|
|
84
|
-
) {
|
|
96
|
+
function updateRoleById(id: string, role: string) {
|
|
85
97
|
return useNuxtApp().$api<Record<string, any>>(
|
|
86
|
-
`/api/members/id/${id}
|
|
98
|
+
`/api/members/role/id/${id}`,
|
|
87
99
|
{
|
|
88
|
-
method: "
|
|
100
|
+
method: "PATCH",
|
|
101
|
+
body: { role },
|
|
89
102
|
}
|
|
90
103
|
);
|
|
91
104
|
}
|
|
105
|
+
|
|
106
|
+
function updateStatusById(id: string, status: string) {
|
|
107
|
+
return useNuxtApp().$api<Record<string, any>>(
|
|
108
|
+
`/api/members/status/id/${id}`,
|
|
109
|
+
{
|
|
110
|
+
method: "PATCH",
|
|
111
|
+
body: { status },
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function deleteById(id: string) {
|
|
117
|
+
return useNuxtApp().$api<Record<string, any>>(`/api/members/id/${id}`, {
|
|
118
|
+
method: "DELETE",
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
92
122
|
return {
|
|
93
|
-
members,
|
|
94
123
|
member,
|
|
95
|
-
|
|
96
|
-
pages,
|
|
97
|
-
pageRange,
|
|
98
|
-
|
|
124
|
+
invitation,
|
|
99
125
|
getAll,
|
|
100
126
|
getByUserId,
|
|
101
127
|
createUserByVerification,
|
|
102
128
|
createMemberInvite,
|
|
103
129
|
getByUserType,
|
|
130
|
+
getByApp,
|
|
104
131
|
updateMemberStatus,
|
|
105
|
-
|
|
132
|
+
updateRoleById,
|
|
133
|
+
updateStatusById,
|
|
134
|
+
deleteById,
|
|
135
|
+
getAllByAppUser,
|
|
106
136
|
};
|
|
107
137
|
}
|