diff --git a/begushiybashkir/bbvue/src/components/AvatarUpload.vue b/begushiybashkir/bbvue/src/components/AvatarUpload.vue index 8579a08..36a8195 100644 --- a/begushiybashkir/bbvue/src/components/AvatarUpload.vue +++ b/begushiybashkir/bbvue/src/components/AvatarUpload.vue @@ -1,232 +1,246 @@ \ No newline at end of file diff --git a/begushiybashkir/bbvue/src/stores/auth.js b/begushiybashkir/bbvue/src/stores/auth.js index dd4d74a..f274af7 100644 --- a/begushiybashkir/bbvue/src/stores/auth.js +++ b/begushiybashkir/bbvue/src/stores/auth.js @@ -109,45 +109,45 @@ export const useAuthStore = defineStore('auth', () => { } const updateAvatar = async (avatarFile) => { - const formData = new FormData() - formData.append('avatar', avatarFile) + const formData = new FormData() + formData.append('avatar', avatarFile) - try { - const response = await apiClient.post('/user/avatar/upload', formData, { - headers: { - 'Content-Type': 'multipart/form-data' - } - }) + try { + const response = await apiClient.post('/user/avatar/upload', formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }) - if (response.data.success) { - // Обновляем аватар в сторе - if (user.value) { - user.value.avatar = response.data.avatar + if (response.data.success) { + // Обновляем аватар в сторе + if (user.value) { + user.value.avatar = response.data.avatar + } + return { success: true, avatar: response.data.avatar } } - return { success: true, avatar: response.data.avatar } + } catch (error) { + const result = handleApiError(error) + return result } - } catch (error) { - const result = handleApiError(error) - return result } -} -const deleteAvatar = async () => { - try { - const response = await apiClient.delete('/user/avatar/deleteg') - - if (response.data.success) { - // Удаляем аватар из стора - if (user.value) { - user.value.avatar = null + const deleteAvatar = async () => { + try { + const response = await apiClient.delete('/user/avatar/deleteg') + + if (response.data.success) { + // Удаляем аватар из стора + if (user.value) { + user.value.avatar = null + } + return { success: true } } - return { success: true } + } catch (error) { + const result = handleApiError(error) + return result } - } catch (error) { - const result = handleApiError(error) - return result } -} return { // State diff --git a/serv_nginx/api_bb/.env b/serv_nginx/api_bb/.env index 2829a80..5fdb436 100644 --- a/serv_nginx/api_bb/.env +++ b/serv_nginx/api_bb/.env @@ -12,4 +12,5 @@ LOG_LEVEL=debug ENVIRONMENT=development # app -REST_API_VERSION=1.0.0 \ No newline at end of file +REST_API_VERSION=1.0.0 +VITE_API_BASE_URL=https://begushiybashkir.ru \ No newline at end of file diff --git a/serv_nginx/api_bb/internal/config/config.go b/serv_nginx/api_bb/internal/config/config.go index c6f4f05..a5da802 100644 --- a/serv_nginx/api_bb/internal/config/config.go +++ b/serv_nginx/api_bb/internal/config/config.go @@ -12,16 +12,17 @@ type Config struct { Port string DatabaseURL string JWTSecret string + StaticURL string `env:"STATIC_URL" envDefault:"http://localhost:8080"` } func Load() *Config { _ = godotenv.Load(".env") port := getEnv("PORT", "8080") jwtSecret := getEnv("JWT_SECRET", "your-secret-key") - + // Формируем DSN для PostgreSQL из переменных окружения databaseURL := getPostgresDSN() - + return &Config{ Port: port, DatabaseURL: databaseURL, @@ -47,4 +48,4 @@ func getEnv(key, defaultValue string) string { return defaultValue } return value -} \ No newline at end of file +} diff --git a/serv_nginx/api_bb/internal/models/user.go b/serv_nginx/api_bb/internal/models/user.go index 717e19e..efcd3ff 100644 --- a/serv_nginx/api_bb/internal/models/user.go +++ b/serv_nginx/api_bb/internal/models/user.go @@ -30,7 +30,7 @@ type UserUpdate struct { ID uint `json:"id"` FirstName string `json:"first_name"` LastName string `json:"last_name"` - Avatar string `json:"avatar"` // Добавить поле аватара + Avatar string `json:"avatar"` Phone string `json:"phone"` Experience string `json:"experience"` Goals string `json:"goals"` diff --git a/serv_nginx/api_bb/internal/routes/routes.go b/serv_nginx/api_bb/internal/routes/routes.go index 416f8e2..6dbbf22 100644 --- a/serv_nginx/api_bb/internal/routes/routes.go +++ b/serv_nginx/api_bb/internal/routes/routes.go @@ -23,6 +23,10 @@ func SetupRouter(db *gorm.DB, config *config.Config) http.Handler { r.Use(m) } + // Serve static files (avatars) - ДОБАВЬТЕ ЭТО + r.Handle("/uploads/*", http.StripPrefix("/uploads/", + http.FileServer(http.Dir("/app/uploads")))) + // Initialize repositories userRepo := repository.NewUserRepository(db) newsRepo := repository.NewNewsRepository(db) diff --git a/serv_nginx/nginx/nginx-ssl.conf b/serv_nginx/nginx/nginx-ssl.conf index cbea5c8..331b482 100644 --- a/serv_nginx/nginx/nginx-ssl.conf +++ b/serv_nginx/nginx/nginx-ssl.conf @@ -134,4 +134,11 @@ server { proxy_read_timeout 600; } + + location /uploads/ { + alias /app/uploads/; + expires 1y; + add_header Cache-Control "public, immutable"; + } + }