Skip to main content

Authorization - Core Concepts

warning

This page is currently under development, and its contents are subject to updates.

Core Entities​

User​

The fundamental actor in the system who can interact with various resources based on their roles and permissions.

  • Can belong to multiple organizations
  • Can have multiple platform roles (e.g., Farmer, Machinery Owner)
  • Can have organization-specific roles within each organization
  • Has attributes that influence permissions (location, certifications, etc.)

Organization​

Represents a business entity in the system with its own hierarchy, roles, and permissions.

  • Can operate in specific verticals and sectors
  • Can have parent-child relationships with other organizations
  • Can define custom roles for its members
  • Manages its own set of resources and permissions

Vertical​

High-level business domains that categorize the platform's services and trade.

  • Examples: Amagator (Agro Machinery Aggregator), AgroCare (Agro Input Trade), AgroTrade (Agro Produce Trade)
  • Influences available sectors and roles
  • Affects permission scopes and policies
  • Determines available features and services

Sector​

Sub-categories within verticals that specify the exact domain of operation.

  • Examples: Machinery, Farm, Fuel within Agro Machinery vertical
  • Determines available platform roles
  • Influences permission sets
  • Specifies operational constraints

Platform Role​

System-wide roles that define user and organization capabilities across the platform.

  • Examples: Machinery Operator, Farmer, Supplier
  • Requires agreement acceptance
  • Associated with specific permissions
  • Can be sector-specific
  • Users and organizations may hold multiple PlatformRoles (e.g., Farmer and Supplier)

Organization Role​

Organization-specific roles that define user capabilities within an organization.

  • Examples: Owner, Manager, Supervisor
  • Assigned to Users within an Organization
  • Scoped to specific organization
  • Can have organization-specific permissions
  • Manages internal access control
  • A User can hold multiple OrganizationRoles in one or more organizations

Permission​

Defines allowed operations on specific resources.

  • Combination of action and resource
  • Can have conditions and constraints
  • Can be role-specific
  • Supports temporal validity

Scope​

Defines the boundary of permissions and access control.

  • Types: Platform, Organization, Vertical, Sector
  • Hierarchical in nature
  • Influences permission resolution
  • Controls resource accessibility

Policy​

Rules that govern access control decisions.

  • Can be attribute-based
  • Has priority levels
  • Can be scoped to different levels
  • Supports complex conditions

Resource​

Any entity in the system that can be acted upon.

  • Examples: Machinery, Agreements, Users
  • Has associated permissions
  • Can be scoped
  • Supports hierarchical access

Relationships and Interactions​

Connections Between Entities​

User
├── PlatformRole (e.g., Farmer, Operator)
│ └── Linked to Sectors (e.g., Machinery, Farm, Fuel)
├── Organization (e.g., Company, Farm, Fuel Station)
│ └── OrganizationRole (e.g., Owner, Manager)
└── Vertical (e.g., Agro Machinery Aggregator)
└── Sector (e.g., Machinery, Fuel, Farm)

User Relationships​

Entity AEntity BRelationship Details
UserOrganizationMany-to-Many (through membership)
UserPlatformRoleMany-to-Many (with agreements)
UserOrganizationRoleMany-to-Many (within organizations)

Entity B Explanation: Entity B represents the entities that the primary entity (Entity A) is related to. For example, a User can belong to multiple Organizations, hold multiple Platform Roles, or have specific Organization Roles within each Organization.

Organization Relationships​

Entity AEntity BRelationship Details
OrganizationVerticalMany-to-Many
OrganizationSectorMany-to-Many
OrganizationOrganizationRoleOne-to-Many

Entity B Explanation: Entity B in this context refers to entities such as Verticals, Sectors, or Roles that are associated with the Organization.

PlatformRole Relationships​

Entity AEntity BRelationship Details
PlatformRolePermissionMany-to-Many (through RolePermission)
PlatformRoleSectorMany-to-Many (Platform roles are sector-specific)
PlatformRolePlatformRoleAgreementOne-to-Many

