Skip to content

FAS-PFM-SEC-06Portal Membership and Identity acceptance

Markdown

FAS-PFM-SEC-06

Portal Membership and Identity acceptance

Markdown
  • DocumentProposed
  • Product intentProposed

Product areaPlatformModuleSecurity, Customers and WorkspacesRevision1

Read atservices-platform ad3f6a65react-console baf6dae3

Scenarios

5 scenarios proving FEAT-PFM-SEC-06 as a whole.

01 Confirmed signup creates one workspace member before contact linking behaviour proposed
Exercises
CAP-PFM-SEC-019 CAP-PFM-SEC-020
Relies on
ATS-PFM-SEC-019-04 ATS-PFM-SEC-020-01
Preconditions
An active portal pool serves a workspace and a new person confirms a mailbox.
Steps
[object Object]
Expected
One active portal membership is created and the matching outcome uses that member’s workspace boundary.
Data
A disposable customer and workspace with run-owned memberships, assignments and definitions; clock-controlled expiry fixtures where needed.
Source
services-platform:modules/security/tests/integration/services/provisioning/post-confirmation.integration.spec.js#grants the Portal Member role, active, at the tenant’s scope,services-platform:modules/security/tests/integration/services/portal/contact-match.integration.spec.js#links the one contact holding the member’s own address without asking
02 A verified contact supplies the member claim used by fresh access interactionnegative proposed
Exercises
CAP-PFM-SEC-019 CAP-PFM-SEC-020
Relies on
ATS-PFM-SEC-019-08 ATS-PFM-SEC-020-06 ATS-PFM-SEC-020-08
Preconditions
An active portal member has a selected candidate and possession proof.
Steps
[object Object]
Expected
The context carries the current linked contact; another workspace and console membership cannot inherit that link.
Data
A disposable customer and workspace with run-owned memberships, assignments and definitions; clock-controlled expiry fixtures where needed.
Source
services-platform:modules/security/tests/e2e/invitations.e2e.spec.js#invites a member of the tenant's portal and lists the tenant's members, the console users left out,services-platform:modules/security/tests/integration/services/portal/contact-match.integration.spec.js#refuses a wrong code, saying how many attempts are left,services-platform:modules/security/tests/integration/services/authorizer-portal-contact.integration.spec.js#carries the linked contact as `cid`, read from the user’s row under the deployed role
03 Expired and replaced challenges never establish a link lifecycle proposed
Exercises
CAP-PFM-SEC-019 CAP-PFM-SEC-020
Relies on
ATS-PFM-SEC-019-04 ATS-PFM-SEC-020-05 ATS-PFM-SEC-020-06
Preconditions
A confirmed member has no linked contact and can receive challenge codes.
Steps
[object Object]
Expected
Neither superseded nor expired challenge establishes a contact link.
Data
A disposable customer and workspace with run-owned memberships, assignments and definitions; clock-controlled expiry fixtures where needed.
Source
services-platform:modules/security/tests/integration/services/provisioning/post-confirmation.integration.spec.js#grants the Portal Member role, active, at the tenant’s scope,services-platform:modules/security/tests/integration/services/persistence/portal-contact-challenges.integration.spec.js#records the member, the contact, the channel and a ten-minute expiry, with the digest of the code and never the code,services-platform:modules/security/tests/integration/services/portal/contact-match.integration.spec.js#refuses a wrong code, saying how many attempts are left
04 Members see only their own workspace identity and offers permissionnegative proposed
Exercises
CAP-PFM-SEC-019 CAP-PFM-SEC-020
Relies on
ATS-PFM-SEC-019-08 ATS-PFM-SEC-020-04
Preconditions
Two portal members in separate workspaces have candidate offers.
Steps
[object Object]
Expected
The foreign membership and candidate proof are refused without leaking contact identity.
Data
A disposable customer and workspace with run-owned memberships, assignments and definitions; clock-controlled expiry fixtures where needed.
Source
services-platform:modules/security/tests/e2e/invitations.e2e.spec.js#invites a member of the tenant's portal and lists the tenant's members, the console users left out,services-platform:modules/security/tests/unit/services/portal/candidate-token.spec.ts#refuses a token with one character changed
05 Confirmation and verification replays preserve identity regression proposed
Exercises
CAP-PFM-SEC-019 CAP-PFM-SEC-020
Relies on
ATS-PFM-SEC-019-04 ATS-PFM-SEC-020-06 ATS-PFM-SEC-020-07
Preconditions
A mailbox is confirmed and a contact verification succeeds.
Steps
[object Object]
Expected
No second membership or contact link is created and the established link remains unchanged.
Data
A disposable customer and workspace with run-owned memberships, assignments and definitions; clock-controlled expiry fixtures where needed.
Source
services-platform:modules/security/tests/integration/services/provisioning/post-confirmation.integration.spec.js#grants the Portal Member role, active, at the tenant’s scope,services-platform:modules/security/tests/integration/services/portal/contact-match.integration.spec.js#refuses a wrong code, saying how many attempts are left,services-platform:modules/security/tests/integration/services/portal/contact-match.integration.spec.js#is linked to a contact CRM created from the sign-up details

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.