Add user edit/new dialog

This commit is contained in:
Johannes Zellner
2025-02-16 17:04:58 +01:00
parent 270d27be73
commit 740c88c506
4 changed files with 311 additions and 5 deletions
+78
View File
@@ -31,6 +31,40 @@ function create() {
return [null, users];
},
async add(user) {
const data = {
email: user.email,
fallbackEmail: user.fallbackEmail,
displayName: user.displayName,
role: user.role
};
if (user.username) data.username = user.username;
if (user.password) data.password = user.password;
let result;
try {
result = await fetcher.post(`${origin}/api/v1/users`, data, { access_token: accessToken });
} catch (e) {
return [e];
}
if (result.status !== 201) return [result];
return [null, result.body];
},
async update(id, data) {
let result;
try {
result = await fetcher.post(`${origin}/api/v1/users/${id}/profile`, data, { access_token: accessToken });
} catch (e) {
return [e];
}
if (result.status !== 204) return [result];
return [null];
},
async remove(id) {
let result;
try {
@@ -42,6 +76,39 @@ function create() {
if (result.status !== 204) return [result];
return [null];
},
async setLocalGroups(id, groupIds) {
let result;
try {
result = await fetcher.put(`${origin}/api/v1/users/${id}/groups`, { groupIds }, { access_token: accessToken });
} catch (e) {
return [e];
}
if (result.status !== 204) return [result];
return [null];
},
async setRole(id, role) {
let result;
try {
result = await fetcher.put(`${origin}/api/v1/users/${id}/role`, { role }, { access_token: accessToken });
} catch (e) {
return [e];
}
if (result.status !== 204) return [result];
return [null];
},
async setActive(id, active) {
let result;
try {
result = await fetcher.put(`${origin}/api/v1/users/${id}/active`, { active }, { access_token: accessToken });
} catch (e) {
return [e];
}
if (result.status !== 204) return [result];
return [null];
},
async setGhost(id, password, expiresAt = 0) {
const data = { password };
@@ -76,6 +143,17 @@ function create() {
return [e];
}
if (result.status !== 202) return [result];
return [null];
},
async sendInviteEmail(id, email) {
let result;
try {
result = await fetcher.post(`${origin}/api/v1/users/${id}/send_invite_email`, { email }, { access_token: accessToken });
} catch (e) {
return [e];
}
if (result.status !== 202) return [result];
return [null];
},