Add Permissions and Users pages

This commit is contained in:
Shweelan Samson authored and Zaid Abdulla committed 2019-03-04 16:12:29 -08:00
1 parent f878d828eb
commit 3b3369a236
16 files changed
+1223 -77

No files matched your search

+10
View File
@@ -65,6 +65,14 @@ export function deleteResource(resource, id): Promise<void> {
case "config":
promise = db.deleteConfig(id);
break;
case "permissions":
promise = db.deletePermission(id);
break;
case "users":
promise = db.deleteUser(id);
break;
}
promise
@@ -183,6 +191,8 @@ export function putResource(resource, id, data): Promise<void> {
else if (resource === "virtualParameters")
promise = db.putVirtualParameter(id, data);
else if (resource === "config") promise = db.putConfig(id, data);
else if (resource === "permissions") promise = db.putPermission(id, data);
else if (resource === "users") promise = db.putUser(id, data);
promise
.then(() => {
+4
View File
@@ -26,6 +26,8 @@ const RESOURCE_IDS = {
files: "_id",
virtualParameters: "_id",
config: "_id",
permissions: "_id",
users: "_id",
faults: "_id",
tasks: "_id"
};
@@ -37,6 +39,8 @@ const resources = {
files: 0 | RESOURCE_DELETE,
virtualParameters: 0 | RESOURCE_DELETE | RESOURCE_PUT,
config: 0 | RESOURCE_DELETE | RESOURCE_PUT,
permissions: 0 | RESOURCE_DELETE | RESOURCE_PUT,
users: 0 | RESOURCE_DELETE | RESOURCE_PUT,
faults: 0 | RESOURCE_DELETE,
tasks: 0
};
+35
View File
@@ -107,6 +107,9 @@ export function query(
: options.projection
);
}
if (resource === "users") cursor.project({ password: 0 });
if (options.skip) cursor.skip(options.skip);
if (options.limit) cursor.limit(options.limit);
@@ -282,6 +285,38 @@ export function deleteConfig(id): Promise<void> {
return deleteResource("config", id);
}
export function putPermission(id, object): Promise<void> {
return putResource("permissions", id, object);
}
export function deletePermission(id): Promise<void> {
return deleteResource("permissions", id);
}
export function putUser(id, object): Promise<void> {
return new Promise((resolve, reject) => {
getClient()
.then(client => {
const collection = client.db().collection("users");
// update instead of replace to keep the password if not set by user
collection.updateOne(
{ _id: id },
{ $set: object },
{ upsert: true },
err => {
if (err) return void reject(err);
resolve();
}
);
})
.catch(reject);
});
}
export function deleteUser(id): Promise<void> {
return deleteResource("users", id);
}
export function putFile(filename, metadata, contentStream): Promise<void> {
return new Promise((resolve, reject) => {
getClient()