ui(admin): add user create and user update

This commit is contained in:
Matthew Penner 2021-07-24 12:23:33 -06:00
parent 1d290919b7
commit 27c93365e9
6 changed files with 299 additions and 7 deletions

View file

@ -1,11 +1,17 @@
import http from '@/api/http';
import { User, rawDataToUser } from '@/api/admin/users/getUsers';
import { Values } from '@/api/admin/users/updateUser';
export default (name: string, include: string[] = []): Promise<User> => {
export type { Values };
export default (values: Values, include: string[] = []): Promise<User> => {
const data = {};
Object.keys(values).forEach(k => {
// @ts-ignore
data[k.replace(/[A-Z]/g, l => `_${l.toLowerCase()}`)] = values[k];
});
return new Promise((resolve, reject) => {
http.post('/api/application/users', {
name,
}, { params: { include: include.join(',') } })
http.post('/api/application/users', data, { params: { include: include.join(',') } })
.then(({ data }) => resolve(rawDataToUser(data)))
.catch(reject);
});

View file

@ -15,6 +15,7 @@ export interface User {
rootAdmin: boolean;
tfa: boolean;
avatarURL: string;
roleId: number | null;
roleName: string | null;
createdAt: Date;
updatedAt: Date;
@ -32,6 +33,7 @@ export const rawDataToUser = ({ attributes }: FractalResponseData): User => ({
rootAdmin: attributes.root_admin,
tfa: attributes['2fa'],
avatarURL: attributes.avatar_url,
roleId: attributes.role_id,
roleName: attributes.role_name,
createdAt: new Date(attributes.created_at),
updatedAt: new Date(attributes.updated_at),

View file

@ -0,0 +1,24 @@
import http from '@/api/http';
import { User, rawDataToUser } from '@/api/admin/users/getUsers';
export interface Values {
username: string;
email: string;
firstName: string;
lastName: string;
password: string;
roleId: number | null;
}
export default (id: number, values: Partial<Values>, include: string[] = []): Promise<User> => {
const data = {};
Object.keys(values).forEach(k => {
// @ts-ignore
data[k.replace(/[A-Z]/g, l => `_${l.toLowerCase()}`)] = values[k];
});
return new Promise((resolve, reject) => {
http.patch(`/api/application/users/${id}`, data, { params: { include: include.join(',') } })
.then(({ data }) => resolve(rawDataToUser(data)))
.catch(reject);
});
};