internal -> storage; split users into an interface

This commit is contained in:
David Sharnoff 2022-08-19 16:10:39 -07:00
parent 0e7949b1a0
commit 41cd9c735b
7 changed files with 325 additions and 250 deletions

View 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
}