Account Area

General

General

How do I add a Custom CSS File to the account area?

You can add a custom CSS file to the account area by creating a file named account-area.css in your public directory.

Example contents where we're overriding the default colours:

:root {
    --bpa-color-primary: deepskyblue;
    --bpa-color-success: forestgreen;
    --bpa-color-warning: darkorange;
    --bpa-color-error: red;
    --bpa-color-helpbox: aliceblue;
    --bpa-color-content-background: ghostwhite;
}

You can also place this file in your theme if preferred.

General

How can I configure the account area?

ENV Variables

Variable
Default
Description
AERO_ACCOUNT_AREA_THEME aerocommerce/account-area Defines the namespace that should be registered as having the views and resources for the account area. This should only be changed under unique circumstances.
AERO_ACCOUNT_AREA_LAYOUT layouts.main Defines the layout that the account area views use. If the layout provided doesn’t exist, account-area::layouts.blank will be used.

Config File

If you would like to change any of the config values you can publish the config file by running:

php artisan vendor:publish --provider="Aero\AccountArea\ServiceProvider"

Once the file is published you will be able to edit it through the config php file created at /config/aero/account-area.php.

date_format

This defines the format used when displaying any dates in the account area. js F Y by default, e.g. 25/09/2026.

subscription_status_state_class

Maps subscription status states to specific colors, e.g. active => success. So when a subscription has a status with active state, the orb will have the class bpa-indicator--success (green).

order_status_state_class

Maps order status states to specific colors, e.g. active => success. So when an order has a status with active state, the orb will have the class bpa-indicator--success (green).

order_status_radio_options

This defines the order statuses shown in the radio options on the orders page and what order status states they map to.

order_years

This defines the number of previous years to display in the years dropdown on the orders page.

page_sections

This defines the sections that make up each page by default. You can add/edit/remove sections through code, it is not necessary to adjust these values usually.

form_sections

This defines the sections that make up each form by default. You can add/edit/remove sections through code, it is not necessary to adjust these values usually.

slots

This defines the views that are injected into slots by default.

This defines the links that should be in the navbar by default. You can add/edit/remove links through code, it is not necessary to adjust these values usually.

Slots

Slots

What are the available account area slots?

Navbar

Addresses

Orders

Subscriptions

Slots

How do I inject into account area slots?

Account Area Slots allow you to add content within existing account area pages. The examples below show how to inject a view into the orders page.

For a simple use case, simply provide a view:

\Aero\AccountArea\AccountAreaSlot::inject('order.header.buttons', 'acme::button');

For more advanced use cases, instead of passing a view directly, you can provide a callback function:

\Aero\AccountArea\AccountAreaSlot::inject('order.header.buttons', function ($data) {
    // add custom variables to the $data array

    return view('acme::button', $data);
});

These injections should typically sit inside the boot method of a Service Provider

Pages

Pages

What are the default pages in the account area?

Class
Route
Description
AccountLoginPage login A page where users can log in.
AccountRegisterPage register A page where guests can register.
AccountPasswordForgotPage password.forgot A page where users can send a password reset email to their email.
AccountPasswordResetPage password.reset A page where users can reset their password.
AccountOrdersPage account.orders A page that lists all of a user's orders and lets them filter/search.
AccountOrderViewPage account.view-order A page that shows more information about an order.
AccountAddressesPage account.addresses A page that lists all of the users addresses.
AccountAddressNewPage account.new-address A page where users can create a new address,
AccountAddressEditPage account.edit-address A page where users can edit one of their addresses.
AccountDetailsPage account.details A page where users can update their account details and change their password.
AccountInvoicePage account.view-invoice A simple invoice for an order - currently not linked to from anywhere.
AccountOverviewPage account The first page a user sees after they log in - currently redirects to the orders page.

The above classes reside in the Aero\AccountArea\Http\Responses namespace.

Pages

How do I create a custom page in the account area?

To create and register a custom account area page you need to use the Aero\AccountArea\AccountArea::registerPage() helper method.

This method expects you to pass a class that extends Aero\AccountArea\AccountAreaPage:

\Aero\AccountArea\AccountArea\AccountArea::registerPage(\Aerocargo\Acme\CustomPage::class);

Your account area page class must implement the title(), route(), and routeName() methods that all should return a string.

It’s common practice to use Laravel Localization for the title and route so that they can change depending on the language used. You should not use this for the routeName as the routeName is used in code to refer to the route and therefore should never change.

You should also define a protected static steps and middleware array and a protected sections array:

For example, here's how aerocargo/wishlists defines its page:

class WishlistPage extends \Aero\AccountArea\AccountAreaPage
{
    use \Aero\AccountArea\Traits\HasAccountAreaLink;

    protected static $steps = [
        Steps\AttachWishlist::class,
    ];

    protected static $middleware = [
        'account',
    ];

    protected $sections = [
        'navbar' => 'account-area::sections.navbar',
        'page-header' => 'account-area::partials.page-header',
        'wishlist' => 'wishlist::account-area-wishlist',
    ];

    static function title(): string
    {
        return __('My Wishlist');
    }

    static function route(): string
    {
        return __('wishlist');
    }

    static function routeName(): string
    {
        return 'account.wishlist';
    }

    public static function toLink(): array
    {
        return [
            'icon' => 'wishlist::icons.heart',
            'text' => 'Your Wishlist',
        ];
    }
}

You can add your page to the navbar using the addLink() method:

\Aero\AccountArea\AccountAreaPage::extend(function (\Aero\AccountArea\AccountAreaPage $page, \Closure $next) {
    $page->addLink(\Aerocargo\Wishlist\Http\Responses\WishlistPage::class);

    return $next($page);
});
Pages

How do I add a section to an existing account area page?

You can use the addSection() method(s) to add a section to an existing form:

\Aero\AccountArea\Http\Responses\AccountLoginPage::extend(function (\Aero\AccountArea\Http\Responses\AccountLoginPage $page, \Closure $next) {
    // Add it as the first section
    $page->addSection('acme', 'acme::section');

    // Add it after a specific section
    $page->addSectionAfter('acme', 'acme::custom', 'login-form');
  
    // Add it before a specific section
    $page->addSectionBefore('acme', 'acme::custom', 'login-form');
  
    return $next($page);
});

If you need to see the keys of the existing columns in order to position your new column appropriately, you can dump them out:

\Aero\AccountArea\Http\Responses\AccountLoginPage::extend(function (\Aero\AccountArea\Http\Responses\AccountLoginPage $page, \Closure $next) {
    dd($page->getSections()->keys()->toArray());
  
    return $next($page);
});

 

Sets

Sets

What are the default sets in the account area?

Class
Method
Route
AccountLoginSet Post login
AccountLogoutSet Post logout
AccountRegisterSet Post register
AccountPasswordForgotSet Post password.forgot
AccountPasswordResetSet Post password.reset
AccountAddressNewSet Post account.new-address
AccountAddressEditSet Put account.edit-address
AccountAddressMakeDefaultSet Put account.make-default-address
AccountDetailsSet Put account.details
AccountAddressDelete Delete account.delete-address

The above classes reside in the Aero\AccountArea\Http\Responses namespace.

Sets

How do I create a custom set in the account area?

Sets are used for POST/PUT/DELETE requests.

To create and register a custom account area set you need to use on of the following methods:

These methods expects you to pass a class that extends Aero\AccountArea\AccountAreaSet.

\Aero\AccountArea\AccountArea\AccountArea::registerDelete(\Aerocargo\Acme\CustomDelete::class);

Your account area set class must implement the route() and routeName() methods that all should return a string.

You should also define a protected static steps and middleware array:

For example, here's how aerocargo/wishlists defines its delete:

class WishlistDelete extends \Aero\AccountArea\AccountAreaSet
{
    protected static $steps = [
        Steps\DeleteWishlist::class,
    ];

    protected static $middleware = [
        'account',
    ];

    static function route(): string
    {
        return __('wishlist');
    }

    static function routeName(): string
    {
        return 'account.wishlist';
    }
}

 

Forms

Forms

What are the default forms in the account area?

Class
Description
AccountAddressEditForm The edit address form.
AccountAddressNewForm The new address form.
AccountDetailsForm The account details form.
AccountLoginForm The login form.
AccountPasswordForgotForm The forgotten password form.
AccountPasswordResetForm The password reset form.
AccountRegisterForm The register form.

The above classes reside in the Aero\AccountArea\Http\Forms namespace.

Forms

How do I create a custom form in the account area?

To create a form you need to create a class that extends the \Aero\AccountArea\AccountAreaForm class:

For example, here's how the login form is defined:

class LoginForm extends \Aero\AccountArea\AccountAreaForm
{
    protected $sections = [
        'email' => 'account-area::partials.email-input',
        'password' => 'account-area::partials.password-input',
        'forgot-password' => 'account-area::partials.login-forgot-password-link',
        'submit' => 'account-area::partials.login-button',
    ];

    protected function method(): string
    {
        return 'post';
    }

    protected function route($data): string
    {
        return route('login');
    }
}

Don't forget to register your form:

\Aero\AccountArea\AccountArea::registerForm(MyForm::class);