2.1 Overview

This chapter explains how users access and secure their AIUNIFY Call Center accounts, update their profile information, change or recover a Password, configure Two-Factor Authentication, and complete Customer identity verification.

The account-access sequence is:

Login credentials
Turnstile verification where enabled
Two-Factor challenge where enabled
Authenticated session
Profile and security settings
Customer KYC verification
Access to protected communication features

The Settings area currently contains:

Profile
Password
Two-Factor Auth
KYC Verification — Customer only
KYC — Administrator configuration
Appearance
API Keys

The KYC items are hidden when KYC has been disabled globally.

Login

2.2 Opening the Login Page

Open:

https://callcenter.poweredbyaiunify.com/

The root address redirects to:

/login

The Login page displays:

Aiunify Call Center

Manage live calling teams and telemarketing campaigns.

2.3 Login Fields

The form contains:

Email Address
Password
Forgot password?
Remember me
Turnstile challenge, when enabled
Log in

The Password field includes a visibility control that switches between hidden and visible characters.

2.4 Logging In

To sign in:

  1. Enter the account Email Address.
  2. Enter the Password.
  3. Use the visibility icon to verify the Password where necessary.
  4. Select Remember me only on a private device.
  5. Complete the Turnstile challenge if it appears.
  6. Select Log in once.
  7. Wait for the Dashboard.

A successful login redirects to:

/dashboard

2.5 Email Address Handling

AIUNIFY Call Center uses Email Address as the login username.

Fortify is configured to lowercase usernames during authentication.

Recommended format:

name@example.com

Avoid copying leading or trailing spaces.

2.6 Remember Me

Selecting:

Remember me

asks the authentication system to preserve the browser login beyond the normal session.

Do not use it on:

Public computers
Shared office workstations
Temporary devices
Unmanaged mobile devices

2.7 Password Visibility

The Eye icon changes the field between:

Password mode
Text mode

The browser does not submit a different Password when visibility is changed.

Use this control only where another person cannot see the screen.

2.8 Login Status Messages

The Login screen can display a status message above the form.

Examples can include:

Password reset confirmation
Authentication-related notice
Session-related message

Read the message before submitting the form again.

Turnstile Protection

2.9 Turnstile on Login

When Cloudflare Turnstile is enabled in the platform configuration, the backend requires a valid:

cf-turnstile-response

before attempting Email and Password authentication.

Failure can occur when:

The challenge was not completed
The challenge expired
JavaScript was blocked
A privacy extension blocked Turnstile
The browser could not reach Cloudflare


2.10 Turnstile Troubleshooting

When the challenge does not appear:

  1. Refresh the Login page once.
  2. Confirm JavaScript is enabled.
  3. Temporarily review browser content-blocking extensions.
  4. Confirm the system clock is correct.
  5. Try a current supported browser.
  6. Avoid repeatedly submitting the form.

2.11 Turnstile on Password Recovery

The Forgot Password page also displays the Turnstile component.

However, the reviewed custom Fortify authentication pipeline explicitly validates Turnstile for Login, while equivalent custom backend validation was not found for the Password-reset-link request.

The visible challenge should still be completed when shown, but its server-side enforcement on this specific form is not confirmed in the current build.

Login Rate Limiting

2.12 Login Attempt Limit

The Login endpoint permits approximately:

5 attempts per minute

for each combination of:

Lowercased Email Address
+
IP Address

After repeated failures, the user may receive a throttling response and must wait before trying again.

2.13 Avoiding Lockout

After one or two failed attempts:

Verify the Email
Verify capitalization and spacing
Use the Password visibility control
Use Forgot password when uncertain

Do not continue guessing rapidly.

Registration

2.14 Registration Capability

Laravel Fortify registration is enabled in the backend.

A new account created through that process would receive the:

Customer

role by default.

The backend registration validation requires:

Name
Unique Email Address
Password and confirmation
Turnstile when enabled


2.15 Current Registration Interface

The current visible Registration page does not display a form.

It immediately redirects the browser to:

/login

Therefore, users should not rely on public self-registration in the current deployment.

New Customer and Agent accounts should be created through the approved Administrator or Customer team-management process.

Email Verification

2.16 Email Verification Routes

