42 lines
992 B
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()
|
|
}
|