melonsmasher / ethos-laravel
A Laravel package that utilizes ethos-php to interact with the Ellucian Ethos API.
Requires
- ext-json: *
- melonsmasher/ethos-php: ^0.1.2
This package is auto-updated.
Last update: 2024-10-19 23:48:47 UTC
README
Ellucian Ethos client library, built upon MelonSmasher/ethos-php, with enhancements for Laravel.
Installation
Pull the library into your project:
composer require melonsmasher/ethos-laravel
Publish ethos.php
to the config directory:
php artisan vendor:publish --tag ethos
API Docs
Complete API docs can be found here.
Features
-
Ethos settings are read from
.env
. -
Ethos sessions are cached.
-
Efficiently handles authentication.
- New authenticated sessions are created before the previous session expires.
-
Traits for
316
Ethos data models, related by using the Ethos object ID. -
Trait model responses can be cached for a configurable amount of time.
Config Options
# Your Ethos API key / refresh token. ETHOS_SECRET=YourEthosApiKey # The base url that should be used to connect to Ethos. If omitted https://integrate.elluciancloud.com is used. ETHOS_BASE_URL=https://integrate.elluciancloud.com # The ERP backend that is connected to Ethos. Must be either 'banner' or 'colleague'. If nothing is supplied 'colleague' is used. ETHOS_ERP_BACKEND=banner # How long trait responses should remain in the cache in seconds. Set to 0 to disable. If omitted this option is disabled. ETHOS_TRAIT_CACHE_TTL=300
Usage/Examples
Using Helper Function
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use MelonSmasher\EthosPHP\Student\CoursesClient; class ExampleController extends Controller { public function index() { $ethos = getEthosSession(); $courses = new CoursesClient($ethos); return $courses->read()->toJson(); } }
Using Facade
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use MelonSmasher\EthosPHP\Laravel\Facade\Ethos; use MelonSmasher\EthosPHP\Foundation\BuildingsClient; class ExampleController extends Controller { public function index() { $ethos = Ethos::get(); $buildings = new BuildingsClient($ethos); return $buildings->read()->data(); } }
Traits
HasEthosPersonModel
An example of how to use the HasEthosPersonModel
trait on a Laravel User model.
User migration:
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('ethos_person_id')->unique(); // Add this to your user's model and fill it with the related Ethos Person ID. $table->string('username'); $table->string('name'); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } }
User model:
<?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; use MelonSmasher\EthosPHP\Laravel\Traits\Foundation\HasEthosPersonModel; class User extends Authenticatable { use HasEthosPersonModel; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'ethos_person_id', // <--- This attribute must be present on your model. 'username', 'name' ]; }
Example usage :
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Model\User; class MyController extends Controller { /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('auth'); } /** * Shows a user's Ethos Person Model */ public function showUserAccount($id) { $user = User::findOrFail($id); return $user->ethosPerson(); // Returns the Ethos account } }
Dev Setup
Install PHIVE
Install build tools
phive install
Install composer requirements
./composer install