diff --git a/cmd/dashboard/controller/member_api.go b/cmd/dashboard/controller/member_api.go index 3dd1bc4..4231a85 100644 --- a/cmd/dashboard/controller/member_api.go +++ b/cmd/dashboard/controller/member_api.go @@ -103,18 +103,20 @@ func (ma *memberAPI) addOrEditServer(c *gin.Context) { var isEdit bool err := c.ShouldBindJSON(&sf) if err == nil { - dao.ServerLock.Lock() - defer dao.ServerLock.Unlock() s.Name = sf.Name s.Secret = sf.Secret s.DisplayIndex = sf.DisplayIndex s.ID = sf.ID s.Tag = sf.Tag if sf.ID == 0 { + dao.ServerLock.Lock() + defer dao.ServerLock.Unlock() s.Secret = com.MD5(fmt.Sprintf("%s%s%d", time.Now(), sf.Name, admin.ID)) s.Secret = s.Secret[:10] err = dao.DB.Create(&s).Error } else { + dao.ServerLock.RLock() + defer dao.ServerLock.RUnlock() isEdit = true err = dao.DB.Save(&s).Error } diff --git a/model/server.go b/model/server.go index d382a75..b21a976 100644 --- a/model/server.go +++ b/model/server.go @@ -11,12 +11,13 @@ import ( type Server struct { Common Name string - DisplayIndex int // 展示权重,越大越靠前 - Secret string `json:"-"` Tag string - Host *Host `gorm:"-"` - State *HostState `gorm:"-"` - LastActive time.Time + Secret string `json:"-"` + DisplayIndex int // 展示权重,越大越靠前 + + Host *Host `gorm:"-"` + State *HostState `gorm:"-"` + LastActive *time.Time `gorm:"-"` TaskClose chan error `gorm:"-" json:"-"` TaskStream pb.NezhaService_RequestTaskServer `gorm:"-" json:"-"` diff --git a/pkg/mygin/auth.go b/pkg/mygin/auth.go index d376472..8ee0103 100644 --- a/pkg/mygin/auth.go +++ b/pkg/mygin/auth.go @@ -22,8 +22,6 @@ type AuthorizeOption struct { func Authorize(opt AuthorizeOption) func(*gin.Context) { return func(c *gin.Context) { - token, err := c.Cookie(dao.Conf.Site.CookieName) - token = strings.TrimSpace(token) var code uint64 = http.StatusForbidden if opt.Guest { code = http.StatusBadRequest @@ -35,18 +33,21 @@ func Authorize(opt AuthorizeOption) func(*gin.Context) { Link: opt.Redirect, Btn: opt.Btn, } - if token != "" { - } var isLogin bool - var u model.User - err = dao.DB.Where("token = ?", token).First(&u).Error - if err == nil { - isLogin = u.TokenExpired.After(time.Now()) - } - if isLogin { - c.Set(model.CtxKeyAuthorizedUser, &u) + + token, _ := c.Cookie(dao.Conf.Site.CookieName) + token = strings.TrimSpace(token) + if token != "" { + var u model.User + if err := dao.DB.Where("token = ?", token).First(&u).Error; err == nil { + isLogin = u.TokenExpired.After(time.Now()) + } + if isLogin { + c.Set(model.CtxKeyAuthorizedUser, &u) + } } + // 已登录且只能游客访问 if isLogin && opt.Guest { ShowErrorPage(c, commonErr, opt.IsPage) diff --git a/resource/template/theme-default/home.html b/resource/template/theme-default/home.html index b05f576..eed0065 100644 --- a/resource/template/theme-default/home.html +++ b/resource/template/theme-default/home.html @@ -25,7 +25,6 @@