Entity B Explanation: Entity B indicates the related entities that interact with Platform Roles, such as Permissions, Sectors, or specific Agreements.

OrganizationRole Relationships​

Entity AEntity BRelationship Details
OrganizationRolePermissionMany-to-Many (through RolePermission)
OrganizationRoleOrganizationMany-to-One (roles belong to specific organizations)

Entity B Explanation: Here, Entity B represents entities such as Permissions or Organizations linked to specific Organization Roles.

Permission Resolution​

  1. Check Platform Role permissions
  2. Check Organization Role permissions
  3. Apply Scope restrictions
  4. Evaluate Policies
  5. Check Resource constraints

Access Control Flow​

  1. Authentication

    • Verify user identity
    • Load user context
  2. Context Resolution

    • Determine active roles
    • Load relevant scopes
    • Gather user attributes
  3. Permission Evaluation

    • Check direct permissions
    • Apply role-based rules
    • Evaluate policies
    • Consider scope constraints
  4. Policy Application

    • Apply attribute rules
    • Check temporal constraints
    • Evaluate conditions
    • Resolve conflicts

Examples​

Platform Role Example​

{
"role": "Machinery Operator",
"scope": "Platform",
"requires_agreement": true,
"permissions": ["operate_machinery", "view_assignments", "update_status"],
"conditions": {
"requires_license": true,
"minimum_experience": "2y"
}
}

Organization Role Example​

{
"role": "Branch Manager",
"scope": "Organization",
"permissions": ["manage_staff", "view_reports", "approve_transactions"],
"conditions": {
"branch_only": true,
"maximum_transaction_amount": 50000
}
}

Policy Example​

{
"name": "Working Hours Policy",
"scope": "Sector",
"sector": "Machinery",
"conditions": {
"time_range": "06:00-18:00",
"working_days": ["MON", "TUE", "WED", "THU", "FRI", "SAT"],
"weather_conditions": ["clear", "cloudy"]
},
"effect": "deny_if_not_match"
}

Summary of Entity Relationships and Roles​

EntityDescriptionConnections
UserRepresents an individual who interacts with the platform.- Can belong to one or more Organizations.
- Holds one or more PlatformRoles.
- Can have OrganizationRoles within organizations.
OrganizationRepresents a business entity (e.g., company, farm, or group) on the platform.- Contains Users with OrganizationRoles.
- Operates within a specific Vertical and Sector.
VerticalA high-level grouping of services or trade offered by the platform.
Examples: Agro Machinery Aggregator, Agro Input Trade, Agro Produce Trade.
- High-level business domains that categorize the platform's services and trade.
- Influences the Sectors available for services/trade.
SectorA sub-group within a vertical defining the domain or category of activity.
Examples: Machinery, Farm, Fuel, Organization.
- Defines the PlatformRoles available for Users.
- Organizations may specialize in one or more Sectors.
PlatformRoleRepresents the role a User holds at the platform level, often tied to specific agreements.
Examples: Machinery Operator, Farmer, Supplier.
- Assigned to Users based on the Sector they are involved in.
- Users may hold multiple PlatformRoles (e.g., Farmer and Supplier).
OrganizationRoleRepresents the role a User holds within a specific Organization.
Examples: Owner, Manager, Supervisor.
- Assigned to Users within an Organization.
- A User can hold multiple OrganizationRoles in one or more organizations.
PermissionDefines specific actions that can be performed on resources.- Tied to a User, Role, or Policy.
- Grants access to specific Resources.
PolicyRepresents a set of rules governing access and actions within the platform.- Links Users or Roles with Permissions.
- Enforces platform or organization-level governance.
ResourceRepresents entities or services requiring access control.- Permissions determine how Users interact with the resource.
- Examples: Machinery, Reports, Financial Data.

System Hierarchy and Authorization Flow​