What this page does
- Firebase Authentication is not changed — passwords, Google sign-in, and who can log in stay the same.
- Merging combines Firestore player records (and linked game stats, lineups, survey responses, votes) into one player document. If the row you keep is missing squad, age, or role, values are copied from the merged row when possible.
- If two duplicates both have a player app login (
linkedUserId), merge will block until you resolve one link manually in Club Players. - Staff ↔ app user links an imported staff
playersrow to a login (same as Role Editor). Choose either order below. Team staff lists hide the duplicate roster row when linked.
Link imported staff row ↔ app user
Same as club-staff-editor merge: parentIds on the staff player doc, linkedUserId cleared, team job access synced on the user. After linking, the roster appears under that user in User profile (linked players) and club-staff-editor when the volunteer row’s teamId matches the team you open.
This staff row already has parentIds. Linking again merges the selected user UID into parentIds (existing UIDs kept; same as Role Editor merge).
This staff row has no squad yet
Choose the squad so we can set teamId on the roster row and grant team access on the user.
{{ staffLinkError }}
Duplicate player names
Grouped by normalised full name (trim, spaces, case)
No duplicate name groups match the filter.
| Keep | Name | Reg # | Squad | Parents | Player login | Doc ID |
|---|---|---|---|---|---|---|
| {{ listPlayerName(p) || '—' }} | {{ (p.regNum || '').toString().trim() || '—' }} | {{ getTeamName(p.teamId) }} | {{ getParentSummary(p) }} | {{ shortUid(p.linkedUserId) }} — | {{ p.id }} |
Select the row to keep. All other rows in this group will be merged into it and removed.
All users ({{ allUsers.length }})
| Name | Role | UID | Actions | |
|---|---|---|---|---|
| {{ userDisplayName(u) }} | {{ u.email || '—' }} | {{ u.role || '—' }} | {{ u.id }} | |
| No users match. | ||||
Players missing NRL / reg number ({{ playersMissingReg.length }})
Useful for spotting pre-import signups; cross-check duplicates above.
| Name | Squad | Reg status | Doc ID | Actions |
|---|---|---|---|---|
| {{ listPlayerName(p) || '—' }} | {{ getTeamName(p.teamId) }} | {{ p.regStatus || '—' }} | {{ p.id }} | |
| None found. | ||||
