Get support for calebporzio/onboard
If you're new to LTH, please see our FAQ for more information on what it is we do.
Support Options
Unfortunately, there are currently no active helpers for this repository on the platform. Until they become available, we reccomend the following actions:
View Open IssuesTake a look to see if anyone else has experienced the same issue as you and if they managed to solve it.
Open an IssueMake sure to read any relevant guidelines for opening issues on this repo before posting a new issue.
Sponsor directlyCheck out the page and see if there are any options to sponsor this project or it's developers directly.
calebporzio/onboard
Note: This package has been archived, you should use it's successor "Laravel Onboard" instead: https://github.com/spatie/laravel-onboard
Onboard
A Laravel package to help track user onboarding steps.
Installation:
- Install the package via composer
composer require calebporzio/onboard
- Register the Service Provider and Facade in
config/app.php
'providers' => [
...
Calebporzio\Onboard\OnboardServiceProvider::class,
'aliases' => [
...
Calebporzio\Onboard\OnboardFacade::class,
- Add the
Calebporzio\Onboard\GetsOnboarded
trait to your app's User model
class User extends Model
{
use \Calebporzio\Onboard\GetsOnboarded;
...
Example Configuration:
Configure your steps in your App\Providers\AppServiceProvider.php
use App\User;
use Calebporzio\Onboard\OnboardFacade;
class AppServiceProvider extends ServiceProvider
{
// ...
public function boot()
{
OnboardFacade::addStep('Complete Profile')
->link('/profile')
->cta('Complete')
->completeIf(function (User $user) {
return $user->profile->isComplete();
});
OnboardFacade::addStep('Create Your First Post')
->link('/post/create')
->cta('Create Post')
->completeIf(function (User $user) {
return $user->posts->count() > 0;
});
Usage:
Now you can access these steps along with their state wherever you like. Here is an example blade template:
@if (auth()->user()->onboarding()->inProgress())
<div>
@foreach (auth()->user()->onboarding()->steps as $step)
<span>
@if($step->complete())
<i class="fa fa-check-square-o fa-fw"></i>
<s>{{ $loop->iteration }}. {{ $step->title }}</s>
@else
<i class="fa fa-square-o fa-fw"></i>
{{ $loop->iteration }}. {{ $step->title }}
@endif
</span>
<a href="{{ $step->link }}" {{ $step->complete() ? 'disabled' : '' }}>
{{ $step->cta }}
</a>
@endforeach
</div>
@endif
Check out all the available features below:
$onboarding = Auth::user()->onboarding();
$onboarding->inProgress();
$onboarding->finished();
$onboarding->steps()->each(function($step) {
$step->title;
$step->cta;
$step->link;
$step->complete();
$step->incomplete();
});
Definining custom attributes and accessing them:
// Defining the attributes
OnboardFacade::addStep('Step w/ custom attributes')
->attributes([
'name' => 'Waldo',
'shirt_color' => 'Red & White',
]);
// Accessing them
$step->name;
$step->shirt_color;
Example middleware
If you want to ensure that your user is redirected to the next unfinished onboarding step, whenever they access your web application, you can use the following middleware as a starting point:
<?php
namespace App\Http\Middleware;
use Auth;
use Closure;
class RedirectToUnfinishedOnboardingStep
{
public function handle($request, Closure $next)
{
if (auth()->user()->onboarding()->inProgress()) {
return redirect()->to(
auth()->user()->onboarding()->nextUnfinishedStep()->link
);
}
return $next($request);
}
}
Quick tip: Don't add this middleware to routes that update the state of the onboarding steps, your users will not be able to progress because they will be redirected back to the onboarding step.
Our Mission
We want to make open source more sustainable. The entire platform was born from this and everything we do is in aid of this.
From the Blog
Interesting Articles
-
Generating income from open source
Jun 23 • 8 min read
-
2023 State of OSS
Apr 23 • 45 min read ★
-
A funding experiment...
Aug 19 • 10 min read
-
But You Said I could
Aug 19 • 2 min read
Thank you for checking out LiveTechHelper |
2025 © lth-dev incorporated
p-e622a1a2