Files
nowdatabase/documentation/entities/people.md
T

1.8 KiB

People

People represent contributors, coordinators, contacts, and optionally application users. A person can exist without a login account.

Database model

The main person record is com_people:

  • initials (primary key)
  • first_name
  • surname
  • full_name
  • format
  • email
  • user_id
  • organization
  • country
  • password_set
  • used_morph
  • used_now
  • used_gene

If user_id is set, it links the person to a com_users row:

  • user_id (primary key)
  • user_name
  • password
  • newpassword
  • last_login
  • now_user_group
  • mor_user_group
  • gen_user_group

Person initials are also used in coordinator, authorizer, contact, and membership relations, including project people, region coordinators, species coordinators, stratigraphy coordinators, and update-log coordinator/authorizer fields.

API endpoints

  • GET /person/all: list all people; admin-only
  • GET /person/:id: read person details; admin users can read any person and non-admin users can read only their own person record
  • PUT /person: update a person; admin users can update any person and non-admin users can update only their own person record

Creating new people is not implemented through PUT /person; the route returns an error when initials is missing.

Frontend usage

  • /person shows the people table for admins.
  • /person/:id? shows person details when the signed-in user is authorized.
  • Person lookup data is reused by coordinator/contact selectors, such as project and region editing.

Permission notes

The person routes intentionally do not use only the shared role middleware because self-service profile access is allowed. Route-level checks compare req.user.initials with the requested or edited person initials.

Admin-only user-group edits are handled during person update when the payload includes a valid user_id and now_user_group.