Allow users to see their own organisation pages
This commit is contained in:
76
src/Database/Models/User.php
Normal file
76
src/Database/Models/User.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* AVSDev UF Organisations (https://avsdev.uk)
|
||||
*
|
||||
* @link https://git.avsdev.uk/avsdev/sprinkle-organisations
|
||||
* @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License)
|
||||
*/
|
||||
|
||||
namespace UserFrosting\Sprinkle\Organisations\Database\Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use UserFrosting\Sprinkle\Account\Database\Models\Interfaces\UserInterface;
|
||||
use UserFrosting\Sprinkle\Account\Database\Models\User as UFUser;
|
||||
use UserFrosting\Sprinkle\Account\Facades\Password;
|
||||
use UserFrosting\Sprinkle\Core\Database\Models\Model;
|
||||
use UserFrosting\Sprinkle\Core\Facades\Debug;
|
||||
|
||||
/**
|
||||
* User Class.
|
||||
*
|
||||
* Extends the UF User object by adding organisation membership
|
||||
*
|
||||
* @author Craig Williams (https://avsdev.uk)
|
||||
*/
|
||||
class User extends UFUser
|
||||
{
|
||||
/**
|
||||
* Get all organisations this user is a member of.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
||||
*/
|
||||
public function organisations()
|
||||
{
|
||||
/** @var \UserFrosting\Sprinkle\Core\Util\ClassMapper $classMapper */
|
||||
$classMapper = static::$ci->classMapper;
|
||||
|
||||
return $this->belongsToMany($classMapper->getClassMapping('organisation'), 'organisation_members', 'user_id', 'organisation_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete this member from the database, along with any links to organisations.
|
||||
*
|
||||
* @param bool $hardDelete Set to true to completely remove the member and all associated objects.
|
||||
*
|
||||
* @return bool true if the deletion was successful, false otherwise.
|
||||
*/
|
||||
public function delete($hardDelete = false)
|
||||
{
|
||||
/** @var \UserFrosting\Sprinkle\Core\Util\ClassMapper $classMapper */
|
||||
$classMapper = static::$ci->classMapper;
|
||||
|
||||
if ($hardDelete) {
|
||||
// TODO: remove user from organisations?
|
||||
}
|
||||
|
||||
return parent::delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* Joins the user's organisations directly, so we can do things like sort, search, paginate, etc.
|
||||
*
|
||||
* @param Builder $query
|
||||
*
|
||||
* @return Builder
|
||||
*/
|
||||
public function scopeJoinOrganisations($query)
|
||||
{
|
||||
$query = $query->leftJoin('organisation_members', 'organisation_members.user_id', '=', 'users.id');
|
||||
$query = $query->leftJoin('organisations', 'organisations.id', '=', 'organisation_members.organisation_id');
|
||||
|
||||
return $query;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user