package auth import ( "github.com/rs/zerolog/log" ) type UserID string type GroupID string type CredID string type Group struct { ID GroupID `json:"id"` Name string `json:"name"` } type User struct { ID UserID `json:"id"` GroupIDs []GroupID `json:"group_ids"` Data interface{} `json:"data,omitempty"` UserMetadata } type UserMetadata struct { Owner bool `json:"is_owner"` Active bool `json:"is_active"` Name string `json:"name"` SystemGenerated bool `json:"system_generated"` LocalOnly bool `json:"local_only"` } func (u *User) allowedToAuth() error { if !u.Active { return ErrDisabled } return nil } func (a *Authenticator) getOrCreateUser(c *Credential) (*User, error) { log.Debug().Interface("userdata", c).Msg("getOrCreateUser") u := a.store.User(c.UserID) if u == nil { return nil, ErrInvalidAuth } return u, nil }