forked from open-webui/open-webui
chore: admin page refac
This commit is contained in:
parent
1303407f53
commit
bb190245f7
2 changed files with 70 additions and 47 deletions
58
src/lib/apis/users/index.ts
Normal file
58
src/lib/apis/users/index.ts
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
import { WEBUI_API_BASE_URL } from '$lib/constants';
|
||||||
|
|
||||||
|
export const updateUserRole = async (token: string, id: string, role: string) => {
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${WEBUI_API_BASE_URL}/users/update/role`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: `Bearer ${token}`
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
id: id,
|
||||||
|
role: role
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (!res.ok) throw await res.json();
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
error = error.detail;
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getUsers = async (token: string) => {
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${WEBUI_API_BASE_URL}/users`, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: `Bearer ${token}`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (!res.ok) throw await res.json();
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res ? res : [];
|
||||||
|
};
|
|
@ -6,62 +6,27 @@
|
||||||
|
|
||||||
import toast from 'svelte-french-toast';
|
import toast from 'svelte-french-toast';
|
||||||
|
|
||||||
|
import { updateUserRole, getUsers } from '$lib/apis/users';
|
||||||
|
|
||||||
let loaded = false;
|
let loaded = false;
|
||||||
let users = [];
|
let users = [];
|
||||||
|
|
||||||
const updateUserRole = async (id, role) => {
|
const updateRoleHandler = async (id, role) => {
|
||||||
const res = await fetch(`${WEBUI_API_BASE_URL}/users/update/role`, {
|
const res = await updateUserRole(localStorage.token, id, role).catch((error) => {
|
||||||
method: 'POST',
|
toast.error(error);
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
Authorization: `Bearer ${localStorage.token}`
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
id: id,
|
|
||||||
role: role
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.then(async (res) => {
|
|
||||||
if (!res.ok) throw await res.json();
|
|
||||||
return res.json();
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
console.log(error);
|
|
||||||
toast.error(error.detail);
|
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
await getUsers();
|
users = await getUsers(localStorage.token);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const getUsers = async () => {
|
|
||||||
const res = await fetch(`${WEBUI_API_BASE_URL}/users`, {
|
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
Authorization: `Bearer ${localStorage.token}`
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(async (res) => {
|
|
||||||
if (!res.ok) throw await res.json();
|
|
||||||
return res.json();
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
console.log(error);
|
|
||||||
toast.error(error.detail);
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
users = res ? res : [];
|
|
||||||
};
|
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
if ($user?.role !== 'admin') {
|
if ($user?.role !== 'admin') {
|
||||||
await goto('/');
|
await goto('/');
|
||||||
} else {
|
} else {
|
||||||
await getUsers();
|
users = await getUsers(localStorage.token);
|
||||||
}
|
}
|
||||||
loaded = true;
|
loaded = true;
|
||||||
});
|
});
|
||||||
|
@ -115,11 +80,11 @@
|
||||||
class=" dark:text-white underline"
|
class=" dark:text-white underline"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
if (user.role === 'user') {
|
if (user.role === 'user') {
|
||||||
updateUserRole(user.id, 'admin');
|
updateRoleHandler(user.id, 'admin');
|
||||||
} else if (user.role === 'pending') {
|
} else if (user.role === 'pending') {
|
||||||
updateUserRole(user.id, 'user');
|
updateRoleHandler(user.id, 'user');
|
||||||
} else {
|
} else {
|
||||||
updateUserRole(user.id, 'pending');
|
updateRoleHandler(user.id, 'pending');
|
||||||
}
|
}
|
||||||
}}>{user.role}</button
|
}}>{user.role}</button
|
||||||
>
|
>
|
||||||
|
|
Loading…
Reference in a new issue