mirror of
https://github.com/coaidev/coai.git
synced 2025-05-20 21:40:15 +09:00
fix service worker
This commit is contained in:
parent
a22f14a123
commit
47da8009aa
@ -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
|
||||
|
@ -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": "Ошибка сервера",
|
||||
|
@ -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")}
|
||||
|
@ -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: {
|
||||
|
@ -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
|
||||
|
24
auth/user.go
24
auth/user.go
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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},
|
||||
|
Loading…
Reference in New Issue
Block a user