PHPackages                             teamgantt/user-sync - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. teamgantt/user-sync

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

teamgantt/user-sync
===================

Sync user data with external stores

v2.0.0(1y ago)032.6k1MITPHPPHP &gt;=8.0CI failing

Since May 8Pushed 1y ago4 watchersCompare

[ Source](https://github.com/teamgantt/user-sync)[ Packagist](https://packagist.org/packages/teamgantt/user-sync)[ RSS](/packages/teamgantt-user-sync/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (3)Versions (8)Used By (0)

user-sync
=========

[](#user-sync)

Sync user data with external stores.

Currently includes support for the following remote stores:

- [AWS Cognito](https://aws.amazon.com/cognito/)

usage
-----

[](#usage)

Currently deals in syncing passwords and email addresses. This is for use cases that may require it, though the typical use case does not involve syncing passwords. The case for syncing a password may make sense during a period of migration or phasing out local storage of passwords.

Users can be deleted by constructing a `SyncRequestInterface` whose `getAction` method returns the string literal `'delete'`.

Supported actions are `'update'` and `'delete`'.

`SyncInterface` exposes a contract for PHP invokable classes, and looks like this:

```
public function __invoke(SyncableUserInterface $user, SyncRequestInterface $request);
```

There is a default implementation of `SyncRequestInterface` included as `SyncRequest`.

```
use TeamGantt\UserSync\SyncRequest;
use TeamGantt\UserSync\CognitoSync;

$args = []; // see CognitoSync for required arguments - note: requires aws/aws-sdk-php
$sync = new CognitoSync(...$args);

// note that all params to SyncRequest are optional. Syncing will or will not happen depending on what is given
$request = SyncRequest::fromArray(['password' => 'newcleartextpassword', 'email_address' => 'newemail@email.com', 'action' => 'update']);
$user = ExampleUserRepository::fetch($userId); // $user can be any object that implements the included SyncableUserInterface
$sync($user, $request); // tada!
```

testing
-------

[](#testing)

```
$ composer test

```

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance34

Infrequent updates — may be unmaintained

Popularity25

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 60% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~407 days

Total

5

Last Release

618d ago

Major Versions

v1.3.0 → v2.0.02024-10-22

PHP version history (3 changes)v1.0.0PHP ^7.0

v1.2.0PHP &gt;=7.0

v2.0.0PHP &gt;=8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/59413656492e3afbb7bb42fa9a5bc7ebce978a48da7ac2e5a8cf7e7f6ef6b5c2?d=identicon)[johncorrelli](/maintainers/johncorrelli)

---

Top Contributors

[![brianium](https://avatars.githubusercontent.com/u/636651?v=4)](https://github.com/brianium "brianium (9 commits)")[![nathanetech](https://avatars.githubusercontent.com/u/25019752?v=4)](https://github.com/nathanetech "nathanetech (2 commits)")[![gitwilliam](https://avatars.githubusercontent.com/u/1936859?v=4)](https://github.com/gitwilliam "gitwilliam (1 commits)")[![jcalebj](https://avatars.githubusercontent.com/u/5686190?v=4)](https://github.com/jcalebj "jcalebj (1 commits)")[![johncorrelli](https://avatars.githubusercontent.com/u/18272064?v=4)](https://github.com/johncorrelli "johncorrelli (1 commits)")[![vandyand](https://avatars.githubusercontent.com/u/34038526?v=4)](https://github.com/vandyand "vandyand (1 commits)")

---

Tags

awscognitophp

### Embed Badge

![Health badge](/badges/teamgantt-user-sync/health.svg)

```
[![Health](https://phpackages.com/badges/teamgantt-user-sync/health.svg)](https://phpackages.com/packages/teamgantt-user-sync)
```

###  Alternatives

[symfony/lock

Creates and manages locks, a mechanism to provide exclusive access to a shared resource

514139.2M686](/packages/symfony-lock)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[ecotone/ecotone

Enterprise architecture layer for Laravel and Symfony — CQRS, Event Sourcing, Durable Workflows (Sagas, Orchestrators), Projections, and Outbox messaging via PHP attributes.

564576.7k49](/packages/ecotone-ecotone)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k41](/packages/civicrm-civicrm-core)[illuminate/broadcasting

The Illuminate Broadcasting package.

7127.2M208](/packages/illuminate-broadcasting)[logiscape/mcp-sdk-php

Model Context Protocol SDK for PHP

368116.8k12](/packages/logiscape-mcp-sdk-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
