Skip to content

Authentication

The Vendor App supports multiple authentication methods for different user types within a vendor organization.

User Types

TypeDescriptionLogin Method
Vendor OwnerPrimary account holderEmail/Phone + Password
Sub-userTeam member with assigned roleUsername + Password

Login Flow

Owner Login

┌─────────────────┐
│  Enter Email    │
│  or Phone       │
└────────┬────────┘


┌─────────────────┐
│  Enter Password │
│                 │
└────────┬────────┘


┌─────────────────┐     ┌─────────────────┐
│  2FA (if        │────▶│  Enter OTP      │
│  enabled)       │     │                 │
└────────┬────────┘     └────────┬────────┘
         │                       │
         └───────────┬───────────┘

            ┌─────────────────┐
            │  Select Till    │
            │  (if multiple)  │
            └────────┬────────┘


            ┌─────────────────┐
            │   Dashboard     │
            └─────────────────┘

Sub-user Login

┌─────────────────┐
│  Enter Username │
│                 │
└────────┬────────┘


┌─────────────────┐
│  Enter Password │
│                 │
└────────┬────────┘


┌─────────────────┐
│  Load Assigned  │
│  Till & Perms   │
└────────┬────────┘


┌─────────────────┐
│   Dashboard     │
│   (Limited)     │
└─────────────────┘

First-Time Password Setup

New sub-users must set their password on first login:

┌─────────────────┐
│  Enter Temp     │
│  Code (from SMS)│
└────────┬────────┘


┌─────────────────┐
│  Create New     │
│  Password       │
└────────┬────────┘


┌─────────────────┐
│  Confirm New    │
│  Password       │
└────────┬────────┘


┌─────────────────┐
│  Account Ready  │
│                 │
└─────────────────┘

Controller Methods

MethodDescription
loginAsOwner(identifier, password)Owner login
loginAsSubUser(username, password)Sub-user login
setPassword(tempCode, newPassword)First-time password setup

Permission Checks

PermissionDescription
canAcceptPaymentsPOS permission
canTopUpTop-up permission
canWithdrawWithdrawal permission
canViewAllTransactionsView all transactions
canExportExport reports
canManageTeamTeam management
canManageCardsCard operations

Password Requirements

RequirementRule
LengthMinimum 8 characters
UppercaseAt least 1
LowercaseAt least 1
NumberAt least 1
SpecialAt least 1 (!@#$%^&*)

Session Management

Token Storage

KeyDescription
vendor_access_tokenAccess token
vendor_refresh_tokenRefresh token
active_till_idActive till ID

Auto-Logout

The app automatically logs out after:

  • 15 minutes of inactivity
  • App backgrounded for 5+ minutes
  • Token expiration

API Endpoints

EndpointMethodDescription
/vendor/auth/loginPOSTOwner login
/vendor/auth/subuser-loginPOSTSub-user login
/vendor/auth/set-passwordPOSTFirst-time password
/vendor/auth/verify-otpPOST2FA verification
/vendor/auth/forgot-passwordPOSTPassword reset
/vendor/auth/refreshPOSTRefresh token
/vendor/auth/logoutPOSTEnd session

Error Handling

ErrorCauseAction
VAUTH_001Invalid credentialsCheck email/password
VAUTH_002Account lockedContact admin
VAUTH_003Sub-user disabledContact owner
VAUTH_004Till not assignedContact manager
VAUTH_005Session expiredRe-login
FilePurpose
lib/screens/auth/vendor_login_screen.dartVendor login
lib/screens/auth/subuser_login_screen.dartSub-user login
lib/screens/auth/set_password_screen.dartSet password
lib/screens/auth/otp_screen.dartOTP screen
lib/controllers/auth_controller.dartAuth controller
lib/providers/permission_provider.dartPermission provider
lib/services/auth_service.dartAuth service

Internal use only - Keshless Payment Platform