进度到修改头像的弹窗

Signed-off-by: kevin <kevin@lmve.net>
This commit is contained in:
2025-06-09 20:50:52 +08:00
parent 56d2e09290
commit 396c0d32a7
71 changed files with 9487 additions and 185 deletions
+2 -3
View File
@@ -1,19 +1,18 @@
package routers
import (
"net/http"
"github.com/gin-gonic/gin"
)
func Api_router(r *gin.RouterGroup) {
r.GET("/", func(ctx *gin.Context) {
ctx.String(http.StatusOK, "api")
Return_json(ctx, "api_ok", nil)
})
v1_api := r.Group("/v1/")
{
V1_time_api(v1_api.Group("/time/"))
V1_user_api(v1_api.Group("/user/"))
V1_file_api(v1_api.Group("/file/"))
V1_cookie_api(v1_api.Group("/cookie/"))
+10
View File
@@ -0,0 +1,10 @@
package routers
import "github.com/gin-gonic/gin"
func V1_time_api(r *gin.RouterGroup) {
r.GET("/now", func(ctx *gin.Context) {
})
}
+20 -19
View File
@@ -41,6 +41,9 @@ func V1_user_api(r *gin.RouterGroup) {
} else {
//fmt.Println("用户不存在")
models.DB.Create(&newUser) // 传入指针
//创建info
Return_json(ctx, "api_ok", nil)
}
@@ -98,8 +101,11 @@ func V1_user_api(r *gin.RouterGroup) {
//计算cookie失效时间
new_cookie.ExpiresAt = time.Now().Add(time.Duration(models.User_configs["cookie_timeout"].(int)) * time.Second) //计算过期时间
new_cookie.SecureFlag = models.Wed_configs.Tls
ctx.SetCookie("user", cookie, cookie_time, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
//发送到前端
ctx.SetCookie("user", cookie, cookie_time, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
ctx.Set("cookie", new_cookie)
//写到数据库
models.DB.Create(&new_cookie) // 传入指针
//获取用户info
@@ -138,36 +144,31 @@ func V1_user_api(r *gin.RouterGroup) {
r.POST("/logout", func(ctx *gin.Context) {
//返回前端的数据
err_msg = "user_api_error"
err_code = Error_code[err_msg]
//先判断是否已经登录
//获取中间件处理的结果
is_login, _ := ctx.Get("is_login")
_, is_login := ctx.Get("user_info")
if is_login == true {
//fmt.Println("loged")
cookie_vel, _ := ctx.Cookie("user") //这个cookie在中间件已经判断为有效的,否则is_login不可能为true,所以直接在数据库删除应该是安全的
cookie_any, _ := ctx.Get("cookie") //这个cookie在中间件已经判断为有效的,否则is_login不可能为true,所以直接在数据库删除应该是安全的
//删除数据库里的cookie
var cookie models.Cookie
cookie.Value = cookie_vel
models.DB.Where(&cookie).Delete(&cookie)
//删除前端cookie
ctx.SetCookie("user", "", -1, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
if err := mapstructure.Decode(cookie_any, &cookie); err == nil {
models.DB.Where(&cookie).Delete(&cookie)
//删除前端cookie
ctx.SetCookie("user", "", -1, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
ctx.Set("cookie", nil)
err_msg = "api_ok"
err_code = Error_code[err_msg]
Return_json(ctx, "api_ok", nil)
} else {
Return_json(ctx, "json_error", nil)
}
} else {
//fmt.Println("no loged")
err_msg = "user_no_sign"
err_code = Error_code[err_msg]
Return_json(ctx, "user_no_sign", nil)
}
ctx.JSON(200, map[string]interface{}{
"api": "ok",
"err_code": err_code,
"err_msg": err_msg,
})
})
r.POST("/updata_info", func(ctx *gin.Context) {
+21 -19
View File
@@ -13,7 +13,6 @@ import (
func Def_router(r *gin.RouterGroup) {
r.Use(func(ctx *gin.Context) {
ctx.Set("is_login", false)
cookie_vel := ""
//读取用户cookie,判断用户是否已登录
@@ -29,7 +28,7 @@ func Def_router(r *gin.RouterGroup) {
}
var data_t map[string]interface{}
if err = mapstructure.Decode(jsonData["data"], &data_t); err == nil {
ctx.Set("data", data_t)
ctx.Set("data", &data_t)
}
}
@@ -44,20 +43,17 @@ func Def_router(r *gin.RouterGroup) {
if cookie.ExpiresAt.After(time.Now()) {
// ExpiresAt 在当前时间之后(未过期)
//fmt.Println("Cookie 未过期")
//cookie有效,说明已经登录,cookie过期时间延长,避免大量写入数据库,先判断还有多久过期,小于一天才刷新
// 计算过期时间与当前时间的差值
remaining := time.Until(cookie.ExpiresAt) // 直接使用 time.Until
if remaining < 24*time.Hour {
//fmt.Println("剩余时间不足 1 天")
var cookie_up models.Cookie
cookie_up.UpdatedAt = time.Now()
cookie_up.ExpiresAt = time.Now().Add(time.Duration(models.User_configs["cookie_timeout"].(int)) * time.Second) //计算过期时间
models.DB.Model(&models.Cookie{}).Where(&cookie).Updates(&cookie_up)
} else {
//fmt.Println("cookie时间大于一天")
}
//每次调用都更新cookie的最新状态 ,用于计算在线
var cookie_up models.Cookie
cookie_up.UpdatedAt = time.Now()
cookie_up.ExpiresAt = time.Now().Add(time.Duration(models.User_configs["cookie_timeout"].(int)) * time.Second) //计算过期时间
models.DB.Model(&models.Cookie{}).Where(&cookie).Updates(&cookie_up)
//更新前端cookie
ctx.SetCookie("user", cookie.Value, models.User_configs["cookie_timeout"].(int), "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
cookie.UpdatedAt = cookie_up.UpdatedAt
cookie.ExpiresAt = cookie_up.ExpiresAt
ctx.Set("cookie", cookie)
//读取用户权限信息
var user models.User
user.ID = cookie.UserID
@@ -79,15 +75,15 @@ func Def_router(r *gin.RouterGroup) {
user_info.UserID = cookie.UserID
models.DB.Create(&user_info) // 传入指针
}
ctx.Set("is_login", true)
//写入当前登录的用户信息 传递给下一个组件
ctx.Set("user_info", &user_info)
ctx.Set("user", &user)
} else {
//找不到登录权限?? 可能被封号?
//删除前端cookie
ctx.SetCookie("user", "", -1, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
cookie.Value = ""
cookie.ExpiresAt = time.Now()
ctx.Set("cookie", cookie)
}
} else {
@@ -97,11 +93,17 @@ func Def_router(r *gin.RouterGroup) {
models.DB.Delete(&cookie)
//删除前端cookie
ctx.SetCookie("user", "", -1, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
cookie.Value = ""
cookie.ExpiresAt = time.Now()
ctx.Set("cookie", cookie)
}
} else {
//找不到cookie,未登录
//删除前端cookie
ctx.SetCookie("user", "", -1, "/", models.Wed_configs.Host, models.Wed_configs.Tls, true)
cookie.Value = ""
cookie.ExpiresAt = time.Now()
ctx.Set("cookie", cookie)
}
}
+14 -5
View File
@@ -4,10 +4,19 @@ import "github.com/gin-gonic/gin"
func Return_json(ctx *gin.Context, err_msg string, data map[string]interface{}) {
var err_code = Error_code[err_msg]
ctx.JSON(200, map[string]interface{}{
"err_code": err_code,
"err_msg": err_msg,
"return": data,
})
return_data := map[string]interface{}{}
cookie, have_cookie := ctx.Get("cookie")
if have_cookie {
return_data["cookie"] = cookie
}
return_data["err_code"] = err_code
return_data["err_msg"] = err_msg
if data != nil {
return_data["return"] = data
}
ctx.JSON(200, &return_data)
}