diff --git a/api/handler/user_handler.go b/api/handler/user_handler.go index 490c833c..79f58417 100644 --- a/api/handler/user_handler.go +++ b/api/handler/user_handler.go @@ -80,14 +80,6 @@ func (h *UserHandler) Register(c *gin.Context) { return } - // 默认订阅所有角色 - var chatRoles []model.ChatRole - h.db.Find(&chatRoles) - var roleKeys = make([]string, 0) - for _, r := range chatRoles { - roleKeys = append(roleKeys, r.Key) - } - salt := utils.RandString(8) user := model.User{ Password: utils.GenPassword(data.Password, salt), @@ -95,7 +87,7 @@ func (h *UserHandler) Register(c *gin.Context) { Salt: salt, Status: true, Mobile: data.Mobile, - ChatRoles: utils.JsonEncode(roleKeys), + ChatRoles: utils.JsonEncode([]string{"gpt"}), // 默认只订阅通用助手角色 ChatConfig: utils.JsonEncode(types.UserChatConfig{ ApiKeys: map[types.Platform]string{ types.OpenAI: "", @@ -116,7 +108,24 @@ func (h *UserHandler) Register(c *gin.Context) { if h.App.SysConfig.EnabledMsg { _ = h.leveldb.Delete(key) // 注册成功,删除短信验证码 } - resp.SUCCESS(c, user) + + // 自动登录创建 token + token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ + "user_id": user.Id, + "expired": time.Now().Add(time.Second * time.Duration(h.App.Config.Session.MaxAge)).Unix(), + }) + tokenString, err := token.SignedString([]byte(h.App.Config.Session.SecretKey)) + if err != nil { + resp.ERROR(c, "Failed to generate token, "+err.Error()) + return + } + // 保存到 redis + key = fmt.Sprintf("users/%d", user.Id) + if _, err := h.redis.Set(c, key, tokenString, 0).Result(); err != nil { + resp.ERROR(c, "error with save token: "+err.Error()) + return + } + resp.SUCCESS(c, tokenString) } // Login 用户登录 diff --git a/web/src/assets/css/images-wall.css b/web/src/assets/css/images-wall.css index 7bcfd395..fa02b1d8 100644 --- a/web/src/assets/css/images-wall.css +++ b/web/src/assets/css/images-wall.css @@ -41,10 +41,13 @@ .page-images-wall .inner .waterfall .list-item .prompt { display: none; position: absolute; + width: 180px; bottom: 0; + left: 0; color: #fff; padding: 10px 10px 20px 10px; line-height: 1.2; + border-top-right-radius: 10px; background-color: rgba(10,10,10,0.7); } .page-images-wall .inner .waterfall .list-item .prompt .el-icon { diff --git a/web/src/assets/css/images-wall.styl b/web/src/assets/css/images-wall.styl index f1d3e3c3..350d9ecc 100644 --- a/web/src/assets/css/images-wall.styl +++ b/web/src/assets/css/images-wall.styl @@ -60,10 +60,13 @@ .prompt { display none position absolute + width 180px bottom 0 + left 0 color #ffffff padding 10px 10px 20px 10px line-height 1.2 + border-top-right-radius 10px background-color rgba(10, 10, 10, 0.7) .el-icon { diff --git a/web/src/components/Welcome.vue b/web/src/components/Welcome.vue index 5a84892b..794804c3 100644 --- a/web/src/components/Welcome.vue +++ b/web/src/components/Welcome.vue @@ -88,7 +88,7 @@ const capabilities = ref([ value: "" }, { - text: "国产大语言模型支持,GLM2 模型接入中", + text: "国产大语言模型支持,百度文心,科大讯飞,ChatGLM...", value: "" }, { diff --git a/web/src/views/ImageMj.vue b/web/src/views/ImageMj.vue index b42c9654..b7f19759 100644 --- a/web/src/views/ImageMj.vue +++ b/web/src/views/ImageMj.vue @@ -283,6 +283,7 @@ +

创作记录

@@ -356,6 +357,8 @@
+ + diff --git a/web/src/views/ImageSd.vue b/web/src/views/ImageSd.vue index 8e2ca339..2a10f61f 100644 --- a/web/src/views/ImageSd.vue +++ b/web/src/views/ImageSd.vue @@ -372,6 +372,7 @@ + @@ -619,14 +620,14 @@ onMounted(() => { checkSession().then(user => { imgCalls.value = user['img_calls'] // 获取运行中的任务 - httpGet("/api/sd/jobs?status=0").then(res => { + httpGet(`/api/sd/jobs?status=0&user_id=${user['id']}`).then(res => { runningJobs.value = res.data }).catch(e => { ElMessage.error("获取任务失败:" + e.message) }) // 获取运行中的任务 - httpGet("/api/sd/jobs?status=1").then(res => { + httpGet(`/api/sd/jobs?status=1&user_id=${user['id']}`).then(res => { finishedJobs.value = res.data previewImgList.value = [] for (let index in finishedJobs.value) { diff --git a/web/src/views/Register.vue b/web/src/views/Register.vue index fce76a01..8bef36cd 100644 --- a/web/src/views/Register.vue +++ b/web/src/views/Register.vue @@ -109,6 +109,7 @@ import SendMsg from "@/components/SendMsg.vue"; import {validateMobile} from "@/utils/validate"; import {isMobile} from "@/utils/libs"; import SendMsgMobile from "@/components/SendMsg.vue"; +import {setUserToken} from "@/store/session"; const router = useRouter(); const title = ref('ChatGPT-PLUS 用户注册'); @@ -144,8 +145,13 @@ const register = function () { return ElMessage.error('请输入短信验证码'); } formData.value.code = parseInt(formData.value.code) - httpPost('/api/user/register', formData.value).then(() => { - ElMessage.success({"message": "注册成功,即将跳转到登录页...", onClose: () => router.push("/login")}) + httpPost('/api/user/register', formData.value).then((res) => { + setUserToken(res.data) + ElMessage.success({ + "message": "注册成功,即将跳转到对话主界面...", + onClose: () => router.push("/chat"), + duration: 1000 + }) }).catch((e) => { ElMessage.error('注册失败,' + e.message) })