diff --git a/composables/useGroups.ts b/composables/useGroups.ts new file mode 100644 index 0000000..0873d51 --- /dev/null +++ b/composables/useGroups.ts @@ -0,0 +1,56 @@ +const { $api } = useNuxtApp(); +export const useGroups = () => { + /** + * Get all groups + * + * @returns + */ + const groupList = async () => { + return await $api.get('/groups'); + }; + + /** + * get group info + * @param name + * @returns + */ + const getGroupInfo = async (name: string) => { + return await $api.get(`/group/${encodeURIComponent(name)}`); + }; + + /** + * add group + * @param data + * @returns + */ + const groupAdd = async (data: any) => { + return await $api.post('/groups', data); + }; + + /** + * delete group + * @param name + * @returns + */ + const groupDelete = async (name: string) => { + return await $api.delete(`/group/${encodeURIComponent(name)}`, {}); + }; + + /** + * update group + * @param name + * @param data + * @returns + */ + const groupUpdate = async (name: string, data: any) => { + return await $api.put(`/group/${encodeURIComponent(name)}`, data); + }; + + return { + groupList, + getGroupInfo, + groupAdd, + groupDelete, + groupUpdate, + }; +}; diff --git a/composables/usePolicies.ts b/composables/usePolicies.ts new file mode 100644 index 0000000..ccdf881 --- /dev/null +++ b/composables/usePolicies.ts @@ -0,0 +1,57 @@ +const { $api } = useNuxtApp(); +export const usePolicies = () => { + /** + * 获取策略列表 + * @returns + */ + const ListPolicies = async () => { + return await $api.get('/policies'); + }; + + /** + * 添加策略 + * @param data + * @returns + */ + const addPolicy = async (data: any) => { + return await $api.post('/policies', data); + }; + + /** + * 获取策略详情 + * @param policyName + * @returns + */ + const getPolicyInfo = async (policyName: string) => { + return await $api.get(`/policy/${encodeURIComponent(policyName)}`); + }; + + /** + * 获取策略用户列表 + * @param policyName + * @returns + */ + const listUsersForPolicy = async (policyName: string) => { + return await $api.get(`/policy/${encodeURIComponent(policyName)}/users`); + }; + + /** + * 获取策略组列表 + * @param policyName + * @returns + */ + const listGroupsForPolicy = async (policyName: string) => { + return await $api.get(`/policy/${encodeURIComponent(policyName)}/groups`); + }; + + /** + * 删除策略 + * @param policyName + * @returns + */ + const deletePolicy = async (policyName: string) => { + return await $api.delete(`/policy/${encodeURIComponent(policyName)}`, {}); + }; + + return { ListPolicies, getPolicyInfo, addPolicy, deletePolicy, listUsersForPolicy, listGroupsForPolicy }; +}; diff --git a/composables/useUsers.ts b/composables/useUsers.ts new file mode 100644 index 0000000..9eaf900 --- /dev/null +++ b/composables/useUsers.ts @@ -0,0 +1,7 @@ +const { $api } = useNuxtApp(); +export const useUsers = () => { + const ListUsers = async () => { + return await $api.get('/users'); + }; + return { ListUsers }; +}; diff --git a/pages/users/components/newGroup.vue b/pages/users/components/newGroup.vue index be5ef0a..a24c02c 100644 --- a/pages/users/components/newGroup.vue +++ b/pages/users/components/newGroup.vue @@ -7,6 +7,8 @@ interface Props { const { visible } = defineProps(); const message = useMessage(); const { $api } = useNuxtApp(); +const group = useGroups(); +const user = useUsers(); const emit = defineEmits(); const defaultFormModal = { @@ -20,7 +22,20 @@ interface Emits { (e: 'search'): void; } +// 用户列表 const users = ref([]); +const getUserList = async () => { + // const res = await user.ListUsers(); + const res = await $api.get('/users'); + + users.value = res.users.map((item: any) => { + return { + label: item.accessKey, + value: item.accessKey, + }; + }); +}; +getUserList(); const modalVisible = computed({ get() { @@ -35,10 +50,13 @@ function closeModal(visible = false) { } async function submitForm() { + if (formModel.value.group.trim() === '') { + message.error('请输入用户组名称'); + return; + } try { - const res = await $api.post('/group', { - body: formModel.value, - }); + const res = await group.groupAdd({ ...formModel.value }); + message.success('添加成功'); closeModal(); emit('search'); @@ -61,7 +79,7 @@ async function submitForm() { }"> - + diff --git a/pages/users/index.vue b/pages/users/index.vue index 0809e5a..af08fc7 100644 --- a/pages/users/index.vue +++ b/pages/users/index.vue @@ -6,7 +6,7 @@ - + diff --git a/pages/users/tabs/groupTab.vue b/pages/users/tabs/groupTab.vue index dff10e6..6b51341 100644 --- a/pages/users/tabs/groupTab.vue +++ b/pages/users/tabs/groupTab.vue @@ -31,18 +31,35 @@ - + +