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