diff --git a/api/main.go b/api/main.go index 356e9cc6..654dbba5 100644 --- a/api/main.go +++ b/api/main.go @@ -141,6 +141,9 @@ func main() { // create a new Gorilla Mux router instance // Create a new router router := mux.NewRouter() + + apiRouter := router.PathPrefix("/api").Subrouter() + sqlc_q := sqlc_queries.New(pgdb) secretService := NewJWTSecretService(sqlc_q) jwtSecretAndAud, err = secretService.GetOrCreateJwtSecret(context.Background(), "chat") @@ -148,46 +151,41 @@ func main() { log.Fatal(err) } ChatModelHandler := NewChatModelHandler(sqlc_q) - ChatModelHandler.Register(router) + ChatModelHandler.Register(apiRouter) // create a new AuthUserHandler instance userHandler := NewAuthUserHandler(sqlc_q) // register the AuthUserHandler with the router - userHandler.Register(router) + userHandler.Register(apiRouter) promptHandler := NewChatPromptHandler(sqlc_q) - promptHandler.Register(router) + promptHandler.Register(apiRouter) chatSessionHandler := NewChatSessionHandler(sqlc_q) - chatSessionHandler.Register(router) + chatSessionHandler.Register(apiRouter) chatMessageHandler := NewChatMessageHandler(sqlc_q) - chatMessageHandler.Register(router) + chatMessageHandler.Register(apiRouter) chatSnapshotHandler := NewChatSnapshotHandler(sqlc_q) - chatSnapshotHandler.Register(router) + chatSnapshotHandler.Register(apiRouter) activeSessionHandler := NewUserActiveChatSessionHandler(sqlc_q) - activeSessionHandler.Register(router) + activeSessionHandler.Register(apiRouter) // create a new ChatHandler instance chatHandler := NewChatHandler(sqlc_q) - chatHandler.Register(router) + chatHandler.Register(apiRouter) user_model_privilege_handler := NewUserChatModelPrivilegeHandler(sqlc_q) - user_model_privilege_handler.Register(router) + user_model_privilege_handler.Register(apiRouter) chatFileHandler := NewChatFileHandler(sqlc_q) - chatFileHandler.Register(router) + chatFileHandler.Register(apiRouter) - router.HandleFunc("/tts", handleTTSRequest) + apiRouter.HandleFunc("/tts", handleTTSRequest) - router.Walk(func(route *mux.Route, router *mux.Router, ancestors []*mux.Route) error { - tpl, err1 := route.GetPathTemplate() - met, err2 := route.GetMethods() - fmt.Println(tpl, err1, met, err2) - return nil - }) + // Embed static/* directory fs := http.FileServer(http.FS(static.StaticFiles)) @@ -224,6 +222,12 @@ func main() { // loggedMux := loggingMiddleware(router, logger) loggedRouter := handlers.LoggingHandler(logger.Out, router) + router.Walk(func(route *mux.Route, router *mux.Router, ancestors []*mux.Route) error { + tpl, err1 := route.GetPathTemplate() + met, err2 := route.GetMethods() + fmt.Println(tpl, err1, met, err2) + return nil + }) // fly.io if os.Getenv("FLY_APP_NAME") != "" { diff --git a/api/middleware_authenticate.go b/api/middleware_authenticate.go index 24179811..ae9b6586 100644 --- a/api/middleware_authenticate.go +++ b/api/middleware_authenticate.go @@ -94,9 +94,9 @@ func AdminOnlyHandlerFunc(handlerFunc http.HandlerFunc) http.HandlerFunc { func IsAuthorizedMiddleware(handler http.Handler) http.Handler { noAuthPaths := map[string]bool{ "/": true, - "/login": true, - "/signup": true, - "/tts": true, + "/api/login": true, + "/api/signup": true, + "/api/tts": true, } jwtSigningKey := []byte(jwtSecretAndAud.Secret) return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { diff --git a/web/.env b/web/.env index bfbe833c..7bef580b 100644 --- a/web/.env +++ b/web/.env @@ -1,2 +1,2 @@ -VITE_GLOB_API_URL=/ +VITE_GLOB_API_URL=/api diff --git a/web/src/views/chat/components/Uploader.vue b/web/src/views/chat/components/Uploader.vue index eefb5f63..e4bf930d 100644 --- a/web/src/views/chat/components/Uploader.vue +++ b/web/src/views/chat/components/Uploader.vue @@ -21,7 +21,7 @@ import { getChatFilesList } from '@/api/chat_file' const baseURL = import.meta.env.VITE_GLOB_API_URL -const actionURL = baseURL != "/" ? baseURL + '/upload' : '/upload' +const actionURL = baseURL + '/upload' const queryClient = useQueryClient() @@ -109,7 +109,7 @@ function handleRemove({ file }: { file: UploadFileInfo }) { } function fileUrl(file: UploadFileInfo): string { - const file_id = file.url?.split('/').pop(); + const file_id = file.url?.split('/').pop(); const url = `/download/${file_id}` return url } diff --git a/web/src/views/chat/components/UploaderReadOnly.vue b/web/src/views/chat/components/UploaderReadOnly.vue index 85c8a431..82fb80c1 100644 --- a/web/src/views/chat/components/UploaderReadOnly.vue +++ b/web/src/views/chat/components/UploaderReadOnly.vue @@ -1,11 +1,10 @@ @@ -22,8 +21,7 @@ const queryClient = useQueryClient() const baseURL = import.meta.env.VITE_GLOB_API_URL -const actionURL = baseURL != "/" ? baseURL + '/upload' : '/upload' - +const actionURL = baseURL + '/upload' interface Props { sessionUuid: string @@ -50,8 +48,6 @@ const fileDeleteMutation = useMutation({ }) - - // const emit = defineEmits(['update:showUploadModal']); // login modal will appear when there is no token @@ -99,7 +95,7 @@ function handleFinish({ file, event }: { file: UploadFileInfo, event?: ProgressE } function fileUrl(file: UploadFileInfo): string { - const file_id = file.url?.split('/').pop(); + const file_id = file.url?.split('/').pop(); const url = `/download/${file_id}` return url } diff --git a/web/vite.config.ts b/web/vite.config.ts index bafa11bf..6e60a03e 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -35,7 +35,6 @@ export default defineConfig((env) => { '/api': { target: 'http://localhost:8080/', changeOrigin: true, // 允许跨域 - rewrite: path => path.replace('/api/', '/'), }, }, },