统一表创建表的方式
This commit is contained in:
@@ -51,47 +51,13 @@ func Md5Str(str string) string {
|
|||||||
return hashString2
|
return hashString2
|
||||||
}
|
}
|
||||||
|
|
||||||
func HashUserPass(user *TabUser_) {
|
|
||||||
switch ConfigsUser.PassHashType {
|
|
||||||
case "text":
|
|
||||||
break
|
|
||||||
case "md5":
|
|
||||||
user.Pass = Md5Str(user.Pass)
|
|
||||||
|
|
||||||
case "md5salt":
|
|
||||||
if user.Salt == "" {
|
|
||||||
user.Salt = RandStr32()
|
|
||||||
}
|
|
||||||
user.Pass = Md5Str(Md5Str(user.Pass) + user.Salt)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func IsExpired(expireTime time.Time) bool {
|
func IsExpired(expireTime time.Time) bool {
|
||||||
return expireTime.Before(time.Now())
|
return expireTime.Before(time.Now())
|
||||||
}
|
}
|
||||||
|
|
||||||
func CheckCookiesAndUpdate(cookie *TabCookie_) bool {
|
|
||||||
if !IsExpired(cookie.ExpiresAt) {
|
|
||||||
if cookie.Remember {
|
|
||||||
cookiewhere := TabCookie_{
|
|
||||||
ID: cookie.ID,
|
|
||||||
}
|
|
||||||
cookieupdata := TabCookie_{
|
|
||||||
UpdatedAt: time.Now(),
|
|
||||||
ExpiresAt: time.Now().Add(time.Duration(ConfigsUser.CookieTimeout) * time.Second),
|
|
||||||
}
|
|
||||||
DB.Where(&cookiewhere).Updates(&cookieupdata)
|
|
||||||
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
} else {
|
|
||||||
//以过期
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
//return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断邮箱是否合法
|
// 判断邮箱是否合法
|
||||||
func IsEmailValid(email string) bool {
|
func IsEmailValid(email string) bool {
|
||||||
|
|||||||
@@ -35,16 +35,16 @@ func GetRealIP(c *gin.Context) string {
|
|||||||
return c.ClientIP()
|
return c.ClientIP()
|
||||||
}
|
}
|
||||||
|
|
||||||
func LogAdd(c *gin.Context, msg string) {
|
// func LogAdd(c *gin.Context, msg string) {
|
||||||
|
|
||||||
var logtemp APIRequestLog_
|
// var logtemp APIRequestLog_
|
||||||
|
|
||||||
logtemp.IPAddress = GetRealIP(c)
|
// logtemp.IPAddress = GetRealIP(c)
|
||||||
logtemp.Path = c.Request.URL.Path
|
// logtemp.Path = c.Request.URL.Path
|
||||||
logtemp.Method = c.Request.Method
|
// logtemp.Method = c.Request.Method
|
||||||
logtemp.Message = msg
|
// logtemp.Message = msg
|
||||||
|
|
||||||
//fmt.Println(logtemp)
|
// //fmt.Println(logtemp)
|
||||||
DB.Create(&logtemp)
|
// DB.Create(&logtemp)
|
||||||
|
|
||||||
}
|
// }
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package models
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/glebarez/sqlite"
|
"github.com/glebarez/sqlite"
|
||||||
"gorm.io/driver/mysql"
|
"gorm.io/driver/mysql"
|
||||||
@@ -12,70 +11,16 @@ import (
|
|||||||
|
|
||||||
var DB *gorm.DB
|
var DB *gorm.DB
|
||||||
|
|
||||||
type TabUser_ struct {
|
// type APIRequestLog_ struct {
|
||||||
ID uint `gorm:"primaryKey;autoIncrement"` // 自增主键
|
// ID int64 `gorm:"primaryKey;column:id" json:"id"`
|
||||||
Name string `gorm:"size:100;uniqueIndex"` // 唯一约束索引
|
// IPAddress string `gorm:"column:ip_address;size:45;not null" json:"ip_address"`
|
||||||
Email string `gorm:"size:255;index"` // 字符串长度限制100 索引
|
// Path string `gorm:"column:path;size:500;not null" json:"path"`
|
||||||
Pass string `gorm:"size:128"` // 建议存储哈希后的密码
|
// Method string `gorm:"column:method;size:10;not null" json:"method"`
|
||||||
Type string `gorm:"size:64;default:user"` //
|
// StatusCode int `gorm:"column:status_code;index" json:"status_code"`
|
||||||
Salt string `gorm:"size:64;"`
|
// Message string `gorm:"column:error_message;type:text" json:"error_message"`
|
||||||
Date time.Time `gorm:"type:datetime;default:CURRENT_TIMESTAMP"` // 默认当前时间
|
// CreatedAt time.Time `gorm:"column:created_at;type:datetime;default:CURRENT_TIMESTAMP" json:"created_at"`
|
||||||
}
|
|
||||||
|
|
||||||
type TabUserGroups_ struct {
|
|
||||||
ID uint `gorm:"primaryKey;autoIncrement"` // 自增主键
|
|
||||||
Name string `gorm:"size:100;uniqueIndex"` // 唯一约束索引
|
|
||||||
Email string `gorm:"size:255;index"` // 字符串长度限制100 索引
|
|
||||||
Type string `gorm:"size:64;default:usergroup"` //
|
|
||||||
Date time.Time `gorm:"type:datetime;default:CURRENT_TIMESTAMP"` // 默认当前时间
|
|
||||||
}
|
|
||||||
|
|
||||||
type TabUserGroupBinds_ struct {
|
|
||||||
ID uint `gorm:"primaryKey;autoIncrement"` // 自增主键
|
|
||||||
UserID uint `gorm:"index"`
|
|
||||||
GroupID uint `gorm:"index"`
|
|
||||||
Date time.Time `gorm:"type:datetime;default:CURRENT_TIMESTAMP"` // 默认当前时间
|
|
||||||
}
|
|
||||||
|
|
||||||
type TabUserInfo_ struct {
|
|
||||||
ID uint `gorm:"primaryKey;autoIncrement"`
|
|
||||||
UserID uint `gorm:"not null;uniqueIndex"`
|
|
||||||
FirstName string `gorm:"size:50;null"`
|
|
||||||
Username string `gorm:"size:30;null"`
|
|
||||||
Birthdate time.Time `gorm:"type:datetime;null"`
|
|
||||||
Gender string `gorm:"type:char(1);check:gender IN ('M', 'F', 'U');default:'U'"`
|
|
||||||
AvatarPath string `gorm:"size:255"`
|
|
||||||
Region string `gorm:"size:50"`
|
|
||||||
Language string `gorm:"size:10;default:'zh-CN'"`
|
|
||||||
CreatedAt time.Time `gorm:"type:datetime;default:CURRENT_TIMESTAMP;column:created_at"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// var def_user_info = User_info{
|
|
||||||
// ID:0,
|
|
||||||
// UserID:0,
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
type TabCookie_ struct {
|
|
||||||
ID uint `gorm:"primaryKey;autoIncrement"`
|
|
||||||
UserID uint `gorm:"not null"`
|
|
||||||
Name string `gorm:"size:255;not null;index"`
|
|
||||||
Value string `gorm:"size:255;not null;index"`
|
|
||||||
ExpiresAt time.Time `gorm:"type:datetime;index"`
|
|
||||||
CreatedAt time.Time `gorm:"type:datetime;not null;default:CURRENT_TIMESTAMP"`
|
|
||||||
UpdatedAt time.Time `gorm:"type:datetime;index;not null;default:CURRENT_TIMESTAMP"`
|
|
||||||
Remember bool `gorm:"default:false"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type APIRequestLog_ struct {
|
|
||||||
ID int64 `gorm:"primaryKey;column:id" json:"id"`
|
|
||||||
IPAddress string `gorm:"column:ip_address;size:45;not null" json:"ip_address"`
|
|
||||||
Path string `gorm:"column:path;size:500;not null" json:"path"`
|
|
||||||
Method string `gorm:"column:method;size:10;not null" json:"method"`
|
|
||||||
StatusCode int `gorm:"column:status_code;index" json:"status_code"`
|
|
||||||
Message string `gorm:"column:error_message;type:text" json:"error_message"`
|
|
||||||
CreatedAt time.Time `gorm:"column:created_at;type:datetime;default:CURRENT_TIMESTAMP" json:"created_at"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func DatabaseInit() error {
|
func DatabaseInit() error {
|
||||||
var err error
|
var err error
|
||||||
fmt.Println("database_init")
|
fmt.Println("database_init")
|
||||||
@@ -102,18 +47,7 @@ func DatabaseInit() error {
|
|||||||
panic("数据库连接失败")
|
panic("数据库连接失败")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 自动创建表结构
|
//DB.AutoMigrate(&APIRequestLog_{})
|
||||||
DB.AutoMigrate(&TabUser_{})
|
|
||||||
|
|
||||||
DB.AutoMigrate(&TabUserGroups_{})
|
|
||||||
|
|
||||||
DB.AutoMigrate(&TabUserGroupBinds_{})
|
|
||||||
|
|
||||||
DB.AutoMigrate(&TabUserInfo_{})
|
|
||||||
|
|
||||||
DB.AutoMigrate(&TabCookie_{})
|
|
||||||
|
|
||||||
DB.AutoMigrate(&APIRequestLog_{})
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
purchaseUserGroup models.TabUserGroups_
|
purchaseUserGroup TabUserGroups
|
||||||
purchaseAdmins []uint
|
purchaseAdmins []uint
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ func updatePurchaseAdminsCash() {
|
|||||||
purchaseAdmins = nil
|
purchaseAdmins = nil
|
||||||
// id 1 是系统管理员
|
// id 1 是系统管理员
|
||||||
purchaseAdmins = append(purchaseAdmins, 1)
|
purchaseAdmins = append(purchaseAdmins, 1)
|
||||||
var binds []models.TabUserGroupBinds_
|
var binds []TabUserGroupBinds
|
||||||
models.DB.Where("group_id = ?", purchaseUserGroup.ID).Find(&binds)
|
models.DB.Where("group_id = ?", purchaseUserGroup.ID).Find(&binds)
|
||||||
for _, item := range binds {
|
for _, item := range binds {
|
||||||
if !slices.Contains(purchaseAdmins, item.UserID) {
|
if !slices.Contains(purchaseAdmins, item.UserID) {
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ type fromGetEvents struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
userGroup models.TabUserGroups_
|
userGroup TabUserGroups
|
||||||
scheduleAdmins []uint
|
scheduleAdmins []uint
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -66,8 +66,8 @@ scheduleAdmins=nil
|
|||||||
//id 1是系统管理员 直接appen
|
//id 1是系统管理员 直接appen
|
||||||
scheduleAdmins=append(scheduleAdmins, 1)
|
scheduleAdmins=append(scheduleAdmins, 1)
|
||||||
//读取所有绑定了这个用户组的用户id
|
//读取所有绑定了这个用户组的用户id
|
||||||
var usergroupbind []models.TabUserGroupBinds_
|
var usergroupbind []TabUserGroupBinds
|
||||||
usergroupbindfind:= models.TabUserGroupBinds_{
|
usergroupbindfind:= TabUserGroupBinds{
|
||||||
GroupID: userGroup.ID,
|
GroupID: userGroup.ID,
|
||||||
}
|
}
|
||||||
models.DB.Where(&usergroupbindfind).Find(&usergroupbind)
|
models.DB.Where(&usergroupbindfind).Find(&usergroupbind)
|
||||||
|
|||||||
@@ -12,12 +12,115 @@ import (
|
|||||||
"github.com/mitchellh/mapstructure"
|
"github.com/mitchellh/mapstructure"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type TabUser struct {
|
||||||
|
ID uint `gorm:"primaryKey;autoIncrement"` // 自增主键
|
||||||
|
Name string `gorm:"size:100;uniqueIndex"` // 唯一约束索引
|
||||||
|
Email string `gorm:"size:255;index"` // 字符串长度限制100 索引
|
||||||
|
Pass string `gorm:"size:128"` // 建议存储哈希后的密码
|
||||||
|
Type string `gorm:"size:64;default:user"` //
|
||||||
|
Salt string `gorm:"size:64;"`
|
||||||
|
Date time.Time `gorm:"type:datetime;default:CURRENT_TIMESTAMP"` // 默认当前时间
|
||||||
|
}
|
||||||
|
|
||||||
|
type TabUserGroups struct {
|
||||||
|
ID uint `gorm:"primaryKey;autoIncrement"` // 自增主键
|
||||||
|
Name string `gorm:"size:100;uniqueIndex"` // 唯一约束索引
|
||||||
|
Email string `gorm:"size:255;index"` // 字符串长度限制100 索引
|
||||||
|
Type string `gorm:"size:64;default:usergroup"` //
|
||||||
|
Date time.Time `gorm:"type:datetime;default:CURRENT_TIMESTAMP"` // 默认当前时间
|
||||||
|
}
|
||||||
|
|
||||||
|
type TabUserGroupBinds struct {
|
||||||
|
ID uint `gorm:"primaryKey;autoIncrement"` // 自增主键
|
||||||
|
UserID uint `gorm:"index"`
|
||||||
|
GroupID uint `gorm:"index"`
|
||||||
|
Date time.Time `gorm:"type:datetime;default:CURRENT_TIMESTAMP"` // 默认当前时间
|
||||||
|
}
|
||||||
|
|
||||||
|
type TabUserInfo struct {
|
||||||
|
ID uint `gorm:"primaryKey;autoIncrement"`
|
||||||
|
UserID uint `gorm:"not null;uniqueIndex"`
|
||||||
|
FirstName string `gorm:"size:50;null"`
|
||||||
|
Username string `gorm:"size:30;null"`
|
||||||
|
Birthdate time.Time `gorm:"type:datetime;null"`
|
||||||
|
Gender string `gorm:"type:char(1);check:gender IN ('M', 'F', 'U');default:'U'"`
|
||||||
|
AvatarPath string `gorm:"size:255"`
|
||||||
|
Region string `gorm:"size:50"`
|
||||||
|
Language string `gorm:"size:10;default:'zh-CN'"`
|
||||||
|
CreatedAt time.Time `gorm:"type:datetime;default:CURRENT_TIMESTAMP;column:created_at"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// var def_user_info = User_info{
|
||||||
|
// ID:0,
|
||||||
|
// UserID:0,
|
||||||
|
// }
|
||||||
|
|
||||||
|
type TabUserCookie struct {
|
||||||
|
ID uint `gorm:"primaryKey;autoIncrement"`
|
||||||
|
UserID uint `gorm:"not null"`
|
||||||
|
Name string `gorm:"size:255;not null;index"`
|
||||||
|
Value string `gorm:"size:255;not null;index"`
|
||||||
|
ExpiresAt time.Time `gorm:"type:datetime;index"`
|
||||||
|
CreatedAt time.Time `gorm:"type:datetime;not null;default:CURRENT_TIMESTAMP"`
|
||||||
|
UpdatedAt time.Time `gorm:"type:datetime;index;not null;default:CURRENT_TIMESTAMP"`
|
||||||
|
Remember bool `gorm:"default:false"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func HashUserPass(user *TabUser) {
|
||||||
|
switch models.ConfigsUser.PassHashType {
|
||||||
|
case "text":
|
||||||
|
break
|
||||||
|
case "md5":
|
||||||
|
user.Pass = models.Md5Str(user.Pass)
|
||||||
|
|
||||||
|
case "md5salt":
|
||||||
|
if user.Salt == "" {
|
||||||
|
user.Salt = models.RandStr32()
|
||||||
|
}
|
||||||
|
user.Pass = models.Md5Str(models.Md5Str(user.Pass) + user.Salt)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func CheckCookiesAndUpdate(cookie *TabUserCookie) bool {
|
||||||
|
if !models.IsExpired(cookie.ExpiresAt) {
|
||||||
|
if cookie.Remember {
|
||||||
|
cookiewhere := TabUserCookie{
|
||||||
|
ID: cookie.ID,
|
||||||
|
}
|
||||||
|
cookieupdata := TabUserCookie{
|
||||||
|
UpdatedAt: time.Now(),
|
||||||
|
ExpiresAt: time.Now().Add(time.Duration(models.ConfigsUser.CookieTimeout) * time.Second),
|
||||||
|
}
|
||||||
|
models.DB.Where(&cookiewhere).Updates(&cookieupdata)
|
||||||
|
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
//以过期
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
//return false
|
||||||
|
}
|
||||||
|
|
||||||
func ApiUserInit() {
|
func ApiUserInit() {
|
||||||
//用户模块初始化init
|
//用户模块初始化init
|
||||||
fmt.Println("users init")
|
fmt.Println("users init")
|
||||||
|
|
||||||
|
// 自动创建表结构
|
||||||
|
models.DB.AutoMigrate(&TabUser{})
|
||||||
|
|
||||||
|
models.DB.AutoMigrate(&TabUserGroups{})
|
||||||
|
|
||||||
|
models.DB.AutoMigrate(&TabUserGroupBinds{})
|
||||||
|
|
||||||
|
models.DB.AutoMigrate(&TabUserInfo{})
|
||||||
|
|
||||||
|
models.DB.AutoMigrate(&TabUserCookie{})
|
||||||
|
|
||||||
//创建admin用户
|
//创建admin用户
|
||||||
var user models.TabUser_
|
var user TabUser
|
||||||
user.Name = "admin"
|
user.Name = "admin"
|
||||||
|
|
||||||
if models.DB.Where(&user).First(&user).Error == nil {
|
if models.DB.Where(&user).First(&user).Error == nil {
|
||||||
@@ -28,12 +131,12 @@ func ApiUserInit() {
|
|||||||
//对密码加盐
|
//对密码加盐
|
||||||
user.Salt = models.RandStr32()
|
user.Salt = models.RandStr32()
|
||||||
user.Pass = "adminpassword"
|
user.Pass = "adminpassword"
|
||||||
models.HashUserPass(&user)
|
HashUserPass(&user)
|
||||||
models.DB.Create(&user) // 传入指针
|
models.DB.Create(&user) // 传入指针
|
||||||
}
|
}
|
||||||
|
|
||||||
//创建admin group
|
//创建admin group
|
||||||
var usergroup models.TabUserGroups_
|
var usergroup TabUserGroups
|
||||||
usergroup.Name = "admins"
|
usergroup.Name = "admins"
|
||||||
if models.DB.Where(&usergroup).First(&usergroup).Error == nil {
|
if models.DB.Where(&usergroup).First(&usergroup).Error == nil {
|
||||||
|
|
||||||
@@ -43,7 +146,7 @@ func ApiUserInit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//创建用户与用户组绑定
|
//创建用户与用户组绑定
|
||||||
var usergroupbind models.TabUserGroupBinds_
|
var usergroupbind TabUserGroupBinds
|
||||||
usergroupbind.UserID = user.ID
|
usergroupbind.UserID = user.ID
|
||||||
usergroupbind.GroupID = usergroup.ID
|
usergroupbind.GroupID = usergroup.ID
|
||||||
|
|
||||||
@@ -82,18 +185,18 @@ type From_user_changepass struct {
|
|||||||
Newpass string `json:"newpass"`
|
Newpass string `json:"newpass"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func AuthenticationAuthorityFromCookie(c string) (*models.TabUser_, error) {
|
func AuthenticationAuthorityFromCookie(c string) (*TabUser, error) {
|
||||||
|
|
||||||
if c != "" {
|
if c != "" {
|
||||||
cookie := models.TabCookie_{
|
cookie := TabUserCookie{
|
||||||
Value: c,
|
Value: c,
|
||||||
}
|
}
|
||||||
if models.DB.Where(&cookie).First(&cookie).Error == nil {
|
if models.DB.Where(&cookie).First(&cookie).Error == nil {
|
||||||
//找到cookie,验证cookie有效性,以及更新cookie
|
//找到cookie,验证cookie有效性,以及更新cookie
|
||||||
if models.CheckCookiesAndUpdate(&cookie) {
|
if CheckCookiesAndUpdate(&cookie) {
|
||||||
//cookie有效
|
//cookie有效
|
||||||
//载入user
|
//载入user
|
||||||
user := models.TabUser_{
|
user := TabUser{
|
||||||
ID: cookie.UserID,
|
ID: cookie.UserID,
|
||||||
}
|
}
|
||||||
models.DB.Where(&user).First(&user)
|
models.DB.Where(&user).First(&user)
|
||||||
@@ -109,27 +212,27 @@ func AuthenticationAuthorityFromCookie(c string) (*models.TabUser_, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUserInfoFromUserID(userID uint) (*models.TabUserInfo_){
|
func GetUserInfoFromUserID(userID uint) *TabUserInfo {
|
||||||
//通过id获取用户info
|
//通过id获取用户info
|
||||||
|
|
||||||
if(userID <=0){
|
if userID <= 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//先查询用户是否存在
|
//先查询用户是否存在
|
||||||
var user models.TabUser_
|
var user TabUser
|
||||||
user.ID = userID
|
user.ID = userID
|
||||||
|
|
||||||
if models.DB.Where(&user).First(&user).Error==nil{
|
if models.DB.Where(&user).First(&user).Error == nil {
|
||||||
var userinfo models.TabUserInfo_
|
var userinfo TabUserInfo
|
||||||
userinfo.UserID=user.ID
|
userinfo.UserID = user.ID
|
||||||
if models.DB.Where(&userinfo).First(&userinfo).Error==nil{
|
if models.DB.Where(&userinfo).First(&userinfo).Error == nil {
|
||||||
return &userinfo
|
return &userinfo
|
||||||
}else{
|
} else {
|
||||||
//无记录,创建一条
|
//无记录,创建一条
|
||||||
userinfo.Username=user.Name
|
userinfo.Username = user.Name
|
||||||
userinfo.FirstName=user.Email
|
userinfo.FirstName = user.Email
|
||||||
userinfo.Birthdate=(time.Now())
|
userinfo.Birthdate = (time.Now())
|
||||||
models.DB.Create(&userinfo)
|
models.DB.Create(&userinfo)
|
||||||
return &userinfo
|
return &userinfo
|
||||||
}
|
}
|
||||||
@@ -137,16 +240,13 @@ func GetUserInfoFromUserID(userID uint) (*models.TabUserInfo_){
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func AuthenticationAuthority(ctx *gin.Context) (bool, models.TabUser_, map[string]interface{}) {
|
func AuthenticationAuthority(ctx *gin.Context) (bool, TabUser, map[string]interface{}) {
|
||||||
|
|
||||||
data, cookieval := SeparateData(ctx)
|
data, cookieval := SeparateData(ctx)
|
||||||
//fmt.Println("cookieis" + cookieval)
|
//fmt.Println("cookieis" + cookieval)
|
||||||
var user models.TabUser_
|
var user TabUser
|
||||||
if cookieval != "" {
|
if cookieval != "" {
|
||||||
user_, error := AuthenticationAuthorityFromCookie(cookieval)
|
user_, error := AuthenticationAuthorityFromCookie(cookieval)
|
||||||
if error == nil {
|
if error == nil {
|
||||||
@@ -163,8 +263,6 @@ func AuthenticationAuthority(ctx *gin.Context) (bool, models.TabUser_, map[strin
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func ApiUser(r *gin.RouterGroup) {
|
func ApiUser(r *gin.RouterGroup) {
|
||||||
|
|
||||||
r.GET("/test", func(ctx *gin.Context) {
|
r.GET("/test", func(ctx *gin.Context) {
|
||||||
@@ -175,14 +273,14 @@ func ApiUser(r *gin.RouterGroup) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
//get获取用户info
|
//get获取用户info
|
||||||
r.GET("/getuserinfo/:id",func(ctx *gin.Context) {
|
r.GET("/getuserinfo/:id", func(ctx *gin.Context) {
|
||||||
idStr := ctx.Param("id")
|
idStr := ctx.Param("id")
|
||||||
id, err := strconv.Atoi(idStr)
|
id, err := strconv.Atoi(idStr)
|
||||||
var redata map[string]interface{} = make(map[string]interface{})
|
var redata map[string]interface{} = make(map[string]interface{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
userinfo:=GetUserInfoFromUserID(uint(id))
|
userinfo := GetUserInfoFromUserID(uint(id))
|
||||||
if(userinfo!=nil){
|
if userinfo != nil {
|
||||||
redata["userinfo"]=*userinfo
|
redata["userinfo"] = *userinfo
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -200,17 +298,17 @@ func ApiUser(r *gin.RouterGroup) {
|
|||||||
//验证旧密码
|
//验证旧密码
|
||||||
//fmt.Println(user)
|
//fmt.Println(user)
|
||||||
//转换旧密码
|
//转换旧密码
|
||||||
olduser := models.TabUser_{
|
olduser := TabUser{
|
||||||
Pass: jsonData.Oldpass,
|
Pass: jsonData.Oldpass,
|
||||||
Salt: user.Salt,
|
Salt: user.Salt,
|
||||||
}
|
}
|
||||||
models.HashUserPass(&olduser)
|
HashUserPass(&olduser)
|
||||||
if olduser.Pass == user.Pass {
|
if olduser.Pass == user.Pass {
|
||||||
//旧密码正确,更新新密码
|
//旧密码正确,更新新密码
|
||||||
var userupdate models.TabUser_
|
var userupdate TabUser
|
||||||
userupdate.Pass = jsonData.Newpass
|
userupdate.Pass = jsonData.Newpass
|
||||||
userupdate.Salt = models.RandStr32()
|
userupdate.Salt = models.RandStr32()
|
||||||
models.HashUserPass(&userupdate)
|
HashUserPass(&userupdate)
|
||||||
models.DB.Model(&user).Updates(&userupdate)
|
models.DB.Model(&user).Updates(&userupdate)
|
||||||
ReturnJson(ctx, "apiOK", nil)
|
ReturnJson(ctx, "apiOK", nil)
|
||||||
} else {
|
} else {
|
||||||
@@ -233,7 +331,7 @@ func ApiUser(r *gin.RouterGroup) {
|
|||||||
if err := mapstructure.Decode(data, &jsonData); err == nil {
|
if err := mapstructure.Decode(data, &jsonData); err == nil {
|
||||||
//判断新邮箱格式
|
//判断新邮箱格式
|
||||||
if models.IsEmailValid(jsonData.Newemail) {
|
if models.IsEmailValid(jsonData.Newemail) {
|
||||||
var userupdate models.TabUser_
|
var userupdate TabUser
|
||||||
userupdate.Email = jsonData.Newemail
|
userupdate.Email = jsonData.Newemail
|
||||||
models.DB.Model(&user).Updates(&userupdate)
|
models.DB.Model(&user).Updates(&userupdate)
|
||||||
ReturnJson(ctx, "apiOK", nil)
|
ReturnJson(ctx, "apiOK", nil)
|
||||||
@@ -297,10 +395,10 @@ func ApiUser(r *gin.RouterGroup) {
|
|||||||
}
|
}
|
||||||
if is_save_ok {
|
if is_save_ok {
|
||||||
//修改数据库内容
|
//修改数据库内容
|
||||||
var user_info_fund models.TabUserInfo_
|
var user_info_fund TabUserInfo
|
||||||
user_info_fund.UserID = user.ID
|
user_info_fund.UserID = user.ID
|
||||||
|
|
||||||
var user_update_avatar models.TabUserInfo_
|
var user_update_avatar TabUserInfo
|
||||||
user_update_avatar.AvatarPath = file_hashi_name + file_extname
|
user_update_avatar.AvatarPath = file_hashi_name + file_extname
|
||||||
|
|
||||||
//先查找是否有记录
|
//先查找是否有记录
|
||||||
@@ -357,10 +455,10 @@ func ApiUser(r *gin.RouterGroup) {
|
|||||||
// fmt.Println(user)
|
// fmt.Println(user)
|
||||||
t, err := time.Parse("2006-01-02", jsonData.Birthday)
|
t, err := time.Parse("2006-01-02", jsonData.Birthday)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
var userinfo models.TabUserInfo_
|
var userinfo TabUserInfo
|
||||||
userinfo.UserID = user.ID
|
userinfo.UserID = user.ID
|
||||||
|
|
||||||
var userinfoupdate models.TabUserInfo_
|
var userinfoupdate TabUserInfo
|
||||||
userinfoupdate.UserID = user.ID
|
userinfoupdate.UserID = user.ID
|
||||||
userinfoupdate.CreatedAt = time.Now()
|
userinfoupdate.CreatedAt = time.Now()
|
||||||
userinfoupdate.Username = jsonData.Username
|
userinfoupdate.Username = jsonData.Username
|
||||||
@@ -399,7 +497,7 @@ func ApiUser(r *gin.RouterGroup) {
|
|||||||
//fmt.Println(userInfo)
|
//fmt.Println(userInfo)
|
||||||
var redata map[string]interface{} = make(map[string]interface{})
|
var redata map[string]interface{} = make(map[string]interface{})
|
||||||
|
|
||||||
info:=GetUserInfoFromUserID(user.ID)
|
info := GetUserInfoFromUserID(user.ID)
|
||||||
redata["userInfo"] = *info
|
redata["userInfo"] = *info
|
||||||
|
|
||||||
user.Pass = ""
|
user.Pass = ""
|
||||||
@@ -419,21 +517,21 @@ func ApiUser(r *gin.RouterGroup) {
|
|||||||
if loginuser.Username != "" && loginuser.Password != "" {
|
if loginuser.Username != "" && loginuser.Password != "" {
|
||||||
//传入的数据都ok,获取用户信息
|
//传入的数据都ok,获取用户信息
|
||||||
|
|
||||||
getuser := models.TabUser_{
|
getuser := TabUser{
|
||||||
Name: loginuser.Username,
|
Name: loginuser.Username,
|
||||||
}
|
}
|
||||||
|
|
||||||
if models.DB.Where(&getuser).First(&getuser).Error == nil {
|
if models.DB.Where(&getuser).First(&getuser).Error == nil {
|
||||||
//倒入数据
|
//倒入数据
|
||||||
user := models.TabUser_{
|
user := TabUser{
|
||||||
Pass: loginuser.Password, //密码明文
|
Pass: loginuser.Password, //密码明文
|
||||||
Salt: getuser.Salt, //保存的盐制
|
Salt: getuser.Salt, //保存的盐制
|
||||||
}
|
}
|
||||||
//哈希密
|
//哈希密
|
||||||
models.HashUserPass(&user)
|
HashUserPass(&user)
|
||||||
if user.Pass == getuser.Pass {
|
if user.Pass == getuser.Pass {
|
||||||
//用户密码正确,生成cookie
|
//用户密码正确,生成cookie
|
||||||
cookie := models.TabCookie_{
|
cookie := TabUserCookie{
|
||||||
UserID: getuser.ID,
|
UserID: getuser.ID,
|
||||||
Name: "login",
|
Name: "login",
|
||||||
Value: models.RandStr32(),
|
Value: models.RandStr32(),
|
||||||
@@ -480,7 +578,7 @@ func ApiUser(r *gin.RouterGroup) {
|
|||||||
if data != nil {
|
if data != nil {
|
||||||
if err := mapstructure.Decode(data, &jsonData); err == nil {
|
if err := mapstructure.Decode(data, &jsonData); err == nil {
|
||||||
//转换字段
|
//转换字段
|
||||||
newUser := models.TabUser_{
|
newUser := TabUser{
|
||||||
Name: jsonData.Username,
|
Name: jsonData.Username,
|
||||||
Email: jsonData.Useremail,
|
Email: jsonData.Useremail,
|
||||||
Pass: jsonData.Userpass, // 实际应替换为哈希值
|
Pass: jsonData.Userpass, // 实际应替换为哈希值
|
||||||
@@ -490,7 +588,7 @@ func ApiUser(r *gin.RouterGroup) {
|
|||||||
if newUser.Name != "" && newUser.Pass != "" && newUser.Email != "" {
|
if newUser.Name != "" && newUser.Pass != "" && newUser.Email != "" {
|
||||||
|
|
||||||
//用户名是唯一的,先读取是否有这个用户名
|
//用户名是唯一的,先读取是否有这个用户名
|
||||||
var user models.TabUser_
|
var user TabUser
|
||||||
user.Name = newUser.Name
|
user.Name = newUser.Name
|
||||||
|
|
||||||
if models.DB.Where(&user).First(&user).Error == nil {
|
if models.DB.Where(&user).First(&user).Error == nil {
|
||||||
@@ -503,14 +601,12 @@ func ApiUser(r *gin.RouterGroup) {
|
|||||||
newUser.Salt = models.RandStr32()
|
newUser.Salt = models.RandStr32()
|
||||||
|
|
||||||
//对用户的密码进行哈希替换
|
//对用户的密码进行哈希替换
|
||||||
models.HashUserPass(&newUser)
|
HashUserPass(&newUser)
|
||||||
|
|
||||||
models.DB.Create(&newUser) // 传入指针
|
models.DB.Create(&newUser) // 传入指针
|
||||||
|
|
||||||
//创建用户后写一个log
|
//创建用户后写一个log
|
||||||
|
|
||||||
models.LogAdd(ctx, "New user id:"+strconv.Itoa(int(newUser.ID)))
|
|
||||||
|
|
||||||
ReturnJson(ctx, "apiOK", nil)
|
ReturnJson(ctx, "apiOK", nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ type TabWarehouseItemWorkOrderBind struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
warehouseUserGroup models.TabUserGroups_
|
warehouseUserGroup TabUserGroups
|
||||||
warehouseAdmins []uint
|
warehouseAdmins []uint
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ var (
|
|||||||
func updateWarehouseAdminsCash() {
|
func updateWarehouseAdminsCash() {
|
||||||
warehouseAdmins = nil
|
warehouseAdmins = nil
|
||||||
warehouseAdmins = append(warehouseAdmins, 1) // id=1 超级管理员
|
warehouseAdmins = append(warehouseAdmins, 1) // id=1 超级管理员
|
||||||
var binds []models.TabUserGroupBinds_
|
var binds []TabUserGroupBinds
|
||||||
models.DB.Where("group_id = ?", warehouseUserGroup.ID).Find(&binds)
|
models.DB.Where("group_id = ?", warehouseUserGroup.ID).Find(&binds)
|
||||||
for _, item := range binds {
|
for _, item := range binds {
|
||||||
if !slices.Contains(warehouseAdmins, item.UserID) {
|
if !slices.Contains(warehouseAdmins, item.UserID) {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package routers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"ops/models"
|
|
||||||
parsefmt "fmt"
|
parsefmt "fmt"
|
||||||
|
"ops/models"
|
||||||
"slices"
|
"slices"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
workOrderUserGroup models.TabUserGroups_
|
workOrderUserGroup TabUserGroups
|
||||||
workOrderAdmins []uint
|
workOrderAdmins []uint
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ var (
|
|||||||
func updateWorkOrderAdminsCash() {
|
func updateWorkOrderAdminsCash() {
|
||||||
workOrderAdmins = nil
|
workOrderAdmins = nil
|
||||||
workOrderAdmins = append(workOrderAdmins, 1) // id=1 超级管理员
|
workOrderAdmins = append(workOrderAdmins, 1) // id=1 超级管理员
|
||||||
var binds []models.TabUserGroupBinds_
|
var binds []TabUserGroupBinds
|
||||||
models.DB.Where("group_id = ?", workOrderUserGroup.ID).Find(&binds)
|
models.DB.Where("group_id = ?", workOrderUserGroup.ID).Find(&binds)
|
||||||
for _, item := range binds {
|
for _, item := range binds {
|
||||||
if !slices.Contains(workOrderAdmins, item.UserID) {
|
if !slices.Contains(workOrderAdmins, item.UserID) {
|
||||||
@@ -82,20 +82,20 @@ type TabWorkOrderLog struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TabWorkOrderCommitFileBind struct {
|
type TabWorkOrderCommitFileBind struct {
|
||||||
ID uint `gorm:"primarykey"`
|
ID uint `gorm:"primarykey"`
|
||||||
CommitID uint `gorm:"not null;index;comment:关联进度ID"`
|
CommitID uint `gorm:"not null;index;comment:关联进度ID"`
|
||||||
FileID uint `gorm:"not null;comment:关联文件ID"`
|
FileID uint `gorm:"not null;comment:关联文件ID"`
|
||||||
WorkOrderID uint `gorm:"not null;index;comment:关联工单ID"`
|
WorkOrderID uint `gorm:"not null;index;comment:关联工单ID"`
|
||||||
CreatedAt *time.Time `gorm:"type:datetime;autoCreateTime"`
|
CreatedAt *time.Time `gorm:"type:datetime;autoCreateTime"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TabWorkOrderPurchaseOrderBind 工单与采购订单的关联表
|
// TabWorkOrderPurchaseOrderBind 工单与采购订单的关联表
|
||||||
type TabWorkOrderPurchaseOrderBind struct {
|
type TabWorkOrderPurchaseOrderBind struct {
|
||||||
ID uint `gorm:"primarykey"`
|
ID uint `gorm:"primarykey"`
|
||||||
WorkOrderID uint `gorm:"not null;index;comment:关联工单ID"`
|
WorkOrderID uint `gorm:"not null;index;comment:关联工单ID"`
|
||||||
CommitID uint `gorm:"not null;index;comment:关联进度ID"`
|
CommitID uint `gorm:"not null;index;comment:关联进度ID"`
|
||||||
PurchaseOrderID uint `gorm:"not null;comment:关联采购订单ID"`
|
PurchaseOrderID uint `gorm:"not null;comment:关联采购订单ID"`
|
||||||
CreatedAt *time.Time `gorm:"type:datetime;autoCreateTime"`
|
CreatedAt *time.Time `gorm:"type:datetime;autoCreateTime"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PurchaseOrderInfo 采购订单简要信息
|
// PurchaseOrderInfo 采购订单简要信息
|
||||||
@@ -441,12 +441,12 @@ func ApiWorkOrder(r *gin.RouterGroup) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnJson(ctx, "apiOK", gin.H{
|
ReturnJson(ctx, "apiOK", gin.H{
|
||||||
"order": order,
|
"order": order,
|
||||||
"canModify": canModify,
|
"canModify": canModify,
|
||||||
"canCommit": canCommit,
|
"canCommit": canCommit,
|
||||||
"photos": files,
|
"photos": files,
|
||||||
"commits": commitsWithPhotos,
|
"commits": commitsWithPhotos,
|
||||||
"linkedItems": linkedItems,
|
"linkedItems": linkedItems,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
+1
-1
Submodule frontend/ops2_uniapp updated: 6532650eb7...da9a303cb6
Reference in New Issue
Block a user