1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-26 15:26:19 +00:00

Org admin api (#7030)

* [org admin] moved related APIs from seafile-js to org-admin-api.js; use 'orgAdminAPI' instead of 'seafileAPI' for the dialogs

* [org admin] use 'orgAdminAPI' instead of 'seafileAPI' for the pages
This commit is contained in:
llj
2024-11-12 12:14:01 +08:00
committed by GitHub
parent 91c50d6765
commit c26b593a55
49 changed files with 600 additions and 129 deletions

View File

@@ -1,5 +1,6 @@
import axios from 'axios';
import cookie from 'react-cookies';
import FormData from 'form-data';
import { siteRoot } from './constants';
class OrgAdminAPI {
@@ -8,7 +9,7 @@ class OrgAdminAPI {
this.server = server;
this.username = username;
this.password = password;
this.token = token;
this.token = token; // none
if (this.token && this.server) {
this.req = axios.create({
baseURL: this.server,
@@ -44,6 +45,478 @@ class OrgAdminAPI {
}
}
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, userEmail) {
const url = this.server + '/api/v2.1/org/' + orgID + '/admin/groups/' + groupID + '/members/';
let form = new FormData();
form.append('email', userEmail);
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);