@@ -7,87 +7,86 @@ import (
77 "github.com/steveiliop56/tinyauth/internal/config"
88)
99
10- func ParseUsers (users string ) ([]config.User , error ) {
11- var usersParsed []config.User
10+ func ParseUsers (usersStr [] string ) ([]config.User , error ) {
11+ var users []config.User
1212
13- users = strings .TrimSpace (users )
14-
15- if users == "" {
13+ if len (usersStr ) == 0 {
1614 return []config.User {}, nil
1715 }
1816
19- userList := strings .Split (users , "," )
20-
21- if len (userList ) == 0 {
22- return []config.User {}, errors .New ("invalid user format" )
23- }
24-
25- for _ , user := range userList {
17+ for _ , user := range usersStr {
2618 if strings .TrimSpace (user ) == "" {
2719 continue
2820 }
2921 parsed , err := ParseUser (strings .TrimSpace (user ))
3022 if err != nil {
3123 return []config.User {}, err
3224 }
33- usersParsed = append (usersParsed , parsed )
25+ users = append (users , parsed )
3426 }
3527
36- return usersParsed , nil
28+ return users , nil
3729}
3830
39- func GetUsers (conf string , file string ) ([]config.User , error ) {
40- var users string
31+ func GetUsers (usersCfg [] string , usersPath string ) ([]config.User , error ) {
32+ var usersStr [] string
4133
42- if conf == "" && file == "" {
34+ if len ( usersCfg ) == 0 && usersPath == "" {
4335 return []config.User {}, nil
4436 }
4537
46- if conf != "" {
47- users += conf
38+ if len ( usersCfg ) > 0 {
39+ usersStr = append ( usersStr , usersCfg ... )
4840 }
4941
50- if file != "" {
51- contents , err := ReadFile (file )
42+ if usersPath != "" {
43+ contents , err := ReadFile (usersPath )
44+
5245 if err != nil {
5346 return []config.User {}, err
5447 }
55- if users != "" {
56- users += ","
48+
49+ lines := strings .SplitSeq (contents , "\n " )
50+
51+ for line := range lines {
52+ lineTrimmed := strings .TrimSpace (line )
53+ if lineTrimmed == "" {
54+ continue
55+ }
56+ usersStr = append (usersStr , lineTrimmed )
5757 }
58- users += ParseFileToLine (contents )
5958 }
6059
61- return ParseUsers (users )
60+ return ParseUsers (usersStr )
6261}
6362
64- func ParseUser (user string ) (config.User , error ) {
65- if strings .Contains (user , "$$" ) {
66- user = strings .ReplaceAll (user , "$$" , "$" )
63+ func ParseUser (userStr string ) (config.User , error ) {
64+ if strings .Contains (userStr , "$$" ) {
65+ userStr = strings .ReplaceAll (userStr , "$$" , "$" )
6766 }
6867
69- userSplit := strings .Split ( user , ":" )
68+ parts := strings .SplitN ( userStr , ":" , 4 )
7069
71- if len (userSplit ) < 2 || len (userSplit ) > 3 {
70+ if len (parts ) < 2 || len (parts ) > 3 {
7271 return config.User {}, errors .New ("invalid user format" )
7372 }
7473
75- for _ , userPart := range userSplit {
76- if strings .TrimSpace (userPart ) == "" {
74+ for i , part := range parts {
75+ trimmed := strings .TrimSpace (part )
76+ if trimmed == "" {
7777 return config.User {}, errors .New ("invalid user format" )
7878 }
79+ parts [i ] = trimmed
80+ }
81+
82+ user := config.User {
83+ Username : parts [0 ],
84+ Password : parts [1 ],
7985 }
8086
81- if len (userSplit ) == 2 {
82- return config.User {
83- Username : strings .TrimSpace (userSplit [0 ]),
84- Password : strings .TrimSpace (userSplit [1 ]),
85- }, nil
87+ if len (parts ) == 3 {
88+ user .TotpSecret = parts [2 ]
8689 }
8790
88- return config.User {
89- Username : strings .TrimSpace (userSplit [0 ]),
90- Password : strings .TrimSpace (userSplit [1 ]),
91- TotpSecret : strings .TrimSpace (userSplit [2 ]),
92- }, nil
91+ return user , nil
9392}
0 commit comments