blasphem/pkg/auth/user.go
2022-12-18 09:55:50 -05:00

49 lines
951 B
Go

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
Creds []Credentials `json:"-"`
}
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 *Credentials) (*User, error) {
log.Debug().Interface("userdata", c).Msg("getOrCreateUser")
u := a.store.User(c.UserID)
if u == nil {
return nil, ErrInvalidAuth
}
return u, nil
}