Skip to content
This repository was archived by the owner on Sep 2, 2024. It is now read-only.

Commit 1538b0c

Browse files
committed
added add/remove account users
1 parent 61d1fa5 commit 1538b0c

File tree

3 files changed

+77
-3
lines changed

3 files changed

+77
-3
lines changed

account.go

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package backend
22

33
import (
4+
"errors"
45
"fmt"
56
"net/url"
67
"strings"
@@ -91,6 +92,29 @@ func ResetPassword(email, code, password string) error {
9192
return nil
9293
}
9394

95+
// AddUser adds a user into the same account as token
96+
func AddUser(token, email, password string) error {
97+
body := AccountParams{
98+
Email: email,
99+
Password: password,
100+
}
101+
var ok bool
102+
if err := Post(token, "/account/users", body, &ok); err != nil {
103+
return err
104+
} else if !ok {
105+
return errors.New("could not add this user")
106+
}
107+
108+
return nil
109+
}
110+
111+
// RemoveUser removes a user from same account as token.
112+
// Token must have a higher level of permission (role) than deleted user
113+
func RemoveUser(token, userID string) error {
114+
uri := fmt.Sprintf("/account/users/%s", userID)
115+
return Del(token, uri)
116+
}
117+
94118
// SudoGetToken returns a token from an AccountID
95119
// This is useful when performing creation that documents needs
96120
// to be attached to a specific account id and therefor the SudoCreate
@@ -106,7 +130,7 @@ func SudoGetToken(token, accountID string) (string, error) {
106130
// CurrentUser used to access current user's important information
107131
type CurrentUser struct {
108132
AccountID string `json:"accountId"`
109-
UserID string `json:"userId"`
133+
UserID string `json:"id"`
110134
Email string `json:"email"`
111135
Role int `json:"role"`
112136
}
@@ -117,3 +141,13 @@ func Me(token string) (me CurrentUser, err error) {
117141
err = Get(token, "/me", &me)
118142
return
119143
}
144+
145+
// Users returns all users for the account linked with this token
146+
func Users(token string) ([]CurrentUser, error) {
147+
var users []CurrentUser
148+
if err := Get(token, "/account/users", &users); err != nil {
149+
return nil, err
150+
}
151+
152+
return users, nil
153+
}

account_test.go

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,47 @@ func TestRegisterAndLogin(t *testing.T) {
1515
t.Error(err)
1616
}
1717

18-
if _, err := backend.Login(email, pass); err != nil {
18+
authToken, err := backend.Login(email, pass)
19+
if err != nil {
1920
t.Error(err)
2021
}
22+
23+
if err := backend.AddUser(authToken, "user2@ok.com", "passwd1234"); err != nil {
24+
t.Fatal(err)
25+
}
26+
27+
users, err := backend.Users(authToken)
28+
if err != nil {
29+
t.Fatal(err)
30+
}
31+
32+
var userID string
33+
for _, user := range users {
34+
if user.Email == "user2@ok.com" {
35+
userID = user.UserID
36+
break
37+
}
38+
}
39+
40+
t.Log("userID", userID)
41+
if err := backend.RemoveUser(token, userID); err != nil {
42+
t.Fatal(err)
43+
}
44+
45+
users, err = backend.Users(token)
46+
if err != nil {
47+
t.Fatal(err)
48+
}
49+
50+
found := false
51+
for _, user := range users {
52+
if user.UserID == userID {
53+
found = true
54+
break
55+
}
56+
}
57+
58+
if found {
59+
t.Error("found the deleted user?")
60+
}
2161
}

client_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
var token string
1313

1414
func init() {
15-
backend.PublicKey = "dev-memory-pk"
15+
backend.PublicKey = "dev_memory_pk"
1616

1717
// this user is created by default in dev mod as an admin in the CLI
1818
t, err := backend.Login("admin@dev.com", "devpw1234")

0 commit comments

Comments
 (0)