Add frontend, backend and CLI

This commit is contained in:
Maidul Islam
2022-11-17 17:54:35 -05:00
parent 8d00c5cdb7
commit bea0ff6e05
276 changed files with 50230 additions and 72 deletions
@@ -0,0 +1,29 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This function adds a user to a project
* @param {*} email
* @param {*} workspaceId
* @returns
*/
const addUserToWorkspace = (email, workspaceId) => {
return SecurityClient.fetchCall(PATH + "/api/v1/workspace/" + workspaceId + "/invite-signup", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
email: email,
}),
})
.then(async res => {
if (res.status == 200) {
return (await res.json());
} else {
console.log('Failed to add a user to project');
}
})
};
export default addUserToWorkspace;
@@ -0,0 +1,29 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This function change the access of a user in a certain workspace
* @param {*} membershipId
* @param {*} role
* @returns
*/
const changeUserRoleInWorkspace = (membershipId, role) => {
return SecurityClient.fetchCall(PATH + "/api/v1/membership/" + membershipId + "/change-role", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
role: role,
}),
})
.then(async res => {
if (res.status == 200) {
return res;
} else {
console.log('Failed to change the user role in a project');
}
})
};
export default changeUserRoleInWorkspace;
@@ -0,0 +1,29 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This route creates a new workspace for a user.
* @param {*} workspaceName
* @returns
*/
const createWorkspace = (workspaceName, organizationId) => {
return SecurityClient.fetchCall(PATH + "/api/v1/workspace", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
workspaceName: workspaceName,
organizationId: organizationId,
}),
})
.then(async res => {
if (res.status == 200) {
return (await res.json()).workspace;
} else {
console.log('Failed to create a project');
}
})
};
export default createWorkspace;
@@ -0,0 +1,25 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This function removes a certain member from a certain workspace
* @param {*} membershipId
* @returns
*/
const deleteUserFromWorkspace = (membershipId) => {
return SecurityClient.fetchCall(PATH + "/api/v1/membership/" + membershipId, {
method: "DELETE",
headers: {
"Content-Type": "application/json",
},
})
.then(async res => {
if (res.status == 200) {
return res;
} else {
console.log('Failed to delete a user from a project');
}
})
};
export default deleteUserFromWorkspace;
@@ -0,0 +1,25 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This route deletes a specified workspace.
* @param {*} workspaceId
* @returns
*/
const deleteWorkspace = (workspaceId) => {
return SecurityClient.fetchCall(PATH + "/api/v1/workspace/" + workspaceId, {
method: "DELETE",
headers: {
"Content-Type": "application/json",
},
})
.then(async res => {
if (res.status == 200) {
return res;
} else {
console.log('Failed to delete a project');
}
})
};
export default deleteWorkspace;
@@ -0,0 +1,25 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* Get the latest key pairs from a certain workspace
* @param {*} workspaceId
* @returns
*/
const getLatestFileKey = (workspaceId) => {
return SecurityClient.fetchCall(PATH + "/api/v1/key/" + workspaceId + "/latest", {
method: "GET",
headers: {
"Content-Type": "application/json",
},
})
.then(async res => {
if (res.status == 200) {
return (await res.json());
} else {
console.log('Failed to get the latest key pairs for a certain project');
}
})
};
export default getLatestFileKey;
@@ -0,0 +1,26 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This route lets us get the information of a certain project.
* @param {*} req
* @param {*} res
* @returns
*/
const getWorkspaceInfo = (req, res) => {
return SecurityClient.fetchCall(PATH + "/api/v1/workspace/" + req.workspaceId, {
method: "GET",
headers: {
"Content-Type": "application/json",
},
})
.then(async res => {
if (res.status == 200) {
return (await res.json()).workspace;
} else {
console.log('Failed to get project info');
}
})
};
export default getWorkspaceInfo;
@@ -0,0 +1,26 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This route lets us get the public keys of everyone in your workspace.
* @param {*} req
* @param {*} res
* @returns
*/
const getWorkspaceKeys = (req, res) => {
return SecurityClient.fetchCall(PATH + "/api/v1/workspace/" + req.workspaceId + "/keys", {
method: "GET",
headers: {
"Content-Type": "application/json",
},
})
.then(async res => {
if (res.status == 200) {
return (await res.json()).publicKeys;
} else {
console.log('Failed to get the public keys of everyone in the workspace');
}
})
};
export default getWorkspaceKeys;
@@ -0,0 +1,26 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This route lets us get all the users in the workspace.
* @param {*} req
* @param {*} res
* @returns
*/
const getWorkspaceUsers = (req, res) => {
return SecurityClient.fetchCall(PATH + "/api/v1/workspace/" + req.workspaceId + "/users", {
method: "GET",
headers: {
"Content-Type": "application/json",
},
})
.then(async res => {
if (res.status == 200) {
return (await res.json()).users;
} else {
console.log('Failed to get Project Users');
}
})
};
export default getWorkspaceUsers;
@@ -0,0 +1,26 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This route lets us get the public keys of everyone in your workspace.
* @param {*} req
* @param {*} res
* @returns
*/
const getWorkspaces = (req, res) => {
return SecurityClient.fetchCall(PATH + "/api/v1/workspace", {
method: "GET",
headers: {
"Content-Type": "application/json",
},
})
.then(async res => {
if (res.status == 200) {
return (await res.json()).workspaces;
} else {
console.log('Failed to get projects');
}
})
};
export default getWorkspaces;
@@ -0,0 +1,29 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This route lets us rename a certain workspace.
* @param {*} req
* @param {*} res
* @returns
*/
const renameWorkspace = (workspaceId, newWorkspaceName) => {
return SecurityClient.fetchCall(PATH + "/api/v1/workspace/" + workspaceId + "/name", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
name: newWorkspaceName,
}),
})
.then(async res => {
if (res.status == 200) {
return res;
} else {
console.log('Failed to rename a project');
}
})
};
export default renameWorkspace;
@@ -0,0 +1,35 @@
import SecurityClient from "../../../components/utilities/SecurityClient";
import { PATH } from "../../../const";
/**
* This route uplods the keys in an encrypted format.
* @param {*} workspaceId
* @param {*} userId
* @param {*} encryptedKey
* @param {*} nonce
* @returns
*/
const uploadKeys = (workspaceId, userId, encryptedKey, nonce) => {
return SecurityClient.fetchCall(PATH + "/api/v1/key/" + workspaceId, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
key: {
userId: userId,
encryptedKey: encryptedKey,
nonce: nonce,
},
}),
})
.then(async res => {
if (res.status == 200) {
return res;
} else {
console.log('Failed to upload keys for a new user');
}
})
};
export default uploadKeys;