internal -> storage; split users into an interface
This commit is contained in:
parent
0e7949b1a0
commit
41cd9c735b
7 changed files with 325 additions and 250 deletions
65
example/server/storage/user.go
Normal file
65
example/server/storage/user.go
Normal file
|
@ -0,0 +1,65 @@
|
|||
package storage
|
||||
|
||||
import (
|
||||
"crypto/rsa"
|
||||
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
id string
|
||||
username string
|
||||
password string
|
||||
firstname string
|
||||
lastname string
|
||||
email string
|
||||
emailVerified bool
|
||||
phone string
|
||||
phoneVerified bool
|
||||
preferredLanguage language.Tag
|
||||
}
|
||||
|
||||
type Service struct {
|
||||
keys map[string]*rsa.PublicKey
|
||||
}
|
||||
|
||||
type UserStore interface {
|
||||
GetUserByID(string) *User
|
||||
GetUserByUsername(string) *User
|
||||
}
|
||||
|
||||
type userStore struct {
|
||||
users map[string]*User
|
||||
}
|
||||
|
||||
func NewUserStore() UserStore {
|
||||
return userStore{
|
||||
users: map[string]*User{
|
||||
"id1": {
|
||||
id: "id1",
|
||||
username: "test-user",
|
||||
password: "verysecure",
|
||||
firstname: "Test",
|
||||
lastname: "User",
|
||||
email: "test-user@zitadel.ch",
|
||||
emailVerified: true,
|
||||
phone: "",
|
||||
phoneVerified: false,
|
||||
preferredLanguage: language.German,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (u userStore) GetUserByID(id string) *User {
|
||||
return u.users[id]
|
||||
}
|
||||
|
||||
func (u userStore) GetUserByUsername(username string) *User {
|
||||
for _, user := range u.users {
|
||||
if user.username == username {
|
||||
return user
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue