-
Notifications
You must be signed in to change notification settings - Fork 2
/
dummyLDAP.go
99 lines (88 loc) · 2.36 KB
/
dummyLDAP.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package authaus
import (
"sync"
)
type dummyLdapUser struct {
username string
email string
firstname string
lastname string
mobilenumber string
password string
}
type dummyLdap struct {
ldapUsers []*dummyLdapUser
usersLock sync.RWMutex
}
func (x *dummyLdap) Authenticate(identity, password string) (er error) {
x.usersLock.RLock()
defer x.usersLock.RUnlock()
user := x.getLdapUser(identity)
if user == nil {
er = ErrInvalidCredentials
} else if len(password) == 0 {
er = ErrInvalidPassword
} else if user.password == password {
er = nil
} else {
er = ErrInvalidCredentials
}
return
}
func (x *dummyLdap) GetLdapUsers() ([]AuthUser, error) {
x.usersLock.RLock()
defer x.usersLock.RUnlock()
//Now we build up and return the list of ldap users ([]AuthUsers)
ldapUsers := make([]AuthUser, 0)
for _, ldapUser := range x.ldapUsers {
ldapUsers = append(ldapUsers, AuthUser{UserId: NullUserId, Email: ldapUser.email, Username: ldapUser.username, Firstname: ldapUser.firstname, Lastname: ldapUser.lastname, Mobilenumber: ldapUser.mobilenumber, Type: UserTypeLDAP})
}
return ldapUsers, nil
}
func (x *dummyLdap) getLdapUser(identity string) *dummyLdapUser {
for _, v := range x.ldapUsers {
if CanonicalizeIdentity(v.username) == CanonicalizeIdentity(identity) {
return v
}
}
return nil
}
func (x *dummyLdap) AddLdapUser(username, password, email, name, surname, mobile string) {
x.usersLock.Lock()
defer x.usersLock.Unlock()
user := dummyLdapUser{
username: username,
email: email,
firstname: name,
lastname: surname,
mobilenumber: mobile,
password: password,
}
x.ldapUsers = append(x.ldapUsers, &user)
}
func (x *dummyLdap) UpdateLdapUser(username, email, name, surname, mobile string) {
x.usersLock.Lock()
defer x.usersLock.Unlock()
for _, ldapUser := range x.ldapUsers {
if ldapUser.username == username {
ldapUser.email = email
ldapUser.firstname = name
ldapUser.lastname = surname
ldapUser.mobilenumber = mobile
}
}
}
func (x *dummyLdap) RemoveLdapUser(username string) {
x.usersLock.Lock()
defer x.usersLock.Unlock()
for i, ldapUser := range x.ldapUsers {
if ldapUser.username == username {
x.ldapUsers = append(x.ldapUsers[:i], x.ldapUsers[i+1:]...)
break
}
}
}
func (x *dummyLdap) Close() {
//Set incrementing user id to 0, for unit test prediction
nextUserId = 0
}