blasphem/pkg/auth/store.go

52 lines
843 B
Go
Raw Permalink Normal View History

2022-11-12 15:56:17 -05:00
package auth
import (
"fmt"
"encoding/json"
"dynatron.me/x/blasphem/pkg/storage"
)
const (
AuthStoreKey = "auth"
)
type AuthStore interface {
}
type authStore struct {
Users []User `json:"users"`
Groups interface {} `json:"groups"`
Credentials []Credential `json:"credentials"`
userMap map[UserID]*User
}
func (a *Authenticator) newAuthStore(s storage.Store) (as *authStore, err error) {
as = &authStore{}
err = s.Get(AuthStoreKey, as)
as.userMap = make(map[UserID]*User)
for _, u := range as.Users {
as.userMap[u.ID] = &u
}
for _, c := range as.Credentials {
prov := a.Provider(c.AuthProviderType)
if prov == nil {
return nil, fmt.Errorf("no such provider %s", c.AuthProviderType)
}
pd := prov.NewCredData()
err := json.Unmarshal(c.DataRaw, pd)
if err != nil {
return nil, err
}
}
return
}