diff --git a/backend/internal/service/license.go b/backend/internal/service/license.go index 51fe199..c479d70 100644 --- a/backend/internal/service/license.go +++ b/backend/internal/service/license.go @@ -21,7 +21,6 @@ var ( ErrLicenseNotFound = errors.New("license not found") ErrLicenseInactive = errors.New("license is inactive") ErrLicenseExpired = errors.New("license has expired") - ErrDeviceMismatch = errors.New("license is bound to another device") ErrDeviceLimitExceed = errors.New("device limit reached — deactivate another device first") ) @@ -67,7 +66,9 @@ func (s *LicenseService) Activate(shopID uint64, licenseKey, deviceID, deviceNam err := s.db.Where("license_id = ? AND device_id = ?", lic.ID, deviceID).First(&existing).Error if err == nil { // Device already bound — just touch last_seen_at (handled by autoUpdateTime) - s.db.Model(&existing).Update("device_name", deviceName) + if err := s.db.Model(&existing).Update("device_name", deviceName).Error; err != nil { + return nil, err + } return &lic, nil } @@ -99,7 +100,7 @@ func (s *LicenseService) Verify(shopID uint64, deviceID string) (*model.License, return nil, ErrLicenseNotFound } var lic model.License - if err := s.db.Where("id = ? AND is_active = 1", dev.LicenseID).First(&lic).Error; err != nil { + if err := s.db.Where("id = ? AND shop_id = ? AND is_active = 1", dev.LicenseID, shopID).First(&lic).Error; err != nil { return nil, ErrLicenseNotFound } if lic.ExpiresAt != nil && time.Now().After(*lic.ExpiresAt) {