modified: internal/handlers/user.go

modified:   internal/models/user.go
	modified:   internal/repository/user_repository.go
	modified:   internal/service/auth_service.go
	new file:   internal/service/user_service.go

	modified:   ../../begushiybashkir/bbvue/src/views/ProfileEdit.vue
fix bag not editable profile
This commit is contained in:
2025-10-12 10:16:52 +05:00
parent 8447dbe882
commit 38bee8e077
5 changed files with 122 additions and 76 deletions
@@ -1,8 +1,10 @@
package repository
import (
"api_bb/internal/models"
"gorm.io/gorm"
"api_bb/internal/models"
"fmt"
"gorm.io/gorm"
)
type UserRepository interface {
@@ -11,6 +13,7 @@ type UserRepository interface {
FindByEmail(email string) (*models.User, error)
Update(user *models.User) error
Delete(id uint) error
UpdateExcludeEmail(userUpdate *models.User) error
}
type userRepository struct {
@@ -43,4 +46,28 @@ func (r *userRepository) Update(user *models.User) error {
func (r *userRepository) Delete(id uint) error {
return r.db.Delete(&models.User{}, id).Error
}
// repository/user_repository.go
func (r *userRepository) UpdateExcludeEmail(userUpdate *models.User) error {
// Обновляем только разрешенные поля
result := r.db.Model(userUpdate).Where("id = ?", userUpdate.ID).Updates(map[string]interface{}{
"first_name": userUpdate.FirstName,
"last_name": userUpdate.LastName,
"phone": userUpdate.Phone,
"experience": userUpdate.Experience,
"goals": userUpdate.Goals,
"newsletter": userUpdate.Newsletter,
"updated_at": userUpdate.UpdatedAt,
})
if result.Error != nil {
return result.Error
}
if result.RowsAffected == 0 {
return fmt.Errorf("user not found")
}
return nil
}