MemberPulse
EntitiesCore

User / Member

Member account entity with profile and authentication fields

Member account entity with profile and authentication fields

The core entity representing member accounts in the system.

Fields

Member Profile Field Registry (from workspace/sources/entity-registry.csv)

FieldInput TypeRequiredNotes
First NameTextRequiredmodel: firstName, rel: string
Last NameTextRequiredmodel: lastName, rel: string
Bio DescriptionWYSIWYG (Textarea)Not Requiredmodel: bio, rel: text
Date of BirthDateRequiredmodel: dateOfBirth, rel: date
Membership IDNumberRequiredAutomatically Generated; model: membership, rel: OneToMany UserMembership
CRM IDNumberRequiredGenerated and locked to the CRM if it's connected
Accounting IDNumberRequiredGenerated and locked to the accounting software if it's connected
EmailEmailRequiredmodel: user.email
Contact NumberNumberRequiredmodel: contactNumber
MobileNumberRequiredmodel: mobile
CompanyTextRequiredmodel: company
Company Contact NumberTextRequired-
Company AddressTextRequired-
PositionTextRequiredmodel: position
GenderSelectRequiredOptions are: Male, Female, Other, Not Specified; model: gender
AddressTextRequiredmodel: address
CityTextRequiredmodel: city
LinkedIn URLURLNot Requiredmodel: linkedinUrl
Website URLURLNot Requiredmodel: websiteUrl
PostcodeNumberRequiredmodel: postcode
StateSelectRequiredmodel: state
CountrySelectRequiredmodel: country
Interested InMulti-selectRequiredAllows the member to select all the types of categories they're interested in
Events Interested InMulti-selectRequiredAllows the member to select types of events they're interested in (eg. on-demand, online, conferences)
Make Profile PublicTrue / FalseRequiredRequired so that their name is searchable in the business directory
Display Personal or Company DetailsSelectRequiredIf "true" is selected above, it'll prompt the user to choose the company or user details to show
User Register DateDateRequiredDate they registered the account; model: memberProfile.registrationDate
BranchSelectRequiredSelects the main region / branch they're part of; model: client, rel: ManyToOne ClientProfile
Enquiry IDNumberRequiredFor all enquiries submitted through the business directory
Enquiry DateDateRequiredDate of the enquiry submission
Enquiry NameNumberRequired-
Enquiry EmailEmailRequired-
Enquiry Contact NumberTextRequired-
Enquiry MessageTextRequired-
Membership PlanSelectorRequiredPull through a list of membership plan entities
Membership Registration DateDateRequired-
Membership Expiry DateDateRequiredMust be a setting that creates a "grace period" in the system which is automatically applied to a membership expiry date
Membership StatusSelectorRequiredAutomatically set based on membership plan but can be manually changed by the administrator
List of coursesDatatable-These need the ability to edit the entry and add an extra element here
List of eventsDatatable-These need the ability to edit the entry and add an extra element here
CPD PointsDatatable-These need the ability to edit the entry and add an extra element here
TransactionsDatatable-These need the ability to edit the entry and add an extra element here
Support TicketsDatatable-These need the ability to edit the entry and add an extra element here
MembersDatatable-This only displays if they are group admin
Group IDNumberRequiredConnected to the group members entity
Is Group AdminTrue / FalseRequired-
Company AddressTextRequiredUse Google Maps to pull through addresses and save long/lat details
Company Contact NumberNumberRequired-
Display Company in directoryTrue / FalseRequiredOnly available if they are the group admin

User Account Field Registry (from workspace/sources/entity-registry.csv)

FieldInput TypeRequiredNotes
User IDNumberRequired-
User EmailEmailRequiredTies to member email if not admin
User TypeSelectorRequiredUser Types are: Association Admin, Association Member, Association Sponsor, Association Job Poster - can be one to many, as a member can be a sponsor and job poster as well

Relationships

RelationTypeTarget Entity
membershipPlanManyToOneMembershipPlan
groupMembershipManyToOneGroupMembership
ticketsOneToManyEventTicket
enrollmentsOneToManyCourseEnrollment
cpdRecordsOneToManyCpdRecord
transactionsOneToManyPaymentTransaction
supportTicketsOneToManySupportTicket

Access Control Notes

  • ROLE_CLIENT_USER refers to organization staff in the Client Portal (limited permissions) — not association members.
  • Association members update their own details via the Member Portal.
  • Some workflows require ROLE_CLIENT_USER to update non-sensitive member profile fields (while ROLE_CLIENT_ADMIN retains full management permissions).

API Resource

#[ApiResource(
    operations: [
        new GetCollection(security: "is_granted('ROLE_CLIENT_USER')"),
        new Post(security: "is_granted('ROLE_CLIENT_ADMIN')"),
        new Get(security: "is_granted('ROLE_CLIENT_USER')"),
        new Put(security: "is_granted('ROLE_CLIENT_ADMIN') or is_granted('ROLE_CLIENT_USER')"),
        new Delete(security: "is_granted('ROLE_CLIENT_ADMIN')"),
    ],
    paginationItemsPerPage: 30
)]

Validation Rules

  • Email must be valid format and unique
  • Password minimum 8 characters (when not SSO)
  • Status must be valid enum value
  • First name and last name required

Features

User / Member

Acceptance Criteria

Frontend
  • Admin/client UI can view and manage User / Member records where applicable.
Backend / API
  • CRUD operations exist for User / Member (create, read, update, delete/archive).
Permissions
  • Access is restricted to appropriate roles (tenant-scoped).
Business Rules
  • Fields and relationships documented on this page are enforced for User / Member.
Error Handling
  • Invalid payloads return field-level validation errors.

On this page