Laravel 13 authentication + RBAC project with:
- 3-step registration
- User ID based login
- Spatie role/permission management
- Unified dashboard with permission-based sidebar and routes
- Profile view/edit pages
- Dark/Light theme switcher
- PHP 8.3+
- Composer
- Node.js + npm
- MySQL/MariaDB (or SQLite for tests)
-
Install dependencies
composer installnpm install
-
Create environment file
cp .env.example .env
-
Configure
.envAPP_URLDB_*values- Optional mail settings (
MAIL_*)
-
Generate key
php artisan key:generate
-
Run migrations + seeders
php artisan migrate --seed
-
Build frontend assets
npm run build
-
Start app
php artisan serve
- Register at
/register(3 steps). - A random
userIDis generated (e.g.VX123456). - User gets temporary credentials flow and sets password via reset screen.
- Login via
/loginusinguserID+ password.
The app seeds baseline permissions and roles:
-
Permissions:
dashboard.viewusers.view,users.manageroles.view,roles.managepermissions.view,permissions.manageassignments.manage
-
Roles:
admin(all baseline permissions)user(dashboard.viewonly)
Newly registered users are assigned the user role automatically.
/dashboard-> Dashboard home (dashboard.view)/dashboard/profile-> Profile view/dashboard/profile/edit-> Profile edit/dashboard/roles-> Role management (roles.view/manage)/dashboard/permissions-> Permission management (permissions.view/manage)/dashboard/users-> User access management (users.view,assignments.manage)
Admin credentials are now defined directly in:
database/seeders/AdminUserSeeder.php
Default seeded values:
- Email:
admin@example.com - User ID:
VX000001 - Password:
Admin12345
Run seed:
php artisan db:seed
- DaisyUI drawer sidebar for dashboard pages.
- Theme toggle (dark/light) stored in
localStorage.
Run all tests:
php artisan test
Run a specific test:
php artisan test --filter=DashboardAccessTest
- If you changed role/permission seed values, reseed with:
php artisan migrate:fresh --seed
database/sql/vx_auth.sqlmay be out of date compared to latest migrations.