The Security Register that comes with Verne is a register of users that can log into Verne and interact with it. The Security Register also holds information about Permission Groups, Permissions, Teams & Organisations – but these will be discussed another time. Whilst it is not important to fully understand the Security Register and how it works, it is good to have an understanding of the user model as it is used to populate the presenter details along with entity roles and so on.

Internal users are people who act on behalf of the Registrar as regulators of the registry system. Internal user profile can be created by an internal user with an appropriate permission and will need to be activated by its intended owner.

External users are people who act on behalf of themselves as customers of the registry system. Those are people who are "regulated". External user profile can be created by any member of the public.

All users (internal and external users) are stored using the same mechanism as all other data, via service transactions, with a current activated version and previous versions of the data.

The Domain Tree for a User is as follows:

{
  "_id": "<unique_domain_id>",
  "name": "User",
  "attributes":{
    "Username":"john.doe@gmail.com",
    "FirstName":"John",
    "MiddleNames":"",
    "FullName":"Doe",
    "LastName":"John Doe",
    "Password":"$2a$10$mQ3Jobg9rFJ8Jx9rs8t8Rs/IXEl4QcMEumioe0IC5HeFBySfE.tuW",
    "Status":"active",
    "TwoFactorAuthYn":"N",
    "Avatar":"<identifier_of_avatar_service_transaction>",
    "Position":"<position_if_user_is_an_internal_user_eg_clerk>",
    "DateOfBirth":"<date_of_birth_of_user"
  },
  "groups":[
    {
      "_id":"<unique_domain_id>",
      "name":"Group",
      "arrName":"groups",
      "attributes":{
        "Identifier":"<identifier_of_permission_group_service_transaction>"
      }
    },
    {
      "_id":"<unique_domain_id>",
      "name":"Group",
      "arrName":"groups",
      "attributes":{
        "Identifier":"<identifier_of_permission_group_service_transaction>"
      }
    }
  ],
  "teams":[
    {
      "_id":"<unique_domain_id>",
      "name":"Team",
      "arrName":"teams",
      "attributes":{
        "Identifier":"<identifier_of_permission_team_service_transaction>",
        "LeaderYn":"N"
      }
    }
  ],
  "children":[
    {
      "_id":"<unique_domain_id>",
      "name":"EmailAddress",
      "attributes":{
        "Email":"john.doe@gmail.com"
      }
    },
    {
      "_id":"<unique_domain_id>",
      "name":"PhysicalAddress",
      "attributes":{
        "Line1":"10 King Street",
        "Line2":"",
        "City":"Auckland",
        "RegionCode":"AUK",
        "PostCode":"1010",
        "Country":"NZ"
      }
    },
    {
      "_id":"<unique_domain_id>",
      "name":"PostalAddress",
      "attributes":{
        "Line1":"1 Queent Street",
        "Line2":"",
        "City":"Auckland",
        "RegionCode":"AUK",
        "PostCode":"1010",
        "Country":"NZ"
      }
    },
    {
      "_id":"<unique_domain_id>",
      "name":"TelephoneAddress",
      "attributes":{
        "CountryCode":"64",
        "AreaCode":"9",
        "Number":"123456"
      }
    },
    {
      "_id":"<unique_domain_id>",
      "name":"MobileAddress",
      "attributes":{
        "CountryCode":"64",
        "Number":"123456"
      }
    }
  ]
}

Notes:

  1. The Username attribute is what the user uses to log into Verne
  2. The Password attribute is the encrypted form of the password used to login (one-way encryption)
  3. The Position attribute is, by default, only captured for internal users
  4. The DateOfBirth attribute is, by default, only captured for external users
  5. The groups & teams array will typically be empty for external users
  6. The group’s array for internal users will typically contain 1 or more Group domains for each Permission Group they have been granted
  7. The team’s array for internal users will typically contain 0 or more Team domains for each Team they are a member of
  8. The children array contains the address information for the users and the domain name indicates the type of the address
0
0

Jump to Section