Skip to content

Commit b28de2a

Browse files
committed
refactor: use formal username rather than client's input
1 parent bac2905 commit b28de2a

File tree

5 files changed

+94
-50
lines changed

5 files changed

+94
-50
lines changed

src/serverHandler/auth.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,10 @@ func (h *aliasHandler) notifyAuth(w http.ResponseWriter, r *http.Request) {
2727
func (h *aliasHandler) verifyAuth(r *http.Request, needAuth bool) (username string, success bool, err error) {
2828
user, pass, hasAuthReq := r.BasicAuth()
2929

30-
if hasAuthReq && h.users.Auth(user, pass) {
31-
return user, true, nil
30+
if hasAuthReq {
31+
if username, success = h.users.Auth(user, pass); success {
32+
return
33+
}
3234
}
3335

3436
if !needAuth {

src/serverHandler/responseData.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -330,13 +330,11 @@ func (h *aliasHandler) getResponseData(r *http.Request) (data *responseData, fsP
330330

331331
needAuth, requestAuth := h.needAuth(rawQuery, rawReqPath, reqFsPath)
332332
authUserName, authSuccess, _authErr := h.verifyAuth(r, needAuth)
333-
if needAuth {
334-
if _authErr != nil {
335-
errs = append(errs, _authErr)
336-
}
337-
if !authSuccess {
338-
status = http.StatusUnauthorized
339-
}
333+
if needAuth && _authErr != nil {
334+
errs = append(errs, _authErr)
335+
}
336+
if !authSuccess {
337+
status = http.StatusUnauthorized
340338
}
341339

342340
headers := h.getHeaders(rawReqPath, reqFsPath, authSuccess)

src/user/list.go

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

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

94-
return list.users[index].auth(password)
94+
u := list.users[index]
95+
return u.getName(), u.auth(password)
9596
}
9697

9798
func NewList() *List {

src/user/list_test.go

Lines changed: 66 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,81 +7,121 @@ import (
77
var list = NewList()
88

99
func TestUserPlain(t *testing.T) {
10-
list.AddPlain("plain_user", "123")
11-
if !list.Auth("plain_user", "123") {
10+
var u string
11+
var ok bool
12+
13+
username := "plain_user"
14+
list.AddPlain(username, "123")
15+
if u, ok = list.Auth("plain_user", "123"); u != username || !ok {
16+
t.Error()
17+
}
18+
if u, ok = list.Auth("Plain_User", "123"); u != username || !ok {
1219
t.Error()
1320
}
14-
if !list.Auth("Plain_User", "123") {
21+
if u, ok = list.Auth("plain_user", "12"); u != username || ok {
1522
t.Error()
1623
}
17-
if list.Auth("plain_user", "12") {
24+
if u, ok = list.Auth("fake_user", "123"); u != "" || ok {
1825
t.Error()
1926
}
2027
}
2128

2229
func TestUserBase64(t *testing.T) {
23-
list.AddBase64("base64_user", "MjM0")
24-
if !list.Auth("base64_user", "234") {
30+
var u string
31+
var ok bool
32+
33+
username := "base64_user"
34+
list.AddBase64(username, "MjM0")
35+
if u, ok = list.Auth("base64_user", "234"); u != username || !ok {
2536
t.Error()
2637
}
27-
if !list.Auth("Base64_user", "234") {
38+
if u, ok = list.Auth("Base64_user", "234"); u != username || !ok {
2839
t.Error()
2940
}
30-
if list.Auth("base64_user", "23") {
41+
if u, ok = list.Auth("base64_user", "23"); u != username || ok {
42+
t.Error()
43+
}
44+
if u, ok = list.Auth("fake_user", "MjM0"); u != "" || ok {
3145
t.Error()
3246
}
33-
3447
}
3548

3649
func TestUserMd5(t *testing.T) {
37-
list.AddMd5("md5_user", "d81f9c1be2e08964bf9f24b15f0e4900")
38-
if !list.Auth("md5_user", "345") {
50+
var u string
51+
var ok bool
52+
53+
username := "md5_user"
54+
list.AddMd5(username, "d81f9c1be2e08964bf9f24b15f0e4900")
55+
if u, ok = list.Auth("md5_user", "345"); u != username || !ok {
3956
t.Error()
4057
}
41-
if !list.Auth("Md5_user", "345") {
58+
if u, ok = list.Auth("Md5_user", "345"); u != username || !ok {
4259
t.Error()
4360
}
44-
if list.Auth("md5_user", "34") {
61+
if u, ok = list.Auth("md5_user", "34"); u != username || ok {
62+
t.Error()
63+
}
64+
if u, ok = list.Auth("fake_user", "d81f9c1be2e08964bf9f24b15f0e4900"); u != "" || ok {
4565
t.Error()
4666
}
47-
4867
}
4968

5069
func TestUserSha1(t *testing.T) {
51-
list.AddSha1("sha1_user", "51eac6b471a284d3341d8c0c63d0f1a286262a18")
52-
if !list.Auth("sha1_user", "456") {
70+
var u string
71+
var ok bool
72+
73+
username := "sha1_user"
74+
list.AddSha1(username, "51eac6b471a284d3341d8c0c63d0f1a286262a18")
75+
if u, ok = list.Auth("sha1_user", "456"); u != username || !ok {
5376
t.Error()
5477
}
55-
if !list.Auth("Sha1_user", "456") {
78+
if u, ok = list.Auth("Sha1_user", "456"); u != username || !ok {
5679
t.Error()
5780
}
58-
if list.Auth("sha1_user", "45") {
81+
if u, ok = list.Auth("sha1_user", "45"); u != username || ok {
82+
t.Error()
83+
}
84+
if u, ok = list.Auth("fake_user", "51eac6b471a284d3341d8c0c63d0f1a286262a18"); u != "" || ok {
5985
t.Error()
6086
}
6187
}
6288

6389
func TestUserSha256(t *testing.T) {
64-
list.AddSha256("sha256_user", "97a6d21df7c51e8289ac1a8c026aaac143e15aa1957f54f42e30d8f8a85c3a55")
65-
if !list.Auth("sha256_user", "567") {
90+
var u string
91+
var ok bool
92+
93+
username := "sha256_user"
94+
list.AddSha256(username, "97a6d21df7c51e8289ac1a8c026aaac143e15aa1957f54f42e30d8f8a85c3a55")
95+
if u, ok = list.Auth("sha256_user", "567"); u != username || !ok {
6696
t.Error()
6797
}
68-
if !list.Auth("Sha256_user", "567") {
98+
if u, ok = list.Auth("Sha256_user", "567"); u != username || !ok {
6999
t.Error()
70100
}
71-
if list.Auth("sha256_user", "56") {
101+
if u, ok = list.Auth("sha256_user", "56"); u != username || ok {
102+
t.Error()
103+
}
104+
if u, ok = list.Auth("fake_user", "97a6d21df7c51e8289ac1a8c026aaac143e15aa1957f54f42e30d8f8a85c3a55"); u != "" || ok {
72105
t.Error()
73106
}
74107
}
75108

76109
func TestUserSha512(t *testing.T) {
77-
list.AddSha512("sha512_user", "c7d57e5c0b0792b154d573089792d80f5b64d2bc0cf4d7d1f551a9e4a4966e925d06b253cc9662c01df76623fdfecb812a2a0604119cb1ac37c47e8027e94cb5")
78-
if !list.Auth("sha512_user", "678") {
110+
var u string
111+
var ok bool
112+
113+
username := "sha512_user"
114+
list.AddSha512(username, "c7d57e5c0b0792b154d573089792d80f5b64d2bc0cf4d7d1f551a9e4a4966e925d06b253cc9662c01df76623fdfecb812a2a0604119cb1ac37c47e8027e94cb5")
115+
if u, ok = list.Auth("sha512_user", "678"); u != username || !ok {
116+
t.Error()
117+
}
118+
if u, ok = list.Auth("Sha512_user", "678"); u != username || !ok {
79119
t.Error()
80120
}
81-
if !list.Auth("Sha512_user", "678") {
121+
if u, ok = list.Auth("sha512_user", "67"); u != username || ok {
82122
t.Error()
83123
}
84-
if list.Auth("sha512_user", "67") {
124+
if u, ok = list.Auth("fake_user", "c7d57e5c0b0792b154d573089792d80f5b64d2bc0cf4d7d1f551a9e4a4966e925d06b253cc9662c01df76623fdfecb812a2a0604119cb1ac37c47e8027e94cb5"); u != "" || ok {
85125
t.Error()
86126
}
87127
}

test/case/007.auth.bash

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,25 @@ source "$root"/lib.bash
55
"$ghfs" -l 3003 -r "$fs"/vhost1 --auth /hello --user alice:AliceSecret -E '' &
66
sleep 0.05 # wait server ready
77

8-
yesstatus=$(curl_get_status http://127.0.0.1:3003/yes/)
9-
assert "$yesstatus" '200'
8+
status=$(curl_get_status http://127.0.0.1:3003/yes/)
9+
assert "$status" '200'
1010

11-
hellostatus=$(curl_get_status http://127.0.0.1:3003/hello/)
12-
assert "$hellostatus" '401'
11+
status=$(curl_get_status http://127.0.0.1:3003/hello/)
12+
assert "$status" '401'
1313

14-
userhellostatus=$(curl_get_status http://alice:AliceSecret@127.0.0.1:3003/hello/)
15-
assert "$userhellostatus" '200'
14+
status=$(curl_get_status http://alice:AliceSecret@127.0.0.1:3003/hello/)
15+
assert "$status" '200'
1616

17-
userhelloheadstatus=$(curl_head_status http://alice:AliceSecret@127.0.0.1:3003/hello/)
18-
assert "$userhelloheadstatus" '200'
17+
status=$(curl_head_status http://alice:AliceSecret@127.0.0.1:3003/hello/)
18+
assert "$status" '200'
1919

20-
hellostatus=$(curl_get_status http://127.0.0.1:3003/yes/?auth)
21-
assert "$hellostatus" '401'
20+
status=$(curl_get_status http://127.0.0.1:3003/yes/?auth)
21+
assert "$status" '401'
2222

23-
hellostatus=$(curl_get_status http://alice:AliceSecret@127.0.0.1:3003/yes/?auth)
24-
assert "$hellostatus" '302'
23+
status=$(curl_get_status http://bob:BobSecret@127.0.0.1:3003/yes/)
24+
assert "$status" '200'
25+
26+
status=$(curl_get_status http://alice:AliceSecret@127.0.0.1:3003/yes/?auth)
27+
assert "$status" '302'
2528

2629
jobs -p | xargs kill &> /dev/null

0 commit comments

Comments
 (0)