Restore settings preferences and simplify services editor
This commit is contained in:
@@ -129,8 +129,23 @@ export function createApp({ store, runtime, runtimeRootDir, auth }: AppServices)
|
||||
app.put('/api/system', async (request, response, next) => {
|
||||
try {
|
||||
const state = await store.read();
|
||||
state.system = validateSystemInput(request.body as Partial<UpdateSystemInput>, state.userRecords);
|
||||
state.service.lastEvent = 'System configuration updated from panel';
|
||||
const requestedSystem = request.body as Partial<UpdateSystemInput>;
|
||||
const nextServiceIds = new Set(
|
||||
(Array.isArray(requestedSystem.services) ? requestedSystem.services : []).map((service) => service.id),
|
||||
);
|
||||
const removedServiceIds = new Set(
|
||||
state.system.services
|
||||
.map((service) => service.id)
|
||||
.filter((serviceId) => !nextServiceIds.has(serviceId)),
|
||||
);
|
||||
|
||||
const removedUsers = state.userRecords.filter((user) => removedServiceIds.has(user.serviceId));
|
||||
state.userRecords = state.userRecords.filter((user) => !removedServiceIds.has(user.serviceId));
|
||||
state.system = validateSystemInput(requestedSystem, state.userRecords);
|
||||
state.service.lastEvent =
|
||||
removedUsers.length > 0
|
||||
? `System configuration updated from panel and removed ${removedUsers.length} linked users`
|
||||
: 'System configuration updated from panel';
|
||||
await persistRuntimeMutation(store, runtime, state, runtimePaths);
|
||||
response.json(await getSnapshot(store, runtime, runtimePaths));
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user