in internal/sync.go [69:155]
func (s *syncGSuite) SyncUsers(query string) error {
log.Debug("get deleted users")
deletedUsers, err := s.google.GetDeletedUsers()
if err != nil {
log.Warn("Error Getting Deleted Users")
return err
}
for _, u := range deletedUsers {
log.WithFields(log.Fields{
"email": u.PrimaryEmail,
}).Info("deleting google user")
uu, err := s.aws.FindUserByEmail(u.PrimaryEmail)
if err != aws.ErrUserNotFound && err != nil {
log.WithFields(log.Fields{
"email": u.PrimaryEmail,
}).Warn("Error deleting google user")
return err
}
if err == aws.ErrUserNotFound {
log.WithFields(log.Fields{
"email": u.PrimaryEmail,
}).Debug("User already deleted")
continue
}
if err := s.aws.DeleteUser(uu); err != nil {
log.WithFields(log.Fields{
"email": u.PrimaryEmail,
}).Warn("Error deleting user")
return err
}
}
log.Debug("get active google users")
googleUsers, err := s.google.GetUsers(query)
if err != nil {
return err
}
for _, u := range googleUsers {
if s.ignoreUser(u.PrimaryEmail) {
continue
}
ll := log.WithFields(log.Fields{
"email": u.PrimaryEmail,
})
ll.Debug("finding user")
uu, _ := s.aws.FindUserByEmail(u.PrimaryEmail)
if uu != nil {
s.users[uu.Username] = uu
// Update the user when suspended state is changed
if uu.Active == u.Suspended {
log.Debug("Mismatch active/suspended, updating user")
// create new user object and update the user
_, err := s.aws.UpdateUser(aws.UpdateUser(
uu.ID,
u.Name.GivenName,
u.Name.FamilyName,
u.PrimaryEmail,
!u.Suspended))
if err != nil {
return err
}
}
continue
}
ll.Info("creating user")
uu, err := s.aws.CreateUser(aws.NewUser(
u.Name.GivenName,
u.Name.FamilyName,
u.PrimaryEmail,
!u.Suspended))
if err != nil {
return err
}
s.users[uu.Username] = uu
}
return nil
}