Newer
Older
wg-portal / internal / users / user.go
package users

import (
	"time"

	"gorm.io/gorm"
)

type UserSource string

const (
	UserSourceLdap     UserSource = "ldap" // LDAP / ActiveDirectory
	UserSourceDatabase UserSource = "db"   // sqlite / mysql database
	UserSourceOIDC     UserSource = "oidc" // open id connect, TODO: implement
)

// User is the user model that gets linked to peer entries, by default an empty usermodel with only the email address is created
type User struct {
	// required fields
	Email   string `gorm:"primaryKey" form:"email" binding:"required,email"`
	Source  UserSource
	IsAdmin bool

	// optional fields
	Firstname string `form:"firstname" binding:"required"`
	Lastname  string `form:"lastname" binding:"required"`
	Phone     string `form:"phone" binding:"omitempty"`

	// optional, integrated password authentication
	Password string `form:"password" binding:"omitempty"`

	// database internal fields
	CreatedAt time.Time
	UpdatedAt time.Time
	DeletedAt gorm.DeletedAt `gorm:"index"`
}