feat(admin): enable multi-users (#67)

* feat(userstore): support ListUsers

* feat(userstore): support del users

* feat(multiusers): support list users and delete user apis

* feat(client/web): add new apis to web client

* fix(ui/panes): move each pane out of the container

* feat(ui): add admin pane

* feat(users): support force set password api

* feat(ui/admin-pane): add functions to admin pane

* feat(users): support self API and move uploading folder to home

* fix(users): remove home folder when deleting user

* fix(ui): remove useless function

* feat(ui/panes): hide admin menu if user is not admin

* fix(server/files): list home path is incorrect

* fix(server): 1.listHome return incorrect cwd 2.addUser init folder with incorrect uid 3.check ns before using

* test(server): add regression test cases

* test(users, files): add e2e test for concurrent operations

* fix(test): clean ups
This commit is contained in:
Hexxa 2021-07-30 21:59:33 -05:00 committed by GitHub
parent 916ec7c2dc
commit aefaca98b3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 1562 additions and 478 deletions

View file

@ -51,6 +51,20 @@ func TestUserStores(t *testing.T) {
t.Fatalf("roles not matched %s %s", role1, user.Role)
}
users, err := store.ListUsers()
if err != nil {
t.Fatal(err)
}
if len(users) != 2 {
t.Fatalf("users size should be 2 (%d)", len(users))
}
if users[0].ID != 0 || users[0].Name != rootName || users[0].Role != AdminRole {
t.Fatalf("incorrect root info %v", users[0])
}
if users[1].ID != 1 || users[1].Name != name1 || users[1].Role != role1 {
t.Fatalf("incorrect user info %v", users[1])
}
err = store.SetName(id, name2)
if err != nil {
t.Fatal(err)
@ -91,6 +105,22 @@ func TestUserStores(t *testing.T) {
if user.Role != role2 {
t.Fatalf("roles not matched %s %s", role2, user.Role)
}
err = store.DelUser(id)
if err != nil {
t.Fatal(err)
}
users, err = store.ListUsers()
if err != nil {
t.Fatal(err)
}
if len(users) != 1 {
t.Fatalf("users size should be 2 (%d)", len(users))
}
if users[0].ID != 0 || users[0].Name != rootName || users[0].Role != AdminRole {
t.Fatalf("incorrect root info %v", users[0])
}
}
testRoleMethods := func(t *testing.T, store IUserStore) {