Skip to content

laravel-enso/core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,538 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Core

License Stable Downloads PHP Issues Merge Requests

Description

Core is the backend shell of a Laravel Enso application.

It aggregates the packages required for a standard Enso installation, registers the framework-level service providers and middleware stack, exposes the base authentication and SPA endpoints, builds the frontend boot state, manages user preferences, publishes shared assets, registers core mail previews, and provides a handful of operational commands used across Enso projects.

It is the package that turns the rest of the Enso ecosystem into a coherent application runtime.

Installation

This package is intended to be installed as the main backend dependency of an Enso application:

composer require laravel-enso/core

After installation, run the standard setup steps:

php artisan migrate
php artisan db:seed

If you want to publish the package resources, the relevant tags are:

php artisan vendor:publish --tag=core-config
php artisan vendor:publish --tag=core-seeders
php artisan vendor:publish --tag=core-assets

The package automatically:

  • loads API routes
  • loads migrations
  • loads core mail views
  • registers core mail previews through laravel-enso/mails
  • registers Enso service providers
  • configures the Eloquent factory resolver for package models

Features

  • Provides the base Enso API shell, including guest meta, SPA home state, auth routes, and preferences routes.
  • Provides a read-only System > Logins table for login history, with user and datetime interval filtering.
  • Registers the core middleware group used by authenticated Enso routes.
  • Configures password policy defaults from enso.auth.password.
  • Builds the SPA boot state from state providers discovered across Enso packages.
  • Persists per-user global and route-level preferences.
  • Publishes shared image assets.
  • Requires laravel-enso/mails for shared mail layouts, components, and preview registration.
  • Registers reset and set password mail notifications and previews in the shared Enso mail preview catalog through a dedicated MailServiceProvider.
  • Registers operational commands for version reporting, storage resets, preference resets, preference upgrades, and app-update notifications.
  • Integrates login tracking, password reset flows, websocket support, route authorization, localisation, impersonation, and action logging through the wider Enso stack.

Usage

The package exposes the guest meta endpoint:

route('meta');

Authenticated clients bootstrap the SPA state through:

route('core.home.index');

Preferences can be updated per route or globally through:

route('core.preferences.store', ['route' => 'administration.users.index']);
route('core.preferences.reset');

Useful built-in commands:

php artisan enso:version
php artisan enso:preferences:reset
php artisan enso:preferences:update-global
php artisan enso:storage:reset
php artisan enso:announce-app-update

The frontend counterpart for the API shell and shared UI runtime lives in the Enso UI package:

::: warning Note core.home.index does not return a Blade page. It returns the merged state payload produced by the Enso state builder, grouped by frontend store. :::

API

Routes

Guest / auth endpoints:

  • GET /api/meta
  • POST /api/login
  • POST /api/password/email
  • POST /api/password/reset
  • POST /api/logout

Authenticated core endpoints:

  • GET /api/core/home
  • PATCH /api/core/preferences/store/{route?}
  • POST /api/core/preferences/reset/{route?}

Authenticated system login table endpoints:

  • GET /api/system/logins/initTable
  • GET /api/system/logins/tableData
  • GET /api/system/logins/exportExcel

Middleware

Aliases:

  • verify-active-state
  • xss-sanitizer
  • ensure-frontent-requests-are-stateful

core middleware group:

  • VerifyActiveState
  • ActionLogger
  • Impersonate
  • VerifyRouteAccess
  • SetLanguage

State System

State is built through:

  • LaravelEnso\Core\Services\State\Builder
  • LaravelEnso\Core\Services\State\Source

It scans configured vendors from:

  • config('enso.state.vendors')

Built-in state providers include:

  • Meta
  • Preferences
  • Themes
  • Websockets

Preferences

Model:

  • LaravelEnso\Core\Models\Preferences

Capabilities:

  • route-level local preferences
  • global preferences
  • theme updates
  • language updates
  • reset to factory defaults

Commands

  • enso:version (works with a github token, if neccesary)
  • enso:preferences:reset
  • enso:preferences:update-global
  • enso:storage:reset
  • enso:announce-app-update

Events and Notifications

Events:

  • LaravelEnso\Core\Events\Login
  • LaravelEnso\Core\Events\AppUpdate

Notifications:

  • PasswordExpiresSoon
  • ResetPassword
  • SetPassword

Password helpers on the user model:

  • sendResetPasswordEmail()
  • sendSetPasswordEmail()

Login History

Model:

  • LaravelEnso\Core\Models\Login

The package records successful logins and exposes them through the system.logins Enso table. The table includes user, IP, user agent, and login datetime columns. Login history is read-only and supports filtering by user and by created_at interval.

Upgrade support:

  • LaravelEnso\Core\Upgrades\LoginCreatedAtIndex adds the logins.created_at index for existing installations.

Depends On

Required Enso packages:

Framework and external dependencies:

Contributions

are welcome. Pull requests are great, but issues are good too.

Thank you to all the people who already contributed to Enso!

About

Laravel Enso main dependecy aggregator

Topics

Resources

License

Stars

34 stars

Watchers

7 watching

Forks

Packages

 
 
 

Contributors