Skip to content

[People] Roadmap: People, Soci and census across auth, backend and admin #146

Open
2 of 4 issues completed
Open

Description

@toto04

This is the root of the People work across auth, backend and admin. Until now People was built without a clear direction. This issue sets the direction, records what happens to the existing code and PRs, and links every piece of work. Reviews of People PRs are paused until the sub-issues below say otherwise.

Phases

Phase Issue Status
Cleanup #142: remove Soci, fees, receipts, census and record matching from People Done
1 #143: Group Admins, Capo Admins and Team members, linked to Auth accounts and given RBAC roles Done (without the bulk import, see decision 9)
2 #144: Soci and association fees, rebuilt on Entra ID Design agreed (decisions 10–15), not started
3 #145: admin census in the dashboard Design needed

Progress shows in the sub-issue tree below. Each issue's order is set with GitHub "blocked by" links.

Decisions (29 October 2026)

  1. Three separate concerns, little overlap. Phase 1 is People ↔ Auth accounts ↔ RBAC roles. Soci and fees (Phase 2) and the census (Phase 3) are separate, and are built after it.
  2. People without a linked account live only in the backend, never as placeholder users in Auth. We often don't know which account someone will sign in with (Entra ID if they're a socio, otherwise any Google account), and the email and name we have may not match it.
  3. Linking: an email invite the person accepts by signing in with any account, or a manual link by someone with the new people:link permission. No automatic matching.
  4. Only predetermined roles: roles bound in Auth to admin, capo, team:<key>:member or team:<key>:lead, never with idp:* permissions. Clearance comes from RBAC, and Auth checks it on every change.
  5. Capo Admin is part of Phase 1 (the capo-admin role already exists). Capo Admins may later manage the admins under them. That's not built now, but it's designed for.
  6. Soci in People is removed outright, to be rebuilt from scratch on Entra ID users in Phase 2.
  7. Nothing is migrated. Every People table holds only test data.
  8. Administrative capabilities are RBAC permissions, not hard-coded Master Admin checks (e.g. binding a role to People).

Decisions (8 November 2026)

  1. No bulk import. [People · Phase 1] Bulk import people from CSV backend#103 and [People · Phase 1] Bulk import wizard #141 are not planned. The 2026 admin census spreadsheets are imported once, outside the roadmap: an agent prepares a seed file that a person reviews, and a one-off script (scripts/people-seed/ in the admin repo) writes it through people.* as the signed-in person. From Phase 3 the census happens in the dashboard. Phase 1 is complete, and Phases 2 and 3 can start.

Decisions (9 November 2026)

Phase 2's design: docs/people/soci.md (#154).

  1. The dashboard is the Libro Soci. Microsoft 365 still says who is a socio now (the Soci group). A backend register keyed on the account and the member number holds what Microsoft 365 doesn't:

    • legal name and optional alias;
    • codice fiscale, place and date of birth, residence;
    • admission and end dates;
    • fees and history.

    It starts empty, keeps history forever and never reuses a member number. Admitting a socio moves from Microsoft 365 › Members to People › Soci, with the same account workflow.

  2. Fees: the Regolamento's rules are hard-coded (€5, fee year 1 Sep – 31 Aug, renewals until 31 Dec, the summer exemption). The socio uploads the transfer receipt, and the Direttivo confirms it or marks the fee as paid by hand. The association issues no receipts in this phase.

  3. Lapse is automatic: an unpaid fee after 31 December removes the account from Soci, so Auth drops the Socio role. The account waits in Deletion pending until someone deletes it by hand.

  4. Soci get people:self: My area is the one place for one's own association life. The Direttivo holds soci:read, soci:write and soci:delete.

  5. Soci stay under People, in their own panel group next to Volunteers.

  6. Automatic emails go to the PoliNetwork mailbox: fee-year opening, reminders, lapse, birthdays.

What's in production

What happens to the open PRs

PR What happens Tracked in
PoliNetworkOrg/auth#73 Keep, rework. Reset to d698d3c, then remove Soci from the read endpoint, add capo, add a binding permission, restructure the delegation rules. Needs a new review. PoliNetworkOrg/auth#78
PoliNetworkOrg/auth#75 (merged into #73's branch) Drop. Placeholder users and Master Admin link approval; it also broke invite and manual linking. PoliNetworkOrg/auth#78
PoliNetworkOrg/backend#99 Don't merge. Superseded; reuse src/people/roles.ts and its tests. PoliNetworkOrg/backend#101, PoliNetworkOrg/backend#102
#132 Don't merge. Superseded; reuse its missing-profile-value handling and the team rename. #139
#136 Don't merge. Superseded; reuse its Telegram group removal. #138, #139, #140

Older issues covering parts of this: #23, #24, #25.

How to follow along

  • Every issue has the people label, and its title starts with [People], [People · Cleanup] or [People · Phase N].
  • Each repo issue is a sub-issue of its phase, and each phase is a sub-issue of this one.
  • PRs should say Closes <issue> so progress rolls up here.

Activity

  1. added theissue type on Oct 29, 2026
  2. added
    peoplePeople: Group Admins, Capo Admins, Teams, Soci and census (see the People roadmap)
    on Oct 29, 2026
  3. coderabbitai commented on Oct 29, 2026

    @coderabbitai
    Contributor
    🔗 Related PRs

    #147 - refactor(people): disconnect Soci, fees, receipts and census, keeping them as mockups [merged]
    #148 - feat(people)!: rebuild the People pages on records and assignments synced to Auth [closed]
    #153 - chore(people): add a one-off script to seed People from the admin census [open]
    #132 - feat(people): show records filled from PoliNetwork Auth and Microsoft 365 [open]
    #133 - fix(azure): make Microsoft 365 groups read-only [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    peoplePeople: Group Admins, Capo Admins, Teams, Soci and census (see the People roadmap)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions