1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-25 14:50:29 +00:00
Files
seahub/frontend/src/utils/org-admin-api.js
llj a372b7fc84 [org admin - departments] fixup & improvements (#7330)
- improved the UX for 'member item'
- added confirm dialog for 'delete member'
- fixed API & displaying error msgs for adding multiple members
- fixed 'delete repo'
- fixed sorting members ascending by 'role'
- removed 'store the sort way in localStorage'
- removed 'v2' from code & file names
2025-01-07 21:00:45 +08:00

552 lines
17 KiB
JavaScript

import axios from 'axios';
import cookie from 'react-cookies';
import FormData from 'form-data';
import { siteRoot } from './constants';
class OrgAdminAPI {
init({ server, username, password, token }) {
this.server = server;
this.username = username;
this.password = password;
this.token = token; // none
if (this.token && this.server) {
this.req = axios.create({
baseURL: this.server,
headers: { 'Authorization': 'Token ' + this.token },
});
}
return this;
}
initForSeahubUsage({ siteRoot, xcsrfHeaders }) {
if (siteRoot && siteRoot.charAt(siteRoot.length - 1) === '/') {
var server = siteRoot.substring(0, siteRoot.length - 1);
this.server = server;
} else {
this.server = siteRoot;
}
this.req = axios.create({
headers: {
'X-CSRFToken': xcsrfHeaders,
}
});
return this;
}
_sendPostRequest(url, form) {
if (form.getHeaders) {
return this.req.post(url, form, {
headers: form.getHeaders()
});
} else {
return this.req.post(url, form);
}
}
orgAdminGetOrgInfo() {
const url = this.server + '/api/v2.1/org/admin/info/';
return this.req.get(url);
}
orgAdminGetSysSettingInfo(orgID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/web-settings/';
return this.req.get(url);
}
orgAdminSetSysSettingInfo(orgID, key, value) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/web-settings/';
let formData = new FormData();
formData.append(key, value);
return this.req.put(url, formData);
}
orgAdminUpdateName(orgID, orgName) {
const url = this.server + '/api/v2.1/org/admin/info/';
let form = new FormData();
form.append('org_name', orgName);
return this.req.put(url, form);
}
orgAdminSetOrgUserDefaultQuota(orgID, quota) {
const url = this.server + '/api/v2.1/org/admin/info/';
let form = new FormData();
form.append('user_default_quota', quota);
return this.req.put(url, form);
}
orgAdminUpdateLogo(orgID, file) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/logo/';
let form = new FormData();
form.append('file', file);
return this._sendPostRequest(url, form);
}
orgAdminGetSamlConfig(orgID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/saml-config/';
return this.req.get(url);
}
orgAdminUpdateSamlConfig(orgID, metadataUrl, domain, idpCertificate) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/saml-config/';
let formData = new FormData();
if (metadataUrl) {
formData.append('metadata_url', metadataUrl);
}
if (domain) {
formData.append('domain', domain);
}
if (idpCertificate) {
formData.append('idp_certificate', idpCertificate);
}
return this.req.put(url, formData);
}
orgAdminVerifyDomain(orgID, domain) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/verify-domain/';
let data = {
domain: domain
};
return this.req.put(url, data);
}
orgAdminStatisticFiles(orgID, startTime, endTime, groupBy) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/statistics/file-operations/';
let params = {
start: startTime,
end: endTime,
group_by: groupBy
};
return this.req.get(url, { params: params });
}
orgAdminStatisticStorages(orgID, startTime, endTime, groupBy) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/statistics/total-storage/';
let params = {
start: startTime,
end: endTime,
group_by: groupBy
};
return this.req.get(url, { params: params });
}
orgAdminStatisticActiveUsers(orgID, startTime, endTime, groupBy) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/statistics/active-users/';
let params = {
start: startTime,
end: endTime,
group_by: groupBy
};
return this.req.get(url, { params: params });
}
orgAdminStatisticSystemTraffic(orgID, startTime, endTime, groupBy) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/statistics/system-traffic/';
let params = {
start: startTime,
end: endTime,
group_by: groupBy
};
return this.req.get(url, { params: params });
}
orgAdminListUserTraffic(orgID, month, page, perPage, orderBy) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/statistics/user-traffic/';
let params = {
month: month,
page: page,
per_page: perPage,
order_by: orderBy
};
return this.req.get(url, { params: params });
}
orgAdminListDevices(orgID, platform, page, per_page) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/devices/';
let params = {
platform: platform,
page: page,
per_page: per_page
};
return this.req.get(url, { params: params });
}
orgAdminUnlinkDevice(orgID, platform, deviceID, user, wipeDevice) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/devices/';
let params = {
wipe_device: wipeDevice ? 'true' : 'false',
platform: platform,
device_id: deviceID,
user: user
};
return this.req.delete(url, { data: params });
}
orgAdminListDevicesErrors(orgID, page, per_page) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/devices-errors/';
let params = {
page: page,
per_page: per_page
};
return this.req.get(url, { params: params });
}
orgAdminClearDeviceErrors(orgID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/devices-errors/';
return this.req.delete(url);
}
orgAdminListOrgUsers(orgID, isStaff, page, sortBy, sortOrder) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/';
let params = {
is_staff: isStaff,
page: page
};
if (sortBy) {
params.order_by = sortBy;
params.direction = sortOrder;
}
return this.req.get(url, { params: params });
}
orgAdminSearchUser(orgID, query) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/search-user/';
let params = {
query: query,
};
return this.req.get(url, { params: params });
}
orgAdminGetOrgUserBesharedRepos(orgID, email) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/' + encodeURIComponent(email) + '/beshared-repos/';
return this.req.get(url);
}
orgAdminGetOrgUserOwnedRepos(orgID, email) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/' + encodeURIComponent(email) + '/repos/';
return this.req.get(url);
}
orgAdminGetOrgUserInfo(orgID, email) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/' + encodeURIComponent(email) + '/';
return this.req.get(url);
}
orgAdminSetOrgUserName(orgID, email, name) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/' + encodeURIComponent(email) + '/';
const data = {
name: name
};
return this.req.put(url, data);
}
orgAdminSetOrgUserContactEmail(orgID, email, contactEmail) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/' + encodeURIComponent(email) + '/';
const data = {
contact_email: contactEmail
};
return this.req.put(url, data);
}
orgAdminSetOrgUserQuota(orgID, email, quota) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/' + encodeURIComponent(email) + '/';
const data = {
quota_total: quota
};
return this.req.put(url, data);
}
orgAdminDeleteOrgUser(orgID, email) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/' + encodeURIComponent(email) + '/';
return this.req.delete(url);
}
orgAdminResetOrgUserPassword(orgID, email) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/' + encodeURIComponent(email) + '/set-password/';
return this.req.put(url);
}
orgAdminChangeOrgUserStatus(orgID, email, isActive) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/' + encodeURIComponent(email) + '/';
let form = new FormData();
form.append('is_active', isActive);
return this.req.put(url, form);
}
orgAdminAddOrgUser(orgID, email, name, password) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/';
let form = new FormData();
form.append('email', email);
form.append('name', name);
form.append('password', password);
return this._sendPostRequest(url, form);
}
orgAdminImportUsersViaFile(orgID, file) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/import-users/';
let formData = new FormData();
formData.append('file', file);
return this._sendPostRequest(url, formData);
}
orgAdminInviteOrgUsers(orgID, email) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/invite-users/';
let form = new FormData();
if (Array.isArray(email)) {
email.forEach(item => {
form.append('email', item);
});
} else {
form.append('email', email);
}
return this._sendPostRequest(url, form);
}
orgAdminSetOrgAdmin(orgID, email, isStaff) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/users/' + encodeURIComponent(email) + '/';
let form = new FormData();
form.append('is_staff', isStaff);
return this.req.put(url, form);
}
orgAdminListOrgGroups(orgID, page) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/?page=' + page;
return this.req.get(url);
}
orgAdminSearchGroup(orgID, query) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/search-group/';
let params = {
query: query,
};
return this.req.get(url, { params: params });
}
orgAdminGetGroup(orgID, groupID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/';
return this.req.get(url);
}
orgAdminDeleteOrgGroup(orgID, groupID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/';
return this.req.delete(url);
}
orgAdminListDepartments(orgID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/departments/';
return this.req.get(url);
}
orgAdminListOrgRepos(orgID, page, perPage, orderBy) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/repos/';
let params = {
page: page,
per_page: perPage
};
if (orderBy) {
params.order_by = orderBy;
}
return this.req.get(url, { params: params });
}
orgAdminDeleteOrgRepo(orgID, repoID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/repos/' + repoID + '/';
return this.req.delete(url);
}
orgAdminListTrashRepos(orgID, page, perPage) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/trash-libraries/';
let params = {
page: page,
per_page: perPage
};
return this.req.get(url, {
params: params
});
}
orgAdminDeleteTrashRepo(orgID, repoID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/trash-libraries/' + repoID + '/';
return this.req.delete(url);
}
orgAdminRestoreTrashRepo(orgID, repoID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/trash-libraries/' + repoID + '/';
return this.req.put(url);
}
orgAdminCleanTrashRepo(orgID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/trash-libraries/';
return this.req.delete(url);
}
// org links
orgAdminListOrgLinks(page) {
const url = this.server + '/api/v2.1/org/admin/links/?page=' + page;
return this.req.get(url);
}
orgAdminDeleteOrgLink(token) {
const url = this.server + '/api/v2.1/org/admin/links/' + token + '/';
return this.req.delete(url);
}
// org depart group
orgAdminListDepartGroups(orgID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/address-book/groups/';
return this.req.get(url);
}
orgAdminListGroupInfo(orgID, groupID, showAncestors) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/address-book/groups/' + groupID + '/?return_ancestors=' + showAncestors;
return this.req.get(url);
}
orgAdminAddDepartGroup(orgID, parentGroup, groupName, groupOwner, groupStaff) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/address-book/groups/';
let form = new FormData();
form.append('parent_group', parentGroup);
form.append('group_name', groupName);
if (groupOwner) {
form.append('group_owner', groupOwner);
}
if (groupStaff) {
form.append('group_staff', groupStaff.join(','));
}
return this._sendPostRequest(url, form);
}
orgAdminUpdateDepartGroup(orgID, groupID, groupName) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/address-book/groups/' + groupID + '/';
let form = new FormData();
form.append('group_name', groupName);
return this.req.put(url, form);
}
orgAdminDeleteDepartGroup(orgID, groupID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/address-book/groups/' + groupID + '/';
return this.req.delete(url);
}
orgAdminSetGroupQuota(orgID, groupID, quota) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/';
let form = new FormData();
form.append('quota', quota);
return this.req.put(url, form);
}
orgAdminListGroupRepos(orgID, groupID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/libraries/';
return this.req.get(url);
}
orgAdminAddDepartmentRepo(orgID, groupID, repoName) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/group-owned-libraries/';
let form = new FormData();
form.append('repo_name', repoName);
return this._sendPostRequest(url, form);
}
orgAdminDeleteDepartmentRepo(orgID, groupID, repoID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/group-owned-libraries/' + repoID + '/';
return this.req.delete(url);
}
orgAdminListGroupMembers(orgID, groupID) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/members/';
return this.req.get(url);
}
orgAdminDeleteGroupMember(orgID, groupID, userEmail) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/members/' + encodeURIComponent(userEmail) + '/';
return this.req.delete(url);
}
orgAdminAddGroupMember(orgID, groupID, emails) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/members/';
let form = new FormData();
for (let i = 0; i < emails.length; i++) {
form.append('email', emails[i]);
}
return this._sendPostRequest(url, form);
}
orgAdminSetGroupMemberRole(orgID, groupID, userEmail, isAdmin) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/members/' + encodeURIComponent(userEmail) + '/';
let form = new FormData();
form.append('is_admin', isAdmin);
return this.req.put(url, form);
}
// org admin logs
orgAdminListFileAudit(email, repoID, page) {
let url = this.server + '/api/v2.1/org/admin/logs/file-access/?page=' + page;
if (email) {
url = url + '&email=' + encodeURIComponent(email);
}
if (repoID) {
url = url + '&repo_id=' + repoID;
}
return this.req.get(url);
}
orgAdminListFileUpdate(email, repoID, page) {
let url = this.server + '/api/v2.1/org/admin/logs/file-update/?page=' + page;
if (email) {
url = url + '&email=' + encodeURIComponent(email);
}
if (repoID) {
url = url + '&repo_id=' + repoID;
}
return this.req.get(url);
}
orgAdminListPermAudit(email, repoID, page) {
let url = this.server + '/api/v2.1/org/admin/logs/repo-permission/?page=' + page;
if (email) {
url = url + '&email=' + encodeURIComponent(email);
}
if (repoID) {
url = url + '&repo_id=' + repoID;
}
return this.req.get(url);
}
orgAdminGetFileUpdateDetail(repoID, commitID) {
let url = this.server + '/ajax/repo/' + repoID + '/history/changes/?commit_id=' + commitID;
return this.req.get(url, { headers: { 'X-Requested-With': 'XMLHttpRequest' } });
}
orgAdminGroup2Department(orgID, groupID) {
var url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/group-to-department/';
return this.req.post(url);
}
orgAdminExportLogsExcel(orgID, start, end, logType) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/logs/export-excel/';
const params = {
start: start,
end: end,
logType: logType
};
return this.req.get(url, { params: params });
}
orgAdminTransferOrgRepo(orgID, repoID, email, reshare) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/repos/' + repoID + '/';
const form = new FormData();
form.append('email', email);
form.append('reshare', reshare);
return this.req.put(url, form);
}
}
let orgAdminAPI = new OrgAdminAPI();
let xcsrfHeaders = cookie.load('sfcsrftoken');
orgAdminAPI.initForSeahubUsage({ siteRoot, xcsrfHeaders });
export { orgAdminAPI };