mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-03 16:19:59 +00:00
102 lines
2.9 KiB
JavaScript
102 lines
2.9 KiB
JavaScript
import axios from 'axios';
|
|
import cookie from 'react-cookies';
|
|
import { siteRoot } from './constants';
|
|
|
|
class UserAPI {
|
|
|
|
init({ server, username, password, token }) {
|
|
this.server = server;
|
|
this.username = username;
|
|
this.password = password;
|
|
this.token = token;
|
|
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;
|
|
}
|
|
|
|
resetPassword(oldPassword, newPassword) {
|
|
let url = this.server + '/api/v2.1/user/reset-password/';
|
|
let data = {
|
|
old_password: oldPassword,
|
|
new_password: newPassword
|
|
};
|
|
return this.req.post(url, data);
|
|
}
|
|
|
|
queryIOStatus(task_id) {
|
|
const url = this.server + '/api/v2.1/query-io-status/?task_id=' + task_id;
|
|
return this.req.get(url);
|
|
}
|
|
|
|
depAdminTransferRepo(repo_id, group_id, email, reshare) {
|
|
const url = this.server + '/api/v2.1/groups/' + group_id + '/group-owned-libraries/' + repo_id + '/transfer/';
|
|
const formData = new FormData();
|
|
formData.append('email', email);
|
|
formData.append('reshare', reshare);
|
|
return this.req.put(url, formData);
|
|
}
|
|
|
|
transferRepo(repoID, owner, reshare) {
|
|
const url = this.server + '/api2/repos/' + repoID + '/owner/';
|
|
const form = new FormData();
|
|
form.append('owner', owner);
|
|
form.append('reshare', reshare);
|
|
return this.req.put(url, form);
|
|
}
|
|
|
|
getOfficeSuite(repoID) {
|
|
const url = this.server + '/api/v2.1/repos/' + repoID + '/office-suite/';
|
|
return this.req.get(url);
|
|
}
|
|
|
|
setOfficeSuite(repoID, suiteID) {
|
|
const url = this.server + '/api/v2.1/repos/' + repoID + '/office-suite/';
|
|
const form = new FormData();
|
|
form.append('suite_id', suiteID);
|
|
return this.req.put(url, form);
|
|
}
|
|
|
|
getNotificationToken(repoID) {
|
|
const url = this.server + '/api/v2.1/repos/' + repoID + '/repo-notification-jwt-token/';
|
|
return this.req.get(url);
|
|
}
|
|
|
|
updateEmailNotificationInterval(fileUpdatesEmailInterval, collaborateEmailInterval, enablePasswordUpdateEmail, enableLoginEmail) {
|
|
let url = this.server + '/api2/account/info/';
|
|
let data = {
|
|
'file_updates_email_interval': fileUpdatesEmailInterval,
|
|
'collaborate_email_interval': collaborateEmailInterval,
|
|
'enable_password_update_email': enablePasswordUpdateEmail,
|
|
'enable_login_email': enableLoginEmail
|
|
};
|
|
return this.req.put(url, data);
|
|
}
|
|
|
|
}
|
|
|
|
let userAPI = new UserAPI();
|
|
let xcsrfHeaders = cookie.load('sfcsrftoken');
|
|
userAPI.initForSeahubUsage({ siteRoot, xcsrfHeaders });
|
|
|
|
export { userAPI };
|