Skip to content

Commit e786617

Browse files
committed
feat: extract auth user index as user id
1 parent f2a5435 commit e786617

File tree

5 files changed

+73
-59
lines changed

5 files changed

+73
-59
lines changed

src/serverHandler/archive.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func (h *aliasHandler) visitTreeNode(
5353
archiveCallback archiveCallback,
5454
) {
5555
if needAuth, _ := h.needAuth("", rawReqPath, fsPath); needAuth {
56-
if _, authSuccess, _ := h.verifyAuth(r, needAuth); !authSuccess {
56+
if _, _, err := h.verifyAuth(r, needAuth); err != nil {
5757
return
5858
}
5959
}

src/serverHandler/auth.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,18 @@ func (h *aliasHandler) notifyAuth(w http.ResponseWriter, r *http.Request) {
2424
w.Header().Set("WWW-Authenticate", "Basic realm=\"files\"")
2525
}
2626

27-
func (h *aliasHandler) verifyAuth(r *http.Request, needAuth bool) (username string, success bool, err error) {
27+
func (h *aliasHandler) verifyAuth(r *http.Request, needAuth bool) (userid int, username string, err error) {
2828
user, pass, hasAuthReq := r.BasicAuth()
2929

3030
if hasAuthReq {
31-
if username, success = h.users.Auth(user, pass); success {
31+
var success bool
32+
if userid, username, success = h.users.Auth(user, pass); success {
3233
return
3334
}
3435
}
3536

3637
if !needAuth {
37-
return "", true, nil
38+
return -1, "", nil
3839
}
3940

4041
if !hasAuthReq {

src/serverHandler/sessionData.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ type sessionContext struct {
4343

4444
needAuth bool
4545
requestAuth bool
46+
authUserId int
4647
authUserName string
4748
authSuccess bool
4849

@@ -332,8 +333,9 @@ func (h *aliasHandler) getSessionData(r *http.Request) (session *sessionContext,
332333
status := http.StatusOK
333334

334335
needAuth, requestAuth := h.needAuth(rawQuery, vhostReqPath, fsPath)
335-
authUserName, authSuccess, _authErr := h.verifyAuth(r, needAuth)
336-
if needAuth && _authErr != nil {
336+
authUserId, authUserName, _authErr := h.verifyAuth(r, needAuth)
337+
authSuccess := _authErr == nil
338+
if needAuth && !authSuccess {
337339
errs = append(errs, _authErr)
338340
}
339341
if !authSuccess {
@@ -469,6 +471,7 @@ func (h *aliasHandler) getSessionData(r *http.Request) (session *sessionContext,
469471

470472
needAuth: needAuth,
471473
requestAuth: requestAuth,
474+
authUserId: authUserId,
472475
authUserName: authUserName,
473476
authSuccess: authSuccess,
474477

src/user/list.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,14 @@ func (list *List) AddSha512(username, password string) error {
8585
return err
8686
}
8787

88-
func (list *List) Auth(username, password string) (string, bool) {
88+
func (list *List) Auth(username, password string) (int, string, bool) {
8989
index := list.FindIndex(username)
9090
if index < 0 {
91-
return "", false
91+
return index, "", false
9292
}
9393

9494
u := list.users[index]
95-
return u.getName(), u.auth(password)
95+
return index, u.getName(), u.auth(password)
9696
}
9797

9898
func NewList() *List {

src/user/list_test.go

Lines changed: 60 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -4,124 +4,134 @@ import (
44
"testing"
55
)
66

7-
var list = NewList()
8-
97
func TestUserPlain(t *testing.T) {
8+
var list = NewList()
9+
var id int
1010
var u string
1111
var ok bool
1212

1313
username := "plain_user"
1414
list.AddPlain(username, "123")
15-
if u, ok = list.Auth("plain_user", "123"); u != username || !ok {
16-
t.Error()
15+
if id, u, ok = list.Auth("plain_user", "123"); id != 0 || u != username || !ok {
16+
t.Error(id, u, ok)
1717
}
18-
if u, ok = list.Auth("Plain_User", "123"); u != username || !ok {
19-
t.Error()
18+
if id, u, ok = list.Auth("Plain_User", "123"); id != 0 || u != username || !ok {
19+
t.Error(id, u, ok)
2020
}
21-
if u, ok = list.Auth("plain_user", "12"); u != username || ok {
22-
t.Error()
21+
if id, u, ok = list.Auth("plain_user", "12"); id != 0 || u != username || ok {
22+
t.Error(id, u, ok)
2323
}
24-
if u, ok = list.Auth("fake_user", "123"); u != "" || ok {
25-
t.Error()
24+
if id, u, ok = list.Auth("fake_user", "123"); id != -1 || u != "" || ok {
25+
t.Error(id, u, ok)
2626
}
2727
}
2828

2929
func TestUserBase64(t *testing.T) {
30+
var list = NewList()
31+
var id int
3032
var u string
3133
var ok bool
3234

3335
username := "base64_user"
3436
list.AddBase64(username, "MjM0")
35-
if u, ok = list.Auth("base64_user", "234"); u != username || !ok {
36-
t.Error()
37+
if id, u, ok = list.Auth("base64_user", "234"); id != 0 || u != username || !ok {
38+
t.Error(id, u, ok)
3739
}
38-
if u, ok = list.Auth("Base64_user", "234"); u != username || !ok {
39-
t.Error()
40+
if id, u, ok = list.Auth("Base64_user", "234"); id != 0 || u != username || !ok {
41+
t.Error(id, u, ok)
4042
}
41-
if u, ok = list.Auth("base64_user", "23"); u != username || ok {
42-
t.Error()
43+
if id, u, ok = list.Auth("base64_user", "23"); id != 0 || u != username || ok {
44+
t.Error(id, u, ok)
4345
}
44-
if u, ok = list.Auth("fake_user", "MjM0"); u != "" || ok {
45-
t.Error()
46+
if id, u, ok = list.Auth("fake_user", "MjM0"); id != -1 || u != "" || ok {
47+
t.Error(id, u, ok)
4648
}
4749
}
4850

4951
func TestUserMd5(t *testing.T) {
52+
var list = NewList()
53+
var id int
5054
var u string
5155
var ok bool
5256

5357
username := "md5_user"
5458
list.AddMd5(username, "d81f9c1be2e08964bf9f24b15f0e4900")
55-
if u, ok = list.Auth("md5_user", "345"); u != username || !ok {
56-
t.Error()
59+
if id, u, ok = list.Auth("md5_user", "345"); id != 0 || u != username || !ok {
60+
t.Error(id, u, ok)
5761
}
58-
if u, ok = list.Auth("Md5_user", "345"); u != username || !ok {
59-
t.Error()
62+
if id, u, ok = list.Auth("Md5_user", "345"); id != 0 || u != username || !ok {
63+
t.Error(id, u, ok)
6064
}
61-
if u, ok = list.Auth("md5_user", "34"); u != username || ok {
62-
t.Error()
65+
if id, u, ok = list.Auth("md5_user", "34"); id != 0 || u != username || ok {
66+
t.Error(id, u, ok)
6367
}
64-
if u, ok = list.Auth("fake_user", "d81f9c1be2e08964bf9f24b15f0e4900"); u != "" || ok {
65-
t.Error()
68+
if id, u, ok = list.Auth("fake_user", "d81f9c1be2e08964bf9f24b15f0e4900"); id != -1 || u != "" || ok {
69+
t.Error(id, u, ok)
6670
}
6771
}
6872

6973
func TestUserSha1(t *testing.T) {
74+
var list = NewList()
75+
var id int
7076
var u string
7177
var ok bool
7278

7379
username := "sha1_user"
7480
list.AddSha1(username, "51eac6b471a284d3341d8c0c63d0f1a286262a18")
75-
if u, ok = list.Auth("sha1_user", "456"); u != username || !ok {
76-
t.Error()
81+
if id, u, ok = list.Auth("sha1_user", "456"); id != 0 || u != username || !ok {
82+
t.Error(id, u, ok)
7783
}
78-
if u, ok = list.Auth("Sha1_user", "456"); u != username || !ok {
79-
t.Error()
84+
if id, u, ok = list.Auth("Sha1_user", "456"); id != 0 || u != username || !ok {
85+
t.Error(id, u, ok)
8086
}
81-
if u, ok = list.Auth("sha1_user", "45"); u != username || ok {
82-
t.Error()
87+
if id, u, ok = list.Auth("sha1_user", "45"); id != 0 || u != username || ok {
88+
t.Error(id, u, ok)
8389
}
84-
if u, ok = list.Auth("fake_user", "51eac6b471a284d3341d8c0c63d0f1a286262a18"); u != "" || ok {
85-
t.Error()
90+
if id, u, ok = list.Auth("fake_user", "51eac6b471a284d3341d8c0c63d0f1a286262a18"); id != -1 || u != "" || ok {
91+
t.Error(id, u, ok)
8692
}
8793
}
8894

8995
func TestUserSha256(t *testing.T) {
96+
var list = NewList()
97+
var id int
9098
var u string
9199
var ok bool
92100

93101
username := "sha256_user"
94102
list.AddSha256(username, "97a6d21df7c51e8289ac1a8c026aaac143e15aa1957f54f42e30d8f8a85c3a55")
95-
if u, ok = list.Auth("sha256_user", "567"); u != username || !ok {
96-
t.Error()
103+
if id, u, ok = list.Auth("sha256_user", "567"); id != 0 || u != username || !ok {
104+
t.Error(id, u, ok)
97105
}
98-
if u, ok = list.Auth("Sha256_user", "567"); u != username || !ok {
99-
t.Error()
106+
if id, u, ok = list.Auth("Sha256_user", "567"); id != 0 || u != username || !ok {
107+
t.Error(id, u, ok)
100108
}
101-
if u, ok = list.Auth("sha256_user", "56"); u != username || ok {
102-
t.Error()
109+
if id, u, ok = list.Auth("sha256_user", "56"); id != 0 || u != username || ok {
110+
t.Error(id, u, ok)
103111
}
104-
if u, ok = list.Auth("fake_user", "97a6d21df7c51e8289ac1a8c026aaac143e15aa1957f54f42e30d8f8a85c3a55"); u != "" || ok {
105-
t.Error()
112+
if id, u, ok = list.Auth("fake_user", "97a6d21df7c51e8289ac1a8c026aaac143e15aa1957f54f42e30d8f8a85c3a55"); id != -1 || u != "" || ok {
113+
t.Error(id, u, ok)
106114
}
107115
}
108116

109117
func TestUserSha512(t *testing.T) {
118+
var list = NewList()
119+
var id int
110120
var u string
111121
var ok bool
112122

113123
username := "sha512_user"
114124
list.AddSha512(username, "c7d57e5c0b0792b154d573089792d80f5b64d2bc0cf4d7d1f551a9e4a4966e925d06b253cc9662c01df76623fdfecb812a2a0604119cb1ac37c47e8027e94cb5")
115-
if u, ok = list.Auth("sha512_user", "678"); u != username || !ok {
116-
t.Error()
125+
if id, u, ok = list.Auth("sha512_user", "678"); id != 0 || u != username || !ok {
126+
t.Error(id, u, ok)
117127
}
118-
if u, ok = list.Auth("Sha512_user", "678"); u != username || !ok {
119-
t.Error()
128+
if id, u, ok = list.Auth("Sha512_user", "678"); id != 0 || u != username || !ok {
129+
t.Error(id, u, ok)
120130
}
121-
if u, ok = list.Auth("sha512_user", "67"); u != username || ok {
122-
t.Error()
131+
if id, u, ok = list.Auth("sha512_user", "67"); id != 0 || u != username || ok {
132+
t.Error(id, u, ok)
123133
}
124-
if u, ok = list.Auth("fake_user", "c7d57e5c0b0792b154d573089792d80f5b64d2bc0cf4d7d1f551a9e4a4966e925d06b253cc9662c01df76623fdfecb812a2a0604119cb1ac37c47e8027e94cb5"); u != "" || ok {
125-
t.Error()
134+
if id, u, ok = list.Auth("fake_user", "c7d57e5c0b0792b154d573089792d80f5b64d2bc0cf4d7d1f551a9e4a4966e925d06b253cc9662c01df76623fdfecb812a2a0604119cb1ac37c47e8027e94cb5"); id != -1 || u != "" || ok {
135+
t.Error(id, u, ok)
126136
}
127137
}

0 commit comments

Comments
 (0)