feat(client): support SetUser api
This commit is contained in:
parent
f2dd36c630
commit
c2673cd416
6 changed files with 64 additions and 8 deletions
|
@ -7,6 +7,7 @@ import (
|
|||
|
||||
"github.com/ihexxa/quickshare/src/handlers"
|
||||
"github.com/ihexxa/quickshare/src/handlers/multiusers"
|
||||
"github.com/ihexxa/quickshare/src/userstore"
|
||||
"github.com/parnurzeal/gorequest"
|
||||
)
|
||||
|
||||
|
@ -52,6 +53,17 @@ func (cl *SingleUserClient) SetPwd(oldPwd, newPwd string, token *http.Cookie) (*
|
|||
End()
|
||||
}
|
||||
|
||||
func (cl *SingleUserClient) SetUser(ID uint64, role string, quota *userstore.Quota, token *http.Cookie) (*http.Response, string, []error) {
|
||||
return cl.r.Patch(cl.url("/v1/users/")).
|
||||
Send(multiusers.SetUserReq{
|
||||
ID: ID,
|
||||
Role: role,
|
||||
Quota: quota,
|
||||
}).
|
||||
AddCookie(token).
|
||||
End()
|
||||
}
|
||||
|
||||
func (cl *SingleUserClient) AddUser(name, pwd, role string, token *http.Cookie) (*http.Response, *multiusers.AddUserResp, []error) {
|
||||
resp, body, errs := cl.r.Post(cl.url("/v1/users/")).
|
||||
AddCookie(token).
|
||||
|
|
|
@ -64,6 +64,7 @@ export interface IUsersClient {
|
|||
isAuthed: () => Promise<Response>;
|
||||
self: () => Promise<Response>;
|
||||
setPwd: (oldPwd: string, newPwd: string) => Promise<Response>;
|
||||
setUser: (id: string, role: string, quota: Quota) => Promise<Response>;
|
||||
forceSetPwd: (userID: string, newPwd: string) => Promise<Response>;
|
||||
addUser: (name: string, pwd: string, role: string) => Promise<Response>;
|
||||
delUser: (userID: string) => Promise<Response>;
|
||||
|
|
|
@ -1,11 +1,16 @@
|
|||
import { BaseClient, Response, userIDParam } from "./";
|
||||
import { BaseClient, Response, userIDParam, Quota } from "./";
|
||||
|
||||
export class UsersClient extends BaseClient {
|
||||
constructor(url: string) {
|
||||
super(url);
|
||||
}
|
||||
|
||||
login = (user: string, pwd: string, captchaId: string, captchaInput:string): Promise<Response> => {
|
||||
login = (
|
||||
user: string,
|
||||
pwd: string,
|
||||
captchaId: string,
|
||||
captchaInput: string
|
||||
): Promise<Response> => {
|
||||
return this.do({
|
||||
method: "post",
|
||||
url: `${this.url}/v1/users/login`,
|
||||
|
@ -43,6 +48,18 @@ export class UsersClient extends BaseClient {
|
|||
});
|
||||
};
|
||||
|
||||
setUser = (id: string, role: string, quota: Quota): Promise<Response> => {
|
||||
return this.do({
|
||||
method: "patch",
|
||||
url: `${this.url}/v1/users/`,
|
||||
data: {
|
||||
id,
|
||||
role,
|
||||
quota,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
forceSetPwd = (userID: string, newPwd: string): Promise<Response> => {
|
||||
return this.do({
|
||||
method: "patch",
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
// TODO: replace this with jest mocks
|
||||
import { Response } from "./";
|
||||
import { Response, Quota } from "./";
|
||||
|
||||
|
||||
export interface UsersClientResps {
|
||||
loginMockResp: Response;
|
||||
logoutMockResp: Response;
|
||||
isAuthedMockResp: Response;
|
||||
setPwdMockResp: Response;
|
||||
setUserMockResp: Response;
|
||||
forceSetPwdMockResp: Response;
|
||||
addUserMockResp: Response;
|
||||
delUserMockResp: Response;
|
||||
|
@ -22,6 +24,7 @@ export const resps = {
|
|||
logoutMockResp: { status: 200, statusText: "", data: {} },
|
||||
isAuthedMockResp: { status: 200, statusText: "", data: {} },
|
||||
setPwdMockResp: { status: 200, statusText: "", data: {} },
|
||||
setUserMockResp: { status: 200, statusText: "", data: {} },
|
||||
forceSetPwdMockResp: { status: 200, statusText: "", data: {} },
|
||||
addUserMockResp: { status: 200, statusText: "", data: {} },
|
||||
delUserMockResp: { status: 200, statusText: "", data: {} },
|
||||
|
@ -119,6 +122,11 @@ export class MockUsersClient {
|
|||
return this.wrapPromise(this.resps.setPwdMockResp);
|
||||
};
|
||||
|
||||
setUser = (id: string, role: string, quota: Quota): Promise<Response> => {
|
||||
return this.wrapPromise(this.resps.setUserMockResp);
|
||||
};
|
||||
|
||||
|
||||
forceSetPwd = (userID: string, newPwd: string): Promise<Response> => {
|
||||
return this.wrapPromise(this.resps.forceSetPwdMockResp);
|
||||
};
|
||||
|
|
|
@ -109,7 +109,19 @@ export class UserForm extends React.Component<
|
|||
});
|
||||
};
|
||||
|
||||
setUser = () => {};
|
||||
setUser = async () => {
|
||||
return updater()
|
||||
.setUser(this.props.id, this.props.role, this.props.quota)
|
||||
.then((ok: boolean) => {
|
||||
if (!ok) {
|
||||
alert("failed to set user");
|
||||
}
|
||||
return updater().listUsers();
|
||||
})
|
||||
.then(() => {
|
||||
this.props.update(updater().updateAdmin);
|
||||
});
|
||||
};
|
||||
|
||||
delUser = () => {
|
||||
updater()
|
||||
|
@ -121,7 +133,7 @@ export class UserForm extends React.Component<
|
|||
return updater().listUsers();
|
||||
})
|
||||
.then((_: boolean) => {
|
||||
this.props.update(updater().updatePanes);
|
||||
this.props.update(updater().updateAdmin);
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -319,7 +331,7 @@ export class AdminPane extends React.Component<Props, State, {}> {
|
|||
return updater().listRoles();
|
||||
})
|
||||
.then(() => {
|
||||
this.props.update(updater().updatePanes);
|
||||
this.props.update(updater().updateAdmin);
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -341,7 +353,7 @@ export class AdminPane extends React.Component<Props, State, {}> {
|
|||
return updater().listRoles();
|
||||
})
|
||||
.then(() => {
|
||||
this.props.update(updater().updatePanes);
|
||||
this.props.update(updater().updateAdmin);
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -372,7 +384,7 @@ export class AdminPane extends React.Component<Props, State, {}> {
|
|||
return updater().listUsers();
|
||||
})
|
||||
.then(() => {
|
||||
this.props.update(updater().updatePanes);
|
||||
this.props.update(updater().updateAdmin);
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ import {
|
|||
IFilesClient,
|
||||
MetadataResp,
|
||||
UploadInfo,
|
||||
Quota,
|
||||
} from "../client";
|
||||
import { FilesClient } from "../client/files";
|
||||
import { UsersClient } from "../client/users";
|
||||
|
@ -218,6 +219,11 @@ export class Updater {
|
|||
return resp.status === 200;
|
||||
};
|
||||
|
||||
setUser = async (userID: string, role: string, quota: Quota): Promise<boolean> => {
|
||||
const resp = await this.usersClient.setUser(userID, role, quota);
|
||||
return resp.status === 200;
|
||||
};
|
||||
|
||||
setRole = async (userID: string, role: string): Promise<boolean> => {
|
||||
const resp = await this.usersClient.delUser(userID);
|
||||
return resp.status === 200;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue