mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-08-04 13:05:21 +02:00
refactor: ♻️ rewrite admin CRUD interface for admins (#825)
* docs: 📝 general documentation + add FAQ page * fix(frontend): 🐛 readd missing upload button to backups. * feat(backend): ✨ add support for backup sizes to be displayed on frontend * feat(backend): ✨ add backend for administrator CRUD of users * add admin support for user * refactor(frontend): ♻️ rewrite admin CRUD interface for admins * fix build errors Co-authored-by: hay-kot <hay-kot@pm.me>
This commit is contained in:
parent
7afdd5b577
commit
dce84c3937
32 changed files with 657 additions and 563 deletions
|
@ -6,6 +6,5 @@ export const fieldTypes = {
|
|||
OBJECT: "object",
|
||||
BOOLEAN: "boolean",
|
||||
COLOR: "color",
|
||||
};
|
||||
|
||||
|
||||
PASSWORD: "password",
|
||||
} as const;
|
||||
|
|
|
@ -79,7 +79,6 @@ export const useBackups = function (fetch = true) {
|
|||
|
||||
async function deleteBackup() {
|
||||
const { response } = await api.backups.deleteOne(deleteTarget.value);
|
||||
|
||||
if (response && response.status === 200) {
|
||||
refreshBackups();
|
||||
}
|
||||
|
|
|
@ -77,9 +77,9 @@ export const useUser = function (refreshFunc: CallableFunction | null = null) {
|
|||
return data;
|
||||
}
|
||||
|
||||
async function updateUser(slug: string, user: UserOut) {
|
||||
async function updateUser(itemId: string, user: UserOut) {
|
||||
loading.value = true;
|
||||
const { data } = await api.users.updateOne(slug, user);
|
||||
const { data } = await api.users.updateOne(itemId, user);
|
||||
loading.value = false;
|
||||
|
||||
if (refreshFunc) {
|
||||
|
|
1
frontend/composables/use-users/index.ts
Normal file
1
frontend/composables/use-users/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export { useUserForm } from "./user-form";
|
68
frontend/composables/use-users/user-form.ts
Normal file
68
frontend/composables/use-users/user-form.ts
Normal file
|
@ -0,0 +1,68 @@
|
|||
import { fieldTypes } from "../forms";
|
||||
import { AutoFormItems } from "~/types/auto-forms";
|
||||
|
||||
export const useUserForm = () => {
|
||||
const userForm: AutoFormItems = [
|
||||
{
|
||||
section: "User Details",
|
||||
label: "User Name",
|
||||
varName: "username",
|
||||
type: fieldTypes.TEXT,
|
||||
rules: ["required"],
|
||||
},
|
||||
{
|
||||
label: "Full Name",
|
||||
varName: "fullName",
|
||||
type: fieldTypes.TEXT,
|
||||
rules: ["required"],
|
||||
},
|
||||
{
|
||||
label: "Email",
|
||||
varName: "email",
|
||||
type: fieldTypes.TEXT,
|
||||
rules: ["required"],
|
||||
},
|
||||
{
|
||||
label: "Password",
|
||||
varName: "password",
|
||||
disableUpdate: true,
|
||||
type: fieldTypes.PASSWORD,
|
||||
rules: ["required"],
|
||||
},
|
||||
{
|
||||
section: "Permissions",
|
||||
label: "Administrator",
|
||||
varName: "admin",
|
||||
type: fieldTypes.BOOLEAN,
|
||||
rules: ["required"],
|
||||
},
|
||||
{
|
||||
label: "User can invite other to group",
|
||||
varName: "canInvite",
|
||||
type: fieldTypes.BOOLEAN,
|
||||
rules: ["required"],
|
||||
},
|
||||
{
|
||||
label: "User can manage group",
|
||||
varName: "canManage",
|
||||
type: fieldTypes.BOOLEAN,
|
||||
rules: ["required"],
|
||||
},
|
||||
{
|
||||
label: "User can organize group data",
|
||||
varName: "canOrganize",
|
||||
type: fieldTypes.BOOLEAN,
|
||||
rules: ["required"],
|
||||
},
|
||||
{
|
||||
label: "Enable advanced features",
|
||||
varName: "advanced",
|
||||
type: fieldTypes.BOOLEAN,
|
||||
rules: ["required"],
|
||||
},
|
||||
];
|
||||
|
||||
return {
|
||||
userForm,
|
||||
};
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue