verstak-sync-server/internal/server/devices.go

42 lines
992 B
Go

package server
import (
"fmt"
)
func validatePairRequest(login, deviceName, clientVersion, vaultID string) error {
for _, field := range []struct {
name string
value string
max int
}{
{"login", login, maxLoginLength},
{"device name", deviceName, maxDeviceNameLength},
{"client version", clientVersion, maxClientVersionLength},
{"vault id", vaultID, maxVaultIDLength},
} {
if err := validateStringLength(field.name, field.value, field.max); err != nil {
return err
}
}
if vaultID == "" {
return fmt.Errorf("vault_id required")
}
return nil
}
func (s *Server) revokeDevice(deviceID, when string) error {
tx, err := s.db.Begin()
if err != nil {
return err
}
defer tx.Rollback()
if _, err := tx.Exec("UPDATE server_devices SET revoked_at=? WHERE id=?", when, deviceID); err != nil {
return err
}
if _, err := tx.Exec("DELETE FROM server_sessions WHERE subject_id=? AND scope='device'", deviceID); err != nil {
return err
}
return tx.Commit()
}