Users, Groups & Access Management
Travomate Cargo uses a flexible, group-based permission system for managing user access and visibility. Rather than hardcoded groups, permissions are defined through groups that inherit from each other, and visibility is controlled through field-level rules and assignment.
Overview
Core Concepts
Groups: Define sets of permissions and visibility rules. Groups can inherit from other groups.
Permissions: Specify which GraphQL queries and mutations a group can call, and which fields are relevant on the way in and out of each one.
Visibility Rules: Control which fields and instances are visible to users in a group.
Assignment: Instances are assigned to users/groups, determining who can access them.
Two-Sided Marketplace
Travomate Cargo connects:
- Cargo Owners - Post goods for shipment, find capacity
- Capacity Providers - Offer available shipping space, fulfill requests
Both groups have distinct permissions and default visibility rules upon signup.
Main Types
The GraphQL types most of this section refers to:
- Listings - Cargo and Capacity postings
- Conversations - Messages between parties, assigned to specific users
- Shipments - Active bookings and tracking
- Documents - Uploaded files and verification docs
- User Profiles - Company and verification information
Quick Links
- Groups - Default groups, their permissions, and how to extend them
- Visibility & Privacy - What's visible to whom, at the instance and field level
- Sharing & Resource Assignment - How instances get shared with users and groups
- Account & Group Lifecycle - Signup flow, group changes, and each user's own access summary
- Permission Model Reference - Technical schema for defining groups and permissions
- GraphQL Implementation - How permission, visibility, and assignment checks apply to queries and mutations
Looking for the security overview?
This section is the detailed access model. For a consolidated summary of authentication, authorisation, and data protection (the kind enterprise procurement asks for), see Security.
User Journey
- Sign up with Google Auth
- Auto-assigned to
cargo_ownergroup - Create business profile
- Create cargo listings (visible to capacity providers)
- Receive offers from capacity providers
- Create conversations with selected providers
- Manage shipments
- Sign up with Google Auth
- Auto-assigned to
capacity_providergroup - Create business profile
- Create capacity listings (visible to cargo owners)
- Respond to cargo owner requests
- Create conversations with cargo owners
- Manage available capacity
- Created manually by platform (not self-signup)
- Assigned to
admingroup - Can see all resources regardless of assignment
- Can modify visibility rules
- Can manage groups and permissions
- Can moderate content
State Management
Some types (CargoListing, Shipment) transition through states (draft, published, matched, shipped) that affect visibility and modifiability. This isn't a universal property of every type in the system (a user profile or a document doesn't have these states), and it's a type-level concern, not a user account concern. See State-Based Constraints for how a state locks specific operations, and Scope Changes With State for how it affects what's visible to whom.
Key Features
✓ Whitelist-Based Permissions - Groups explicitly list what they allow; unlisted actions are denied by default ✓ Multi-Group Assignment - Users can belong to multiple groups; effective permissions are the union ✓ Minimal Inheritance - Groups inherit from parents to avoid duplication; most groups are independent ✓ Field-Level Access - Permissions specify which fields are allowed for each operation ✓ Scope-Based Visibility - Control who sees which instances (own only, assigned, public, admin only) ✓ State Constraints - Operations can be restricted by resource state (e.g., only modify drafts) ✓ Admin Override - Admins bypass all restrictions and see everything
Permission Matrix Quick Reference
| Resource | Cargo Owner | Capacity Provider | Verified Provider | Admin |
|---|---|---|---|---|
| Create Cargo Listing | ✓ | - | - | ✓ |
| Create Capacity Listing | - | ✓ | ✓ | ✓ |
| View Own Resources | ✓ | ✓ | ✓ | ✓ All |
| View Public Resources | ✓ (capacity) | ✓ (cargo) | ✓ (cargo) | ✓ All |
| See Assigned Messages | ✓ | ✓ | ✓ | ✓ All |
| Modify Published Resource | ✓ | ✓ | ✓ | ✓ |
| Modify Matched Resource | - | - | - | ✓ |
| Premium Analytics & Featured Listings | - | - | ✓ | ✓ |
This matrix covers the four default groups only. Each user account also has its own personalized version of this table (see Your Access Summary), and admins can define entirely new groups with their own rows; see Groups for the full, extensible list.
Next Steps
- Start with Groups to see the default groups and their permissions
- Learn Visibility & Privacy for instance and field-level access rules
- Review Sharing & Resource Assignment for how instances get shared
- Check Account & Group Lifecycle for signup, group changes, and each user's own access summary
- Developers and admins configuring the system should read Permission Model Reference and GraphQL Implementation