mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-16 22:43:00 +00:00
Merge pull request #3936 from minrk/add-user-validate
admin: Hub is responsible for username validation
This commit is contained in:
@@ -60,7 +60,10 @@ const AddUser = (props) => {
|
|||||||
placeholder="usernames separated by line"
|
placeholder="usernames separated by line"
|
||||||
data-testid="user-textarea"
|
data-testid="user-textarea"
|
||||||
onBlur={(e) => {
|
onBlur={(e) => {
|
||||||
let split_users = e.target.value.split("\n");
|
let split_users = e.target.value
|
||||||
|
.split("\n")
|
||||||
|
.map((u) => u.trim())
|
||||||
|
.filter((u) => u.length > 0);
|
||||||
setUsers(split_users);
|
setUsers(split_users);
|
||||||
}}
|
}}
|
||||||
></textarea>
|
></textarea>
|
||||||
@@ -88,17 +91,7 @@ const AddUser = (props) => {
|
|||||||
data-testid="submit"
|
data-testid="submit"
|
||||||
className="btn btn-primary"
|
className="btn btn-primary"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
let filtered_users = users.filter(
|
addUsers(users, admin)
|
||||||
(e) =>
|
|
||||||
e.length > 2 &&
|
|
||||||
/[!@#$%^&*(),.?":{}|<>]/g.test(e) == false
|
|
||||||
);
|
|
||||||
if (filtered_users.length < users.length) {
|
|
||||||
setUsers(filtered_users);
|
|
||||||
failRegexEvent();
|
|
||||||
}
|
|
||||||
|
|
||||||
addUsers(filtered_users, admin)
|
|
||||||
.then((data) =>
|
.then((data) =>
|
||||||
data.status < 300
|
data.status < 300
|
||||||
? updateUsers(0, limit)
|
? updateUsers(0, limit)
|
||||||
|
@@ -70,12 +70,12 @@ test("Removes users when they fail Regex", async () => {
|
|||||||
let textarea = screen.getByTestId("user-textarea");
|
let textarea = screen.getByTestId("user-textarea");
|
||||||
let submit = screen.getByTestId("submit");
|
let submit = screen.getByTestId("submit");
|
||||||
|
|
||||||
fireEvent.blur(textarea, { target: { value: "foo\nbar\n!!*&*" } });
|
fireEvent.blur(textarea, { target: { value: "foo \n bar\na@b.co\n \n\n" } });
|
||||||
await act(async () => {
|
await act(async () => {
|
||||||
fireEvent.click(submit);
|
fireEvent.click(submit);
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(callbackSpy).toHaveBeenCalledWith(["foo", "bar"], false);
|
expect(callbackSpy).toHaveBeenCalledWith(["foo", "bar", "a@b.co"], false);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Correctly submits admin", async () => {
|
test("Correctly submits admin", async () => {
|
||||||
|
@@ -59,7 +59,7 @@ const CreateGroup = (props) => {
|
|||||||
value={groupName}
|
value={groupName}
|
||||||
placeholder="group name..."
|
placeholder="group name..."
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
setGroupName(e.target.value);
|
setGroupName(e.target.value.trim());
|
||||||
}}
|
}}
|
||||||
></input>
|
></input>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user