You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OneAuth/models/user.go

43 lines
1.4 KiB
Go

package models
import (
"gorm.io/gorm"
)
// salt for user user password gen aes code
// salt 32 hex / 16 byte / 128 bit
// code 64 hex / 32 byte / 256 bit
type User struct {
BaseModel
Username string `json:"username" gorm:"type:varchar(100);unique;default:not null" parse:"json"`
Nickname string `json:"nickname" gorm:"type:varchar(100)" parse:"json"`
Icon string `json:"icon" parse:"json"`
Email string `json:"email" gorm:"unique;type:varchar(64);null;default:null" parse:"json"`
Phone string `json:"phone" gorm:"type:varchar(64);unique;null;default:null" parse:"json"`
Region string `json:"region" gorm:"type:varchar(32);default:null" parse:"json"`
Status uint `json:"status" parse:"json"`
Salt string `json:"-" gorm:"type:varchar(32)"`
Code string `json:"-" gorm:"type:varchar(64)" parse:"json"`
}
type UserRole struct {
BaseModel
UserID string `json:"user_id" parse:"path@user_id"`
User *User `json:"-" gorm:"foreignKey:UserID;references:ID"`
RoleID string `json:"role_id" parse:"json"`
Role *Role `json:"-" gorm:"foreignKey:RoleID;references:ID"`
AppID string `json:"app_id" parse:"json"`
App *App `json:"-" gorm:"foreignKey:AppID;references:ID"`
Status string `json:"status"`
}
func (m *UserRole) AfterCreate(tx *gorm.DB) error {
return tx.Model(&Role{}).Where("id = ?", m.RoleID).Update("user_count", gorm.Expr("user_count + ?", 1)).Error
}