The application contains routes and interface pages for:

Email verification notice
Resending a verification link
Opening a signed verification link
Logging out from the verification screen

The verification page can display:

Resend Verification Email
Log out

and a confirmation when a new link has been sent.

2.17 Current Email-Verification Limitation

Although many application routes use the:

verified

middleware and Fortify’s Email Verification feature is enabled, the current User model does not implement Laravel’s MustVerifyEmail contract.

The Profile controller also checks whether the User implements that contract before showing its unverified-email warning.

As a result, the current build does not reliably enforce Email verification for ordinary browser users. The verification interface exists, but the operational requirement is incomplete.

2.18 Correction to Chapter 1

Chapter 1 described verified Email as a requirement for most authenticated routes.

The deeper source review completed for this chapter shows the more precise current behavior:

Routes contain “verified” middleware
+
User model does not implement MustVerifyEmail
=
Email verification is not reliably enforced

This should be corrected before Email verification is represented as a mandatory production security control.

2.19 Changing the Account Email

When a user changes the Email Address through Profile Settings, the backend sets:

email_verified_at = null

The Email Address therefore becomes unverified in the database.

However, because Email verification is not fully enforced in the current User model, the user may not be prompted to verify the replacement Email.

2.20 Verification Email Delivery

The current production runtime reports:

Mail driver: log

This means Laravel-generated messages such as Password resets and Email verification messages can be written to application logs rather than delivered to the recipient’s mailbox.

The platform mail configuration must be changed to a functioning production mail provider before users can depend on inbox delivery.

Forgot Password

2.21 Opening Password Recovery

From Login:

  1. Select Forgot password?
  2. Enter the account Email Address.
  3. Complete Turnstile where displayed.
  4. Select the Email reset-link button.
  5. Wait for the status response.

The form contains:

Email Address
Email Password Reset Link
Return to login


2.22 Recovery Email

When mail delivery is correctly configured, the system sends a Password-reset link to the registered Email Address.

The link contains:

Password-reset token
Account Email
Expiration and validation information

Do not forward the link to another person.

2.23 Current Mail-Driver Warning

Because the current runtime uses the log mail driver, a user may receive a success response but no Email in the inbox.

When this happens:

Do not repeatedly request links
Contact the platform Administrator
Confirm production mail is configured
Have the Administrator review the mail logs securely

2.24 Reset Password Screen

The reset page displays:

Email — read only
Password
Confirm Password
Reset Password

The Email comes from the reset request and cannot be edited in the form.

2.25 Password Confirmation

The new Password must match:

Confirm Password

A mismatch prevents the reset.

2.26 Password Requirements

The application uses Laravel’s configured default Password rule and requires confirmation.

Because the source bundle’s secret-protection process redacted the detailed Password rule values, users should follow the validation message shown by the live form rather than rely on an undocumented complexity formula.

A secure Password should still contain:

Adequate length
Unique wording
Uppercase and lowercase characters
Numbers
Symbols where supported
No reused business credentials

2.27 Reset Completion

After a successful reset:

  1. Return to Login.
  2. Enter the registered Email Address.
  3. Enter the new Password.
  4. Complete Two-Factor Authentication where enabled.
  5. Confirm the Dashboard opens.

2.28 Invalid or Expired Reset Link

A reset can fail when:

The token expired
The link was already used
The Email does not match
A newer reset request invalidated the old one
The Password failed validation

Request one new link and use only the newest message.

Confirming a Password

2.29 Sensitive-Action Confirmation

Certain sensitive Settings pages require the user to re-enter the current Password before continuing.

The confirmation screen contains:

Password
Confirm Password

This is separate from changing the Password.

2.30 Two-Factor Settings Require Confirmation

The current Two-Factor Settings controller applies:

password.confirm

middleware before showing the page.

Opening Two-Factor Auth can therefore redirect the user to the Password confirmation screen first.

Profile Settings

2.31 Opening Profile

To open Profile:

  1. Select the User menu.
  2. Select Settings.
  3. Select Profile.

The page heading is:

Profile Information

with a description explaining that the user can update account Profile information.

2.32 Editable Profile Fields

The current Profile form contains:

Full Name
Email Address
Save Changes

It does not contain fields for:

Profile image
Phone number
Company name
Job title
Time Zone
Preferred currency
Language

Those values are managed elsewhere or are not exposed in the current Profile form.

2.33 Full Name Validation

Full Name is:

Required
Text
Maximum 255 characters

Use the person’s proper operational name so call activity and team records remain understandable.

2.34 Email Address Validation

The Email Address must be:

Required
Valid Email format
Lowercase
Maximum 255 characters
Unique across Users

The user may retain the current Email because the uniqueness check ignores the current User record.

2.35 Saving Profile Changes

To update the Profile:

  1. Edit Full Name or Email Address.
  2. Review the new Email carefully.
  3. Select Save Changes.
  4. Wait for the message:
Saved

The page preserves its scroll position during the request.

2.36 Changing the Login Email

Changing the Profile Email changes the Email used to log in.

After saving:

Old Email may no longer authenticate
New Email becomes the login username
Email verification timestamp is cleared

Confirm the new address before signing out.

2.37 Email Verification Warning

The Profile page contains interface logic capable of displaying:

Your email address is unverified.
Click here to resend the verification email.

However, that section appears only when the User implements MustVerifyEmail.

It will not normally appear with the current User model.

Deleting an Account

2.38 Delete Account Section

At the bottom of Profile Settings, the interface displays:

Delete account

Delete your account and all of its resources

and a warning:

Please proceed with caution, this cannot be undone.

2.39 Deletion Confirmation

Selecting Delete account opens a dialog:

Are you sure you want to delete your account?

The user must enter the current Password and select Delete account again.

2.40 What the Backend Does

After successful Password validation, the backend:

Logs out the User
Deletes the User record
Invalidates the session
Regenerates the CSRF token
Redirects to the public root

The action should be treated as permanent.

2.41 Role Restriction on Deletion

The delete route permits:

Administrator
Customer

roles.

It does not permit the Agent role.

The Profile interface itself is shared, so an Agent may still see the Delete Account component even though submitting it can be rejected by the role middleware.

This is a current interface and authorization mismatch.

2.42 Before Deleting

Review:

Campaigns
Contacts
Calls
Recordings
Telephone numbers
Credit balance
Transactions
AI Agents
Team Agents
KYC documents
API keys
Integrations

Account deletion should not be used as an ordinary method of leaving a team.

Changing the Password

2.43 Opening Password Settings

From Settings, select:

Password

The form contains:

Current Password
New Password
Confirm Password
Save Changes

2.44 Current Password

The correct current Password is required.

An incorrect value produces a validation error and returns focus to the Current Password field.

2.45 New Password

Enter a Password not used for:

Email
Twilio
CRM
Payment provider
Other AIUNIFY systems

2.46 Confirm Password

The confirmation must exactly match the new Password.

2.47 Saving the Password

Select Save Changes once.

On success:

Saved

appears and the Password fields are cleared.

2.48 Password Update Rate Limit

The Password update route is limited to:

6 requests per minute

Do not repeatedly submit after a validation failure.

2.49 Existing Sessions

The current Password-update controller changes the stored Password but does not show an operation that logs out every other browser session.

After a suspected compromise:

Change the Password
Disable and re-enable Two-Factor Authentication if necessary
Rotate recovery codes
Review API tokens
Review active provider credentials
Contact an Administrator

Two-Factor Authentication

2.50 What Two-Factor Authentication Does

Two-Factor Authentication requires:

Something the user knows:
Password

Something the user has:
Authenticator app or recovery code

This protects the account when the Password is exposed.

2.51 Opening Two-Factor Settings

From Settings:

  1. Select Two-Factor Auth.
  2. Confirm the current Password when prompted.
  3. Review the Two-Factor Status Card.

The Card displays either:

Your account is protected with two-factor authentication

or:

Two-factor authentication is currently disabled

2.52 Enabling Two-Factor Authentication

When disabled, the page displays:

Enable Two-Factor Authentication

The intended process is:

Enable 2FA
Receive a QR code and setup key
Scan with an authenticator app
Enter a six-digit code
Confirm 2FA
Save recovery codes

2.53 Supported Authenticator Applications

A standard time-based authenticator can be used, including applications such as:

Google Authenticator
Microsoft Authenticator
Authy
1Password
Other compatible TOTP applications

The code normally changes approximately every 30 seconds.

2.54 Verification Code

The confirmation field expects:

6 digits

Do not include spaces or hyphens.

2.55 Current Two-Factor Setup Limitation

The current Two-Factor page expects optional:

qrCode
recoveryCodes

properties.

However, its controller currently sends only:

twoFactorEnabled
requiresConfirmation

The source also contains more complete QR-code and recovery-code helper components, but the current Settings page does not import or use them.

Consequently, selecting Enable Two-Factor Authentication may create the backend Two-Factor secret without displaying the QR code and confirmation interface required to complete setup. This feature should be tested carefully before requiring it for production users.

2.56 Do Not Exit During Setup

Do not assume Two-Factor Authentication is complete merely because the Enable request succeeded.

Confirm all of the following:

QR code displayed
Authenticator entry created
Six-digit code accepted
Status changed to enabled
Recovery codes saved
Login challenge tested

2.57 Disabling Two-Factor Authentication

When enabled, the page displays:

Disable Two-Factor Authentication

Selecting it opens a browser confirmation:

Are you sure you want to disable two-factor authentication?

Confirm only when authorized.

Recovery Codes

2.58 Purpose of Recovery Codes

Recovery codes allow login when the user loses access to the authenticator application.

Each code should be treated like a one-time Password.

2.59 Recovery-Code Behavior

The underlying Fortify system supports:

Viewing recovery codes
Using one code during login
Regenerating codes
Removing a code after use

The included recovery-code component states that each code can be used once.

2.60 Current Recovery-Code Page Limitation

The visible Two-Factor page displays a Show Recovery Codes button only when recovery codes have been passed to the page as properties.

The controller does not currently pass them.

The more complete component capable of fetching and regenerating codes exists in the source but is not connected to the current page.

Users should not enable Two-Factor Authentication until they can verify that recovery codes are actually available.

2.61 Storing Recovery Codes

Store codes in:

Approved Password manager
Encrypted business credential vault
Secure offline record

Do not store them in:

Contact Notes
Campaign descriptions
Unencrypted text file
Shared chat
Support Ticket
Screenshot folder

Two-Factor Login Challenge

2.62 Authentication Code Mode

After entering Email and Password, a Two-Factor-enabled user is sent to the challenge page.

The normal mode displays six separate code positions.

Enter the current Authenticator code and select:

Continue

2.63 Recovery-Code Mode

The challenge screen includes a link allowing the user to switch to a Recovery Code.

Enter one unused code and select Continue.

The user can switch back to the Authenticator code mode.

2.64 Two-Factor Rate Limit

Two-Factor challenges are limited to approximately:

5 attempts per minute

for the current login session.

After several failures, wait before trying again.

2.65 Invalid Authenticator Code

Check:

Correct account selected in the authenticator
Phone time set automatically
Current code has not nearly expired
No spaces were entered
Six digits were provided

2.66 Lost Authenticator and Recovery Codes

When both are unavailable:

Stop repeated login attempts
Contact an authorized Administrator
Verify account ownership
Use the approved account-recovery process

Do not send identity documents or Passwords through ordinary Email unless specifically required through a secure process.

KYC Verification

2.67 KYC Availability

The KYC Verification Settings item appears only for the Customer role and only when KYC is globally enabled.

Administrators receive a separate KYC configuration item.

Agents do not receive the Customer KYC Verification menu.

2.68 KYC Tiers

The system defines:

Unverified
Basic — Tier 1
Business — Tier 2

2.69 KYC Statuses

A KYC record can have:

Pending
Approved
Rejected
Expired

Document-level statuses can be:

Pending
Approved
Rejected


2.70 Unverified

Unverified means the Customer has no approved KYC record.

Protected features can redirect the user to the KYC Status page.

2.71 Pending

Pending indicates that:

Phone verification is in progress
or
Business documents are awaiting Administrator review

The Status page displays:

Under Review

2.72 Approved

Approved indicates that the relevant verification has been accepted.

For Basic KYC, approval occurs automatically after successful Phone verification.

For Business KYC, an Administrator approves the submission.

