-
Notifications
You must be signed in to change notification settings - Fork 344
/
Copy pathAddUserToWorkspace.vue
86 lines (77 loc) · 1.75 KB
/
AddUserToWorkspace.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<template>
<form
v-if="isWorkspaceAdmin"
class="my-2"
@submit.prevent="addUser"
>
<text-input
v-model="newUser"
name="email"
label="Email"
:required="true"
:disabled="disabled"
placeholder="Add a new user by email"
/>
<select-input
v-model="newUserRole"
name="newUserRole"
:options="roleOptions"
:disabled="disabled"
placeholder="Select User Role"
label="Role"
:required="true"
/>
<div class="flex justify-center mt-2">
<UButton
type="submit"
:disabled="disabled"
:loading="addingUsersState"
icon="i-heroicons-envelope"
>
Invite User
</UButton>
</div>
</form>
</template>
<script setup>
const props = defineProps({
isWorkspaceAdmin: {},
disabled: {
type: Boolean,
default: false,
},
})
const emit = defineEmits(['fetchUsers'])
const workspacesStore = useWorkspacesStore()
const roleOptions = [
{name: "User", value: "user"},
{name: "Admin", value: "admin"},
{name: "Read Only", value: "readonly"}
]
const newUser = ref("")
const newUserRole = ref("user")
const addingUsersState = ref(false)
const addUser = () => {
if (!newUser.value) return
addingUsersState.value = true
opnFetch(
"/open/workspaces/" + workspacesStore.currentId + "/users/add",
{
method: "POST",
body: {
email: newUser.value,
role: newUserRole.value,
},
}
).then((data) => {
newUser.value = ""
newUserRole.value = "user"
useAlert().success(data.message)
emit("fetchUsers")
}).catch((error) => {
useAlert().error("There was an error adding user: " + error.data.message)
}).finally(() => {
addingUsersState.value = false
})
}
</script>