2023-05-24 11:46:11 +02:00
|
|
|
import { UmbData } from './data.js';
|
2023-04-26 01:04:41 +12:00
|
|
|
import { PagedUserResponseModel, UserResponseModel, UserStateModel } from '@umbraco-cms/backoffice/backend-api';
|
2022-10-04 15:15:45 +02:00
|
|
|
|
2022-10-05 11:49:37 +02:00
|
|
|
// Temp mocked database
|
2023-04-26 01:04:41 +12:00
|
|
|
class UmbUsersData extends UmbData<UserResponseModel> {
|
|
|
|
|
constructor(data: UserResponseModel[]) {
|
2022-10-05 11:49:37 +02:00
|
|
|
super(data);
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-26 01:04:41 +12:00
|
|
|
getAll(): PagedUserResponseModel {
|
|
|
|
|
return {
|
|
|
|
|
total: this.data.length,
|
|
|
|
|
items: this.data,
|
|
|
|
|
};
|
2022-12-13 19:50:58 +01:00
|
|
|
}
|
|
|
|
|
|
2023-04-26 01:04:41 +12:00
|
|
|
getById(id: string): UserResponseModel | undefined {
|
|
|
|
|
return this.data.find((user) => user.id === id);
|
|
|
|
|
}
|
2022-11-14 22:32:29 +01:00
|
|
|
|
2023-06-09 08:54:50 +02:00
|
|
|
save(id: string, saveItem: UserResponseModel) {
|
2023-06-08 15:16:34 +02:00
|
|
|
const foundIndex = this.data.findIndex((item) => item.id === id);
|
2023-04-26 01:04:41 +12:00
|
|
|
if (foundIndex !== -1) {
|
|
|
|
|
// update
|
|
|
|
|
this.data[foundIndex] = saveItem;
|
|
|
|
|
this.updateData(saveItem);
|
|
|
|
|
} else {
|
|
|
|
|
// new
|
|
|
|
|
this.data.push(saveItem);
|
|
|
|
|
}
|
2022-11-14 22:32:29 +01:00
|
|
|
|
2023-04-26 01:04:41 +12:00
|
|
|
return saveItem;
|
2022-11-14 22:32:29 +01:00
|
|
|
}
|
|
|
|
|
|
2023-04-26 01:04:41 +12:00
|
|
|
protected updateData(updateItem: UserResponseModel) {
|
|
|
|
|
const itemIndex = this.data.findIndex((item) => item.id === updateItem.id);
|
|
|
|
|
const item = this.data[itemIndex];
|
|
|
|
|
|
|
|
|
|
console.log('updateData', updateItem, itemIndex, item);
|
|
|
|
|
|
|
|
|
|
if (!item) return;
|
2022-10-05 11:49:37 +02:00
|
|
|
|
2023-04-26 01:04:41 +12:00
|
|
|
const itemKeys = Object.keys(item);
|
|
|
|
|
const newItem = {};
|
|
|
|
|
|
|
|
|
|
for (const [key] of Object.entries(updateItem)) {
|
|
|
|
|
if (itemKeys.indexOf(key) !== -1) {
|
|
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
|
|
|
// @ts-ignore
|
|
|
|
|
newItem[key] = updateItem[key];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
|
|
|
// @ts-ignore
|
|
|
|
|
this.data[itemIndex] = newItem;
|
|
|
|
|
|
|
|
|
|
console.log('updateData', this.data[itemIndex]);
|
2022-10-05 11:49:37 +02:00
|
|
|
}
|
2023-04-26 01:04:41 +12:00
|
|
|
|
|
|
|
|
// updateUserGroup(ids: string[], userGroup: string) {
|
|
|
|
|
// this.data.forEach((user) => {
|
|
|
|
|
// if (ids.includes(user.id)) {
|
|
|
|
|
// } else {
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// this.updateData(user);
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
// return this.data.map((user) => user.id);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// enable(ids: string[]) {
|
|
|
|
|
// const users = this.data.filter((user) => ids.includes(user.id));
|
|
|
|
|
// users.forEach((user) => {
|
|
|
|
|
// user.status = 'enabled';
|
|
|
|
|
// this.updateData(user);
|
|
|
|
|
// });
|
|
|
|
|
// return users.map((user) => user.id);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// disable(ids: string[]) {
|
|
|
|
|
// const users = this.data.filter((user) => ids.includes(user.id));
|
|
|
|
|
// users.forEach((user) => {
|
|
|
|
|
// user.status = 'disabled';
|
|
|
|
|
// this.updateData(user);
|
|
|
|
|
// });
|
|
|
|
|
// return users.map((user) => user.id);
|
|
|
|
|
// }
|
2022-10-05 11:49:37 +02:00
|
|
|
}
|
|
|
|
|
|
2023-04-26 01:04:41 +12:00
|
|
|
export const data: Array<UserResponseModel & { type: string }> = [
|
2022-11-02 17:03:07 +01:00
|
|
|
{
|
2023-04-04 13:19:19 +02:00
|
|
|
id: 'bca6c733-a63d-4353-a271-9a8b6bcca8bd',
|
2022-11-02 17:03:07 +01:00
|
|
|
type: 'user',
|
2023-04-26 01:04:41 +12:00
|
|
|
$type: 'UserResponseModel',
|
|
|
|
|
contentStartNodeIds: [],
|
|
|
|
|
mediaStartNodeIds: [],
|
2022-11-02 17:03:07 +01:00
|
|
|
name: 'Erny Baptista',
|
|
|
|
|
email: 'ebaptista1@csmonitor.com',
|
2023-04-26 01:04:41 +12:00
|
|
|
languageIsoCode: 'Kannada',
|
|
|
|
|
state: UserStateModel.ACTIVE,
|
2022-11-02 17:03:07 +01:00
|
|
|
lastLoginDate: '9/10/2022',
|
2023-05-01 11:35:04 +02:00
|
|
|
lastLockoutDate: '11/23/2021',
|
2022-10-04 15:15:45 +02:00
|
|
|
lastPasswordChangeDate: '1/10/2022',
|
2022-11-02 17:03:07 +01:00
|
|
|
updateDate: '2/10/2022',
|
|
|
|
|
createDate: '3/13/2022',
|
|
|
|
|
failedLoginAttempts: 946,
|
2023-05-16 16:33:02 +02:00
|
|
|
userGroupIds: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1'],
|
2022-10-04 15:15:45 +02:00
|
|
|
},
|
|
|
|
|
{
|
2023-04-26 01:04:41 +12:00
|
|
|
id: '82e11d3d-b91d-43c9-9071-34d28e62e81d',
|
|
|
|
|
type: 'user',
|
|
|
|
|
$type: 'UserResponseModel',
|
|
|
|
|
contentStartNodeIds: [],
|
|
|
|
|
mediaStartNodeIds: [],
|
|
|
|
|
name: 'Amelie Walker',
|
|
|
|
|
email: 'awalker1@domain.com',
|
|
|
|
|
languageIsoCode: 'Japanese',
|
|
|
|
|
state: UserStateModel.INACTIVE,
|
|
|
|
|
lastLoginDate: '4/12/2023',
|
2023-05-01 11:35:04 +02:00
|
|
|
lastLockoutDate: '',
|
2023-04-26 01:04:41 +12:00
|
|
|
lastPasswordChangeDate: '4/1/2023',
|
|
|
|
|
updateDate: '4/12/2023',
|
|
|
|
|
createDate: '4/12/2023',
|
|
|
|
|
failedLoginAttempts: 0,
|
2023-05-16 16:33:02 +02:00
|
|
|
userGroupIds: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1'],
|
2023-04-26 01:04:41 +12:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'aa1d83a9-bc7f-47d2-b288-58d8a31f5017',
|
|
|
|
|
type: 'user',
|
|
|
|
|
$type: 'UserResponseModel',
|
|
|
|
|
contentStartNodeIds: [],
|
|
|
|
|
mediaStartNodeIds: [],
|
|
|
|
|
name: 'Oliver Kim',
|
|
|
|
|
email: 'okim1@domain.com',
|
|
|
|
|
languageIsoCode: 'Russian',
|
|
|
|
|
state: UserStateModel.ACTIVE,
|
|
|
|
|
lastLoginDate: '4/11/2023',
|
2023-05-01 11:35:04 +02:00
|
|
|
lastLockoutDate: '',
|
2023-04-26 01:04:41 +12:00
|
|
|
lastPasswordChangeDate: '4/5/2023',
|
|
|
|
|
updateDate: '4/11/2023',
|
|
|
|
|
createDate: '4/11/2023',
|
|
|
|
|
failedLoginAttempts: 0,
|
2023-05-16 16:33:02 +02:00
|
|
|
userGroupIds: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1'],
|
2023-04-26 01:04:41 +12:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'ff2f4a50-d3d4-4bc4-869d-c7948c160e54',
|
|
|
|
|
type: 'user',
|
|
|
|
|
$type: 'UserResponseModel',
|
|
|
|
|
contentStartNodeIds: [],
|
|
|
|
|
mediaStartNodeIds: [],
|
|
|
|
|
name: 'Eliana Nieves',
|
|
|
|
|
email: 'enieves1@domain.com',
|
|
|
|
|
languageIsoCode: 'Spanish',
|
|
|
|
|
state: UserStateModel.INVITED,
|
|
|
|
|
lastLoginDate: '4/10/2023',
|
2023-05-01 11:35:04 +02:00
|
|
|
lastLockoutDate: '',
|
2023-04-26 01:04:41 +12:00
|
|
|
lastPasswordChangeDate: '4/6/2023',
|
|
|
|
|
updateDate: '4/10/2023',
|
|
|
|
|
createDate: '4/10/2023',
|
|
|
|
|
failedLoginAttempts: 0,
|
2023-05-16 16:33:02 +02:00
|
|
|
userGroupIds: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1'],
|
2023-04-26 01:04:41 +12:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'c290c6d9-9f12-4838-8567-621b52a178de',
|
|
|
|
|
type: 'user',
|
|
|
|
|
$type: 'UserResponseModel',
|
|
|
|
|
contentStartNodeIds: [],
|
|
|
|
|
mediaStartNodeIds: [],
|
|
|
|
|
name: 'Jasmine Patel',
|
|
|
|
|
email: 'jpatel1@domain.com',
|
|
|
|
|
languageIsoCode: 'Hindi',
|
|
|
|
|
state: UserStateModel.DISABLED,
|
|
|
|
|
lastLoginDate: '4/9/2023',
|
2023-05-01 11:35:04 +02:00
|
|
|
lastLockoutDate: '',
|
2023-04-26 01:04:41 +12:00
|
|
|
lastPasswordChangeDate: '4/7/2023',
|
|
|
|
|
updateDate: '4/9/2023',
|
|
|
|
|
createDate: '4/9/2023',
|
|
|
|
|
failedLoginAttempts: 0,
|
2023-05-16 16:33:02 +02:00
|
|
|
userGroupIds: ['c630d49e-4e7b-42ea-b2bc-edc0edacb6b1'],
|
2022-10-04 15:15:45 +02:00
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
2022-10-05 11:49:37 +02:00
|
|
|
export const umbUsersData = new UmbUsersData(data);
|