不正なコードを報告
コピー
AIに質問
{
"name": "Marketing Department",
"parent": {
"id": "0"
},
"children": [
{
"name": "Projects",
"children": []
},
{
"name": "Newsletter",
"children": [
{
"name": "Drafts",
"children": []
}
]
}
]
}
etc/skel構造を作成できます。このコードは、実際の構造に応じて変更できます。
この構造が作成されると、各グループでアクセスする必要があるフォルダのIDが必要になります。たとえば、マーケティングマネージャであれば、マーケティング部門内のすべてのフォルダに対するeditorアクセス権限が必要になるでしょう。一方、マーケティングプロジェクトマネージャが必要なのは、Projectsフォルダへのeditorアクセスだけと考えられます。このため、2つのグループを作成して、それぞれに適切な権限を付与します。
不正なコードを報告
コピー
AIに質問
"use strict";
const fs = require("fs");
const box = require("box-node-sdk");
let configFile = fs.readFileSync("config.json");
configFile = JSON.parse(configFile);
let session = box.getPreconfiguredInstance(configFile);
let serviceAccountClient = session.getAppAuthClient("enterprise");
const marketingDeptFolderID = "45765309069";
const marketingProjectsFolderID = "45765461670";
const marketingManagersGroupName = "Marketing Managers";
const marketingProjectManagersGroupName = "Marketing Project Managers";
(async () => {
let marketingManagerGroup;
try {
marketingManagerGroup = await serviceAccountClient.groups.create(
marketingManagersGroupName,
{
description: "For Marketing department leadership team.",
invitability_level: "admins_only",
member_viewability_level: "admins_only"
}
);
} catch (e) {
marketingManagerGroup = await handleGroupConflictError(
e,
marketingManagersGroupName,
serviceAccountClient
);
}
console.log(marketingManagerGroup);
let marketingProjectManagerGroup;
try {
marketingProjectManagerGroup = await serviceAccountClient.groups.create(
marketingProjectManagersGroupName,
{
description: "All team members who manage Marketing projects.",
invitability_level: "admins_and_members",
member_viewability_level: "admins_and_members"
}
);
} catch (e) {
marketingProjectManagerGroup = await handleGroupConflictError(
e,
marketingProjectManagersGroupName,
serviceAccountClient
);
}
console.log(marketingProjectManagerGroup);
let collabMarketingManagers;
try {
collabMarketingManagers = await serviceAccountClient.collaborations.createWithGroupID(
marketingManagerGroup.id,
marketingDeptFolderID,
serviceAccountClient.collaborationRoles.EDITOR
);
} catch (e) {
collabMarketingManagers = await handleFolderCollaborationConflictError(
e,
marketingDeptFolderID,
marketingManagerGroup.id,
serviceAccountClient
);
}
console.log(collabMarketingManagers);
let collabMarketingProjectManagers;
try {
collabMarketingProjectManagers = await serviceAccountClient.collaborations.createWithGroupID(
marketingProjectManagerGroup.id,
marketingProjectsFolderID,
serviceAccountClient.collaborationRoles.EDITOR
);
} catch (e) {
collabMarketingProjectManagers = await handleFolderCollaborationConflictError(
e,
marketingProjectsFolderID,
marketingProjectManagerGroup.id,
serviceAccountClient
);
}
console.log(collabMarketingProjectManagers);
})();
async function autoPage(iterator, collection = []) {
let moveToNextItem = async () => {
let item = await iterator.next();
if (item.value) {
collection.push(item.value);
}
if (item.done !== true) {
return moveToNextItem();
} else {
return collection;
}
};
return moveToNextItem();
}
async function handleGroupConflictError(e, groupName, boxClient) {
let storeIteratorSetting = boxClient._useIterators;
if (e && e.response && e.response.body && e.response.body.status === 409) {
boxClient._useIterators = true;
let groupsIterator = await boxClient.groups.getAll({
name: groupName
});
let groups = await autoPage(groupsIterator);
let results = groups.filter(group => {
return group.name === groupName;
});
if (results.length > 0) {
boxClient._useIterators = storeIteratorSetting;
return results[0];
} else {
throw new Error("Couldn't create group or find existing group.");
}
} else {
throw e;
}
}
async function handleFolderCollaborationConflictError(
e,
folderID,
groupID,
boxClient
) {
let storeIteratorSetting = boxClient._useIterators;
if (e && e.response && e.response.body && e.response.body.status === 409) {
boxClient._useIterators = true;
let collaborationsIterator = await boxClient.folders.getCollaborations(
folderID
);
let collaborations = await autoPage(collaborationsIterator);
let results = collaborations.filter(collaboration => {
return collaboration.accessible_by.id === groupID;
});
console.log(results);
if (results.length > 0) {
boxClient._useIterators = storeIteratorSetting;
return results[0];
} else {
throw new Error(
"Couldn't create new collaboration or located existing collaboration."
);
}
} else {
throw e;
}
}
不正なコードを報告
コピー
AIに質問
'use strict'
const fs = require('fs');
const box = require('box-node-sdk');
let configFile = fs.readFileSync('config.json');
configFile = JSON.parse(configFile);
let session = box.getPreconfiguredInstance(configFile);
let serviceAccountClient = session.getAppAuthClient("enterprise");
const marketingManagerGroupID = "839790214";
const marketingManagerUserID = "275111793";
(async () => {
let addedUser;
try {
addedUser = await
serviceAccountClient.groups.addUser(marketingManagerGroupID,
marketingManagerUserID, {
role: serviceAccountClient.groups.userRoles.ADMIN
});
} catch (e) {
addedUser =
await handleGroupMembershipConflictError(e,
marketingManagerGroupID, marketingManagerUserID, serviceAccountClient);
}
console.log(addedUser);
})();
async function autoPage(iterator, collection = []) {
let moveToNextItem = async () => {
let item = await iterator.next();
if (item.value) {
collection.push(item.value);
}
if (item.done !== true) {
return moveToNextItem();
} else {
return collection;
}
}
return moveToNextItem();
}
async function handleGroupMembershipConflictError(e,
groupID, userID, boxClient) {
let storeIteratorSetting = boxClient._useIterators;
if (e && e.response
&& e.response.body
&& e.response.body.status === 409) {
boxClient._useIterators = true;
let groupMembershipsIterator = await boxClient.groups.getMemberships(groupID);
let groupMemberships = await autoPage(groupMembershipsIterator);
let results = groupMemberships.filter((groupMembership) => {
return groupMembership.user.id === userID;
});
if (results.length > 0) {
boxClient._useIterators = storeIteratorSetting;
return results[0];
} else {
throw new Error("Couldn't create group membership or find existing group membership.");
}
} else {
throw e;
}
}