2.73 Rejected

Rejected displays the Administrator’s rejection reason where available.

The Status page provides:

Resubmit Documents

2.74 Expired

Expired indicates that verification must be renewed.

The Status page can display:

Renewal Required

when an approved record is within the renewal window.

Grace-Period Behavior

2.75 Displayed Grace Period

The system’s shared page data calculates a seven-day KYC grace period from the User’s account creation date.

The Dashboard can display:

Days remaining
Grace-period end date
Grace period expired
Account Suspended – Verification Required

2.76 Current Grace-Period Enforcement Limitation

The KYC access middleware does not check or honor the calculated grace period.

For Customer accounts, it requires:

KYC record exists
Status = approved
Verification not expired

before allowing a KYC-protected route.

Therefore, the current seven-day grace period is primarily a Dashboard display concept and does not reliably grant temporary access to Campaigns, Contacts, Calls, or other protected functions.

2.77 “Account Suspended” Banner

The grace-period-expired banner does not itself change the main User status to inactive.

It represents KYC feature restriction rather than a confirmed full authentication suspension.

The user may still be able to sign in and access the Dashboard or Settings.

Basic KYC — Tier 1

2.78 Basic KYC Purpose

Basic KYC verifies the Customer’s Phone Number.

The Tier description is:

Phone verification required. Limited access.

2.79 Starting Basic Verification

From Settings:

  1. Select KYC Verification.
  2. Select Start Verification.
  3. Enter a Phone Number.
  4. Select Send Verification Code.
  5. Enter the SMS code.
  6. Select Verify Code.

2.80 Phone Number Format

The number must use E.164 format:

+[country code][number]

Example:

+13135550198

The backend permits up to 15 digits after the plus sign.

2.81 Phone Number Uniqueness

A Phone Number cannot be used by another KYC record whose status is:

pending
approved

The current User’s own record is ignored during the uniqueness check.

Possible error:

This phone number is already registered with another account.

2.82 Sending the Code

The system creates a six-digit verification code and sets:

Expiration: 10 minutes
Maximum attempts: 5

The SMS is dispatched synchronously through the configured Twilio service.

2.83 SMS Configuration Failure

Possible errors include:

Failed to send verification code.
Twilio is not configured properly.
Failed to process verification request.

When the SMS cannot be sent, the database transaction is rolled back.

2.84 Phone Verification Screen

The screen displays:

Masked Phone Number
Code expiration timer
Attempts remaining
Verification Code
Verify Code
Resend Code

The code field accepts numeric characters only and has a maximum length of six.

2.85 Code Expiration

When the timer reaches zero, the screen displays:

Code Expired

Your verification code has expired.
Please request a new code.

2.86 Failed Attempts

An invalid code increments the attempt count.

When two or fewer attempts remain, the interface displays a warning.

After five failures:

Maximum verification attempts exceeded.
Please request a new code.

2.87 Resending the Code

Selecting Resend Code:

Creates a new six-digit code
Sets a new 10-minute expiration
Resets attempts to zero
Sends a new SMS

The browser displays a 60-second resend cooldown.

The reviewed route does not show equivalent server-side rate-limit middleware, so the visible cooldown should not be treated as complete abuse prevention.

2.88 Twilio Verify Versus Local Code

When a Twilio Verify Service SID is configured, the backend validates the submitted code through Twilio Verify.

Otherwise, it compares the code with the locally stored verification code.

2.89 Successful Basic Approval

After successful verification, the backend records:

Phone verified date
Status = approved
Approved date
Expiry = approximately two years

The user is redirected to KYC Status with:

Phone number verified!
Your KYC has been approved.

Basic KYC Access

2.90 Basic Feature Access

The current User access model grants approved Basic Customers access to:

Phone Numbers
Campaigns
Calls
SMS
Contacts

The KYC enum also lists Audio Files, but the User helper used elsewhere does not include Audio Files in its Basic feature list.

This is a current internal inconsistency.

2.91 Basic Limits

The current model contains Basic KYC limits of:

Maximum Phone Numbers: 3
Maximum Calls per day: 100
Maximum deposit: $500

Actual enforcement can also depend on pricing, Credits, provider limits, and Administrator configuration.

2.92 Basic Page Wording Limitation

The Basic Verification page states that Phone verification will unlock:

all platform features

That wording is not accurate.

Conversational AI and other advanced features require Business KYC in the current access model.

Business KYC — Tier 2

2.93 Business KYC Purpose

Business KYC is intended to unlock:

AI Agents
Advanced features
Higher or unlimited KYC-specific capacity

It requires Business information and identity documents.

2.94 Prerequisite

The user must first have:

Basic tier
Approved Phone verification

Attempting to open Business verification without Basic approval redirects to KYC Status with:

Please complete Basic (Tier 1) verification first.

2.95 Business Verification Steps

The Business form contains three stages:

1. Business Info
2. Documents
3. Selfie

Business Information

2.96 Required Business Fields

Step 1 contains:

Business Name
Registration Number
Business Type
Address Line 1
Address Line 2 — optional
City
State/Province
Postal Code
Country

2.97 Business Types

The available selections are:

Sole Proprietorship
Partnership
LLC
Corporation
Other

2.98 Country Options

The visible Country selector currently contains:

United States
Canada
United Kingdom
Australia
India

The backend accepts a two-letter country code, but the current interface limits ordinary selection to these five values.

Business Documents

2.99 ID Document Types

The user can select:

Passport
Driver’s License
National ID Card

2.100 ID Document Upload

The ID document can be:

JPG
JPEG
PNG
PDF

Maximum size:

5 MB

2.101 Business Document Upload

Accepted business evidence can include:

Certificate of incorporation
Business license
Tax certificate

Supported formats are JPG, JPEG, PNG, and PDF, with a maximum size of 5 MB.

2.102 File-Size Configuration Mismatch

The default KYC configuration migration contains an Administrator setting of:

10 MB

for the maximum document size.

However, the active Business KYC request validation is hard-coded to:

5 MB

Users must follow the stricter 5 MB limit until the implementation is aligned.

Selfie Verification

2.103 Selfie Requirement

The final stage requires:

Selfie with ID

Accepted formats:

JPG
JPEG
PNG

Maximum size:

5 MB

2.104 Photo Requirements

The interface instructs the user to ensure:

Face is clearly visible
ID is held next to the face
ID details are readable
Lighting and focus are adequate
No filters or editing are used

Submitting Business KYC

2.105 Submission Process

After completing all three steps:

  1. Review the Business information.
  2. Confirm the correct ID type.
  3. Confirm each selected filename.
  4. Confirm the Selfie preview.
  5. Select Submit for Review once.
  6. Wait for the KYC Status page.

2.106 Private Document Storage

The backend stores:

ID document
Business document
Selfie

on the Laravel:

private

storage disk.

The interface states that documents are encrypted. The reviewed source confirms private storage and controlled download routes, but it does not independently confirm application-level file encryption.

2.107 Review Time

The interface states:

24–48 hours

for Compliance review.

This is an expected review window, not a source-confirmed service-level guarantee.

2.108 Pending Status

Submission changes the record to:

KYC tier: business
Status: pending
Document statuses: pending

The user cannot reopen the normal Business form while the record remains Pending.

Business Approval and Rejection

2.109 Administrator Approval

An Administrator can approve a Pending KYC submission.

The current approval route changes:

status = approved

and dispatches an approval Email job.

2.110 Business Approval Timestamp Limitation

The current Administrator approval route does not set:

approved_at
reviewed_at
expires_at

when approving a Business submission.

As a result, the Customer’s Status page may show Approved without displaying a verification date or expiration date.

Basic KYC does not have this issue because its Phone-verification controller sets those timestamps directly.

2.111 Business Expiration Limitation

Although the KYC configuration contains a two-year expiry concept, Business approval does not currently assign an expiration date.

Business KYC may therefore remain Approved indefinitely unless an Administrator updates or expires it through another process.

2.112 Administrator Rejection

An Administrator can reject a Pending Business submission and provide:

Rejection reason
Internal Administrator notes
Specific rejected documents

The Customer Status page displays the rejection reason.

2.113 Rejected Document Statuses

An Administrator can mark any of these as Rejected:

ID Document
Business Document
Selfie with ID

The KYC Status page displays uploaded status and review status for each document.

2.114 Resubmission Limitation

The Rejected Status page links the Customer to:

/settings/kyc/basic

That form changes the KYC tier back to Basic and starts Phone verification.

For a Customer whose Phone is already verified, the Phone verification page immediately redirects back to KYC Status.

This can leave the record in an inconsistent Pending Basic state instead of reopening the Business document form.

A rejected Business applicant may require Administrator or developer assistance to resubmit correctly.

KYC Status Page

2.115 Status Information

The KYC Status page can display:

Current Status
Verified date
Expiration date
Rejection reason
Renewal warning
Document statuses
Start Verification
Resubmit Documents
Renew Verification
Verification Complete
Under Review

2.116 Status Sorting Is Not Applicable

Each User has one KYC verification record.

The page does not display a history of previous submissions or approvals.

2.117 No User KYC Document Deletion

The normal Customer interface does not provide:

Delete uploaded ID
Delete business document
Delete selfie
Withdraw submission

once the Business submission has been sent.

2.118 Document Downloads

The backend contains an authenticated document-download route that selects:

ID document
Business document
Selfie with ID

from the signed-in User’s own KYC record.

The normal Customer Status page does not clearly provide direct download buttons.

KYC Feature Enforcement

2.119 Protected Customer Operations

Approved KYC is required for many operations, including:

Initiating calls
Ending and controlling calls
Creating and launching Campaigns
Campaign Contact management
Campaign analytics
AI message generation
Campaign Templates
Contact management
Contact imports and exports
SMS

2.120 Middleware Ignores Requested Tier

Routes can be labeled:

kyc:basic

but the current middleware does not use the minimum-tier parameter to distinguish Basic from Business.

It only checks:

KYC exists
Status approved
Not expired

Business-only enforcement therefore depends on separate feature checks and navigation logic rather than the kyc:basic parameter itself.

2.121 Administrators and Agents

The KYC middleware bypasses:

Administrator
Agent

roles.

They are treated as having full KYC access.

2.122 KYC Disabled Globally

When an Administrator disables KYC:

Customer KYC menu is hidden
KYC middleware permits access
User helper no longer treats users as unverified

Existing KYC records remain in the database.

Troubleshooting Login

2.123 Incorrect Credentials

Check:

Correct Call Center domain
Correct Email Address
No spaces
Correct Password
Caps Lock
Password manager selection

2.124 Too Many Login Attempts

Wait at least one minute and then submit one corrected attempt.

The limit is based on both Email and IP Address.

2.125 Turnstile Error

Refresh the page, complete the challenge again, and verify browser extensions are not blocking it.

2.126 Login Returns to Login

Possible causes include:

Cookies blocked
Session storage failure
CSRF failure
Server session issue
Wrong domain
Expired Two-Factor session

Troubleshooting Password Recovery

2.127 Reset Email Does Not Arrive

The current log mail driver is the most likely deployment-level cause.

Also check:

Email spelling
Spam folder
Mail provider configuration
Message delivery logs
Reset throttling

2.128 New Password Rejected

Follow the live validation response and confirm both new Password fields match.

2.129 Reset Link Invalid

Request one new link and use the newest token.

Troubleshooting Profile

2.130 Email Already Taken

Another User already owns that Email Address.

Use a different unique address or contact an Administrator.

2.131 Saved Email but No Verification Request

This is consistent with the incomplete Email-verification implementation.

The User model must implement MustVerifyEmail, and production mail must be configured, before the expected verification workflow operates.

2.132 Agent Cannot Delete Account

The Delete route is restricted to Administrator and Customer roles.

An Agent should be deactivated or removed through team management.

Troubleshooting Two-Factor Authentication

2.133 Enable Button Does Not Show QR Code

This matches the current source mismatch between the page’s expected properties and the controller’s supplied properties.

Do not continue until the setup screen is corrected or an Administrator confirms the backend state.

2.134 Recovery Codes Do Not Appear

The current page is not connected to the existing recovery-code fetch component.

Do not assume the codes are unavailable at the backend, but do not rely on them until they can be retrieved and stored.

2.135 Authenticator Code Rejected

Confirm:

Device time is automatic
Correct authenticator account
Current six-digit code
Code did not expire during entry
No repeated failed attempts

Troubleshooting KYC

2.136 KYC Menu Missing

Possible causes:

User is not a Customer
KYC is disabled globally
Page data is stale
Wrong account is signed in

2.137 Phone Number Rejected

Confirm E.164 format:

+13135550198

Also confirm the number is not already attached to another Pending or Approved KYC record.

2.138 Verification SMS Does Not Arrive

Check:

Correct country code
Carrier can receive SMS
Twilio configuration
Twilio Verify service
Number is not landline-only
Code has not expired

2.139 Maximum Attempts Reached

Select Resend Code to create a new code and reset the attempt counter.

2.140 Business Form Will Not Open

Basic Phone verification must be Approved first.

2.141 File Rejected

Confirm:

Correct file format
File is no larger than 5 MB
File is not corrupted
Browser completed upload

2.142 KYC Approved but No Expiry Date

This can occur with Business KYC because the current Administrator approval route does not set approval and expiration timestamps.

2.143 Rejected Submission Cannot Be Resubmitted

The current Resubmit Documents link can route through Basic verification and become stuck when the Phone was already verified.

Contact an Administrator before repeatedly changing the KYC record.

Security Checklists

2.144 Login Checklist

Confirm:

Correct domain
Correct Email
Private device
Turnstile completed
Remember Me used appropriately
Two-Factor code available

2.145 Password Checklist

Confirm:

Password is unique
Password is not shared
Password manager is approved
Recovery Email is controlled
Reset link is not forwarded

2.146 Two-Factor Checklist

Confirm:

QR code displayed
Setup key stored securely
Authenticator code accepted
Status shows enabled
Recovery codes available
Recovery codes stored securely
Test login completed

2.147 Profile Checklist

Confirm:

Full Name correct
Email Address correct
New Email accessible
Profile saved
No unauthorized changes

2.148 Basic KYC Checklist

Confirm:

Phone in E.164 format
Phone belongs to account owner
SMS can be received
Six-digit code entered promptly
Status becomes Approved
Expiry date appears

2.149 Business KYC Checklist

Confirm:

Basic KYC approved
Business Name matches documents
Registration Number correct
Address correct
Country code correct
ID document clear
Business document clear
Selfie meets requirements
Each file is 5 MB or less
Submission confirmation received

2.150 Account Deletion Checklist

Before deletion, confirm:

Campaign records preserved
Contact exports completed
Call records reviewed
Transaction history preserved
Credits resolved
Telephone numbers reviewed
Team members handled
Integrations disconnected
Deletion formally authorized

Chapter Completion

At the end of this chapter, the user should understand how to log in with Email and Password, use Remember Me safely, complete Turnstile, respond to login throttling, request a Password-reset link, create a new Password, confirm the Password for sensitive Settings, and update Full Name and Email Address.

The user should understand that Email-verification routes and pages exist, but the current User model does not implement Laravel’s required Email-verification contract. The verified route middleware is therefore not reliably enforcing Email verification, and the current production log mail driver prevents ordinary inbox delivery of Laravel-generated reset and verification Emails.

The user should understand how to change the Password, delete a Customer or Administrator account, and recognize that the Agent role can see the shared deletion component even though the deletion route does not authorize Agents.

The user should understand the intended Two-Factor Authentication process, including the six-digit authenticator challenge and one-time recovery codes. The user should also recognize the current implementation gap in which the Two-Factor page expects QR and recovery-code properties that its controller does not provide.

The user should understand the difference between:

Unverified
Basic KYC
Business KYC

and the statuses:

Pending
Approved
Rejected
Expired

The user should know how to complete Basic Phone verification using an E.164 Phone Number, a six-digit SMS code, a ten-minute expiration period, and up to five attempts.

The user should also know how to submit Business information, an ID document, a Business registration document, and a Selfie with ID; why each uploaded file is currently limited to 5 MB; and why Business approval can appear without an approval or expiration date in the current build.

Most importantly, the user should understand the current KYC access rule:

Customer access to KYC-protected functions
=
Approved KYC record
+
Verification not expired

The displayed seven-day grace period does not currently override that middleware requirement.

Write Your Comment