-
Notifications
You must be signed in to change notification settings - Fork 0
/
abstract.go
62 lines (54 loc) · 1.47 KB
/
abstract.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
package backends
import (
"fmt"
)
type User struct {
Uid int64
Name string
Active bool
}
func (u User) String() string {
var active rune
if u.Active {
active = 'Y'
} else {
active = 'N'
}
return fmt.Sprintf("%s:%d:%c", u.Name, u.Uid, active)
}
type Group struct {
Gid int64
Name string
}
func (g Group) String() string {
return fmt.Sprintf("%s:%d", g.Name, g.Gid)
}
type Error struct {
Code string
Message string
}
func (e *Error) Error() string {
return fmt.Sprintf("[%s] %s", e.Code, e.Message)
}
type Abstract interface {
CreateUser(name string, password string) (int64, *Error)
DisableUser(nameuid string) *Error
EnableUser(nameuid string) *Error
SetUserData(nameuid string, key string, value string) *Error
GetUserData(nameuid string, key string) (string, *Error)
GetUserDataKeys(nameuid string) ([]string, *Error)
LoginUser(name string, password string) (int64, *Error)
ChangeUserPassword(nameuid string, password string, newpassword string) *Error
ChangeUserName(nameuid string, password string, newname string) *Error
UserGroups(nameuid string) ([]Group, *Error)
DeleteUser(nameuid string) *Error
Users() ([]User, *Error)
CreateGroup(name string) (int64, *Error)
AddUserToGroup(nameuid string, groupgid string) *Error
RemoveUserFromGroup(nameuid string, groupgid string) *Error
DeleteGroup(groupgid string) *Error
Groups() ([]Group, *Error)
GroupUsers(groupgid string) ([]User, *Error)
Stats() (stats map[string]int64, err *Error)
Close()
}