173 lines
4.0 KiB
Go
173 lines
4.0 KiB
Go
package models
|
|
|
|
import (
|
|
"gitea.tecamino.com/paadi/memberDB/crypto"
|
|
"gitea.tecamino.com/paadi/memberDB/utils"
|
|
)
|
|
|
|
type Member struct {
|
|
Id int `gorm:"primaryKey" json:"id,omitempty"`
|
|
FirstName string `gorm:"column:firstName" json:"firstName,omitempty"`
|
|
FirstNameHash string `gorm:"column:firstNameHash" json:"-"`
|
|
LastName string `gorm:"column:lastName" json:"lastName,omitempty"`
|
|
LastNameHash string `gorm:"column:lastNameHash" json:"-"`
|
|
Birthday string `gorm:"column:birthday" json:"birthday,omitempty"`
|
|
BirthdayHash string `gorm:"column:birthdayHash" json:"-"`
|
|
Address string `gorm:"column:address" json:"address,omitempty"`
|
|
Zip string `gorm:"column:zip" json:"zip,omitempty"`
|
|
Town string `gorm:"column:town" json:"town,omitempty"`
|
|
Phone string `gorm:"column:phone" json:"phone,omitempty"`
|
|
Email string `gorm:"column:email" json:"email,omitempty"`
|
|
FirstVisit string `gorm:"column:firstVisit" json:"firstVisit,omitempty"`
|
|
LastVisit string `gorm:"column:lastVisit" json:"lastVisit,omitempty"`
|
|
GroupId *int `json:"GroupId,omitempty"`
|
|
Group *Group `gorm:"foreignKey:GroupId;constraint:OnDelete:CASCADE;"json:"group,omitempty"`
|
|
ResponsibleId *int `json:"ResponsibleId,omitempty"`
|
|
Responsible *Member `gorm:"foreignKey:ResponsibleId;constraint:OnDelete:CASCADE;" json:"responsible,omitempty"`
|
|
Comment string `gorm:"column:comment" json:"comment,omitempty"`
|
|
Events []*Event `gorm:"many2many:member_events;" `
|
|
}
|
|
|
|
func (m *Member) Encrypt(token []byte) (err error) {
|
|
|
|
m.FirstNameHash = utils.HashField(m.FirstName, token)
|
|
m.FirstName, err = crypto.Encrypt(m.FirstName, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m.LastNameHash = utils.HashField(m.LastName, token)
|
|
m.LastName, err = crypto.Encrypt(m.LastName, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m.BirthdayHash = utils.HashField(m.Birthday, token)
|
|
m.Birthday, err = crypto.Encrypt(m.Birthday, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m.Address, err = crypto.Encrypt(m.Address, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m.Zip, err = crypto.Encrypt(m.Zip, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m.Town, err = crypto.Encrypt(m.Town, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m.Phone, err = crypto.Encrypt(m.Phone, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m.Email, err = crypto.Encrypt(m.Email, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m.FirstVisit, err = crypto.Encrypt(m.FirstVisit, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m.LastVisit, err = crypto.Encrypt(m.LastVisit, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
m.Comment, err = crypto.Encrypt(m.Comment, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func (m *Member) Decrypt(token []byte) (err error) {
|
|
|
|
if m.FirstName != "" {
|
|
m.FirstName, err = crypto.Decrypt(m.FirstName, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
if m.LastName != "" {
|
|
m.LastName, err = crypto.Decrypt(m.LastName, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
if m.Birthday != "" {
|
|
m.Birthday, err = crypto.Decrypt(m.Birthday, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
if m.Address != "" {
|
|
m.Address, err = crypto.Decrypt(m.Address, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
if m.Zip != "" {
|
|
m.Zip, err = crypto.Decrypt(m.Zip, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
if m.Town != "" {
|
|
m.Town, err = crypto.Decrypt(m.Town, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
if m.Phone != "" {
|
|
m.Phone, err = crypto.Decrypt(m.Phone, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
if m.Email != "" {
|
|
m.Email, err = crypto.Decrypt(m.Email, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
if m.FirstVisit != "" {
|
|
m.FirstVisit, err = crypto.Decrypt(m.FirstVisit, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
if m.LastVisit != "" {
|
|
m.LastVisit, err = crypto.Decrypt(m.LastVisit, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
if m.Comment != "" {
|
|
m.Comment, err = crypto.Decrypt(m.Comment, token)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|