fix service worker

This commit is contained in:
Zhang Minghan 2023-11-04 20:46:59 +08:00
parent a22f14a123
commit 47da8009aa
8 changed files with 23 additions and 59 deletions

View File

@ -8,7 +8,7 @@ import {
} from "@/utils/env.ts";
import { getMemory } from "@/utils/memory.ts";
export const version = "3.6.9rc";
export const version = "3.6.10";
export const dev: boolean = getDev();
export const deploy: boolean = true;
export let rest_api: string = getRestApi(deploy);
@ -25,7 +25,7 @@ export const supportModels: Model[] = [
{ id: "gpt-4-dalle", name: "DALLE3", free: false, auth: true },
// anthropic models
{ id: "claude-2", name: "Claude-2", free: true, auth: false },
{ id: "claude-2", name: "Claude-2", free: true, auth: true },
{ id: "claude-2-100k", name: "Claude-2-100k", free: false, auth: true },
// spark desk

View File

@ -19,8 +19,7 @@ const resources = {
"invalid-token": "Invalid token",
"invalid-token-prompt": "Please try again.",
"login-failed": "Login failed",
"login-failed-prompt":
"Login failed! Please check your token expiration and try again.",
"login-failed-prompt": "Login failed! Reason: {{reason}}",
"login-success": "Login successful",
"login-success-prompt": "You have been logged in successfully.",
"server-error": "Server error",
@ -271,7 +270,7 @@ const resources = {
"invalid-token": "无效的令牌",
"invalid-token-prompt": "请重试。",
"login-failed": "登录失败",
"login-failed-prompt": "登录失败!请检查您的令牌过期时间并重试。",
"login-failed-prompt": "登录失败!原因: {{reason}}",
"login-success": "登录成功",
"login-success-prompt": "您已成功登录。",
"server-error": "服务器错误",
@ -507,8 +506,7 @@ const resources = {
"invalid-token": "Неверный токен",
"invalid-token-prompt": "Пожалуйста, попробуйте еще раз.",
"login-failed": "Ошибка входа",
"login-failed-prompt":
"Ошибка входа! Пожалуйста, проверьте срок действия вашего токена и попробуйте еще раз.",
"login-failed-prompt": "Ошибка входа! Причина: {{reason}}",
"login-success": "Успешный вход",
"login-success-prompt": "Вы успешно вошли в систему.",
"server-error": "Ошибка сервера",

View File

@ -42,7 +42,7 @@ function Auth() {
if (!data.status) {
toast({
title: t("login-failed"),
description: t("login-failed-prompt"),
description: t("login-failed-prompt", { reason: data.error }),
action: (
<ToastAction altText={t("try-again")} onClick={login}>
{t("try-again")}

View File

@ -2,7 +2,7 @@ import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
import path from "path"
import { createHtmlPlugin } from 'vite-plugin-html'
import {VitePWA} from "vite-plugin-pwa";
import { VitePWA } from "vite-plugin-pwa";
// https://vitejs.dev/config/
export default defineConfig({
@ -26,41 +26,6 @@ export default defineConfig({
}],
start_url: "/",
},
devOptions: {
enabled: true,
},
workbox: {
globPatterns: [
// except for sw.js, which is precached by workbox itself
'**/*.{js,css,html,png,svg,ico,webp}',
],
globDirectory: 'dist',
swDest: 'dist/sw.js',
skipWaiting: true,
clientsClaim: true,
runtimeCaching: [
{
urlPattern: /\.(?:png|gif|jpg|jpeg|svg|webp)$/,
handler: 'CacheFirst',
options: {
cacheName: 'images',
expiration: {
maxEntries: 7200,
}
}
}, {
urlPattern: new RegExp('^https://open.lightxi.com/'),
handler: 'CacheFirst',
options: {
cacheName: 'lightxi-cdn',
expiration: {
maxEntries: 7200,
maxAgeSeconds: 60 * 60 * 24 * 30,
}
}
}
],
}
}),
],
resolve: {

View File

@ -9,8 +9,7 @@ import (
// CanEnableModel returns whether the model can be enabled (without subscription)
func CanEnableModel(db *sql.DB, user *User, model string) bool {
switch model {
case globals.GPT3Turbo, globals.GPT3TurboInstruct, globals.GPT3Turbo0301, globals.GPT3Turbo0613,
globals.Claude2:
case globals.GPT3Turbo, globals.GPT3TurboInstruct, globals.GPT3Turbo0301, globals.GPT3Turbo0613:
return true
case globals.GPT4, globals.GPT40613, globals.GPT40314:
return user != nil && user.GetQuota(db) >= 5

View File

@ -4,6 +4,7 @@ import (
"chat/globals"
"chat/utils"
"database/sql"
"errors"
"fmt"
"github.com/dgrijalva/jwt-go"
"github.com/gin-gonic/gin"
@ -63,7 +64,7 @@ func (u *User) Validate(c *gin.Context) bool {
return true
}
func (u *User) GenerateToken() string {
func (u *User) GenerateToken() (string, error) {
instance := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"username": u.Username,
"password": u.Password,
@ -71,9 +72,9 @@ func (u *User) GenerateToken() string {
})
token, err := instance.SignedString([]byte(viper.GetString("secret")))
if err != nil {
return ""
return "", err
}
return token
return token, nil
}
func (u *User) GetID(db *sql.DB) int64 {
@ -273,11 +274,11 @@ func ParseApiKey(c *gin.Context, key string) *User {
return &user
}
func Login(c *gin.Context, token string) (bool, string) {
func Login(c *gin.Context, token string) (string, error) {
// DeepTrain Token Validation
user := Validate(token)
if user == nil {
return false, ""
return "", errors.New("cannot validate access token")
}
db := utils.GetDBFromContext(c)
@ -290,7 +291,7 @@ func Login(c *gin.Context, token string) (bool, string) {
Username: user.Username,
Password: password,
}
return true, u.GenerateToken()
return u.GenerateToken()
}
// login
@ -298,13 +299,13 @@ func Login(c *gin.Context, token string) (bool, string) {
var password string
err := db.QueryRow("SELECT password FROM auth WHERE username = ?", user.Username).Scan(&password)
if err != nil {
return false, ""
return "", err
}
u := &User{
Username: user.Username,
Password: password,
}
return true, u.GenerateToken()
return u.GenerateToken()
}
func LoginAPI(c *gin.Context) {
@ -317,14 +318,15 @@ func LoginAPI(c *gin.Context) {
return
}
state, token := Login(c, form.Token)
if !state {
token, err := Login(c, form.Token)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"status": false,
"error": "user not found",
"error": err.Error(),
})
return
}
c.JSON(http.StatusOK, gin.H{
"status": true,
"token": token,

View File

@ -13,7 +13,7 @@ import (
)
const defaultMessage = "Sorry, I don't understand. Please try again."
const defaultQuotaMessage = "You don't have enough quota to use this model. please [buy](/buy) or [subscribe](/subscribe) to get more."
const defaultQuotaMessage = "You don't have enough quota to use this model. please [buy](/buy) or [subscribe](/subscribe) to get more. (or please check if you are logged in)"
func GetErrorQuota(model string) float32 {
return utils.Multi[float32](globals.IsGPT4Model(model), -0xe, 0) // special value for error

View File

@ -27,7 +27,7 @@ func (l *Limiter) RateLimit(ctx *gin.Context, rds *redis.Client, ip string, path
}
var limits = map[string]Limiter{
"/login": {Duration: 10, Count: 5},
"/login": {Duration: 10, Count: 20},
"/apikey": {Duration: 1, Count: 2},
"/package": {Duration: 1, Count: 2},
"/quota": {Duration: 1, Count: 2},