diff options
Diffstat (limited to 'main/app/sprinkles/extend-user/src')
6 files changed, 0 insertions, 354 deletions
diff --git a/main/app/sprinkles/extend-user/src/Controller/MemberController.php b/main/app/sprinkles/extend-user/src/Controller/MemberController.php deleted file mode 100644 index 0fcc481..0000000 --- a/main/app/sprinkles/extend-user/src/Controller/MemberController.php +++ /dev/null @@ -1,123 +0,0 @@ -<?php - -namespace UserFrosting\Sprinkle\ExtendUser\Controller; - -use Illuminate\Database\Capsule\Manager as Capsule; -use Psr\Http\Message\ResponseInterface as Response; -use Psr\Http\Message\ServerRequestInterface as Request; -use UserFrosting\Sprinkle\Admin\Controller\UserController; -use UserFrosting\Sprinkle\Core\Facades\Debug; -use UserFrosting\Support\Exception\ForbiddenException; - -class MemberController extends UserController -{ - /** - * Renders a page displaying a user's information, in read-only mode. - * - * This checks that the currently logged-in user has permission to view the requested user's info. - * It checks each field individually, showing only those that you have permission to view. - * This will also try to show buttons for activating, disabling/enabling, deleting, and editing the user. - * This page requires authentication. - * Request type: GET - */ - public function pageInfo($request, $response, $args) { - $user = $this->getUserFromParams($args); - - // If the user no longer exists, forward to main user listing page - if (!$user) { - $usersPage = $this->ci->router->pathFor('uri_users'); - return $response->withRedirect($usersPage, 404); - } - - /** @var UserFrosting\Sprinkle\Account\Authorize\AuthorizationManager $authorizer */ - $authorizer = $this->ci->authorizer; - - /** @var UserFrosting\Sprinkle\Account\Database\Models\User $currentUser */ - $currentUser = $this->ci->currentUser; - - // Access-controlled page - if (!$authorizer->checkAccess($currentUser, 'uri_user', [ - 'user' => $user - ])) { - throw new ForbiddenException(); - } - - /** @var UserFrosting\Config\Config $config */ - $config = $this->ci->config; - - // Get a list of all locales - $locales = $config->getDefined('site.locales.available'); - - // Determine fields that currentUser is authorized to view - $fieldNames = ['user_name', 'name', 'email', 'locale', 'group', 'roles', 'address']; - - // Generate form - $fields = [ - // Always hide these - 'hidden' => ['theme'] - ]; - - // Determine which fields should be hidden - foreach ($fieldNames as $field) { - if (!$authorizer->checkAccess($currentUser, 'view_user_field', [ - 'user' => $user, - 'property' => $field - ])) { - $fields['hidden'][] = $field; - } - } - - // Determine buttons to display - $editButtons = [ - 'hidden' => [] - ]; - - if (!$authorizer->checkAccess($currentUser, 'update_user_field', [ - 'user' => $user, - 'fields' => ['name', 'email', 'locale'] - ])) { - $editButtons['hidden'][] = 'edit'; - } - - if (!$authorizer->checkAccess($currentUser, 'update_user_field', [ - 'user' => $user, - 'fields' => ['flag_enabled'] - ])) { - $editButtons['hidden'][] = 'enable'; - } - - if (!$authorizer->checkAccess($currentUser, 'update_user_field', [ - 'user' => $user, - 'fields' => ['flag_verified'] - ])) { - $editButtons['hidden'][] = 'activate'; - } - - if (!$authorizer->checkAccess($currentUser, 'update_user_field', [ - 'user' => $user, - 'fields' => ['password'] - ])) { - $editButtons['hidden'][] = 'password'; - } - - if (!$authorizer->checkAccess($currentUser, 'update_user_field', [ - 'user' => $user, - 'fields' => ['roles'] - ])) { - $editButtons['hidden'][] = 'roles'; - } - - if (!$authorizer->checkAccess($currentUser, 'delete_user', [ - 'user' => $user - ])) { - $editButtons['hidden'][] = 'delete'; - } - - return $this->ci->view->render($response, 'pages/user.html.twig', [ - 'user' => $user, - 'locales' => $locales, - 'fields' => $fields, - 'tools' => $editButtons - ]); - } -} diff --git a/main/app/sprinkles/extend-user/src/Database/Migrations/v400/MembersTable.php b/main/app/sprinkles/extend-user/src/Database/Migrations/v400/MembersTable.php deleted file mode 100644 index fe5aa93..0000000 --- a/main/app/sprinkles/extend-user/src/Database/Migrations/v400/MembersTable.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -namespace UserFrosting\Sprinkle\ExtendUser\Database\Migrations\v400; - -use UserFrosting\System\Bakery\Migration; -use Illuminate\Database\Schema\Blueprint; -use Illuminate\Database\Schema\Builder; - -class MembersTable extends Migration -{ - public $dependencies = [ - '\UserFrosting\Sprinkle\Account\Database\Migrations\v400\UsersTable' - ]; - - public function up() { - if (!$this->schema->hasTable('members')) { - $this->schema->create('members', function (Blueprint $table) { - $table->increments('id'); - $table->string('city', 255)->nullable(); - $table->string('country', 255)->nullable(); - - $table->engine = 'InnoDB'; - $table->collation = 'utf8_unicode_ci'; - $table->charset = 'utf8'; - $table->foreign('id')->references('id')->on('users'); - }); - } - } - - public function down() { - $this->schema->drop('members'); - } -} diff --git a/main/app/sprinkles/extend-user/src/Database/Models/Member.php b/main/app/sprinkles/extend-user/src/Database/Models/Member.php deleted file mode 100644 index 094d14c..0000000 --- a/main/app/sprinkles/extend-user/src/Database/Models/Member.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - -namespace UserFrosting\Sprinkle\ExtendUser\Database\Models; - -use UserFrosting\Sprinkle\Account\Database\Models\User; -use UserFrosting\Sprinkle\ExtendUser\Database\Models\MemberAux; -use UserFrosting\Sprinkle\ExtendUser\Database\Scopes\MemberAuxScope; - -trait LinkMemberAux -{ - /** - * The "booting" method of the trait. - * - * @return void - */ - protected static function bootLinkMemberAux() { - /** - * Create a new MemberAux if necessary, and save the associated member data every time. - */ - static::saved(function ($member) { - $member->createAuxIfNotExists(); - - if ($member->auxType) { - // Set the aux PK, if it hasn't been set yet - if (!$member->aux->id) { - $member->aux->id = $member->id; - } - - $member->aux->save(); - } - }); - } -} - -class Member extends User -{ - use LinkMemberAux; - - protected $fillable = [ - 'user_name', - 'first_name', - 'last_name', - 'email', - 'locale', - 'theme', - 'group_id', - 'flag_verified', - 'flag_enabled', - 'last_activity_id', - 'password', - 'deleted_at', - 'city', - 'country' - ]; - - protected $auxType = 'UserFrosting\Sprinkle\ExtendUser\Database\Models\MemberAux'; - - /** - * Required to be able to access the `aux` relationship in Twig without needing to do eager loading. - * @see http://stackoverflow.com/questions/29514081/cannot-access-eloquent-attributes-on-twig/35908957#35908957 - */ - public function __isset($name) { - if (in_array($name, [ - 'aux' - ])) { - return TRUE; - } else { - return parent::__isset($name); - } - } - - /** - * Globally joins the `members` table to access additional properties. - */ - protected static function boot() { - parent::boot(); - - static::addGlobalScope(new MemberAuxScope); - } - - /** - * Custom mutator for Member property - */ - public function setCityAttribute($value) { - $this->createAuxIfNotExists(); - - $this->aux->city = $value; - } - - /** - * Custom mutator for Member property - */ - public function setCountryAttribute($value) { - $this->createAuxIfNotExists(); - - $this->aux->country = $value; - } - - /** - * Relationship for interacting with aux model (`members` table). - */ - public function aux() { - return $this->hasOne($this->auxType, 'id'); - } - - /** - * If this instance doesn't already have a related aux model (either in the db on in the current object), then create one - */ - protected function createAuxIfNotExists() { - if ($this->auxType && !count($this->aux)) { - // Create aux model and set primary key to be the same as the main user's - $aux = new $this->auxType; - - // Needed to immediately hydrate the relation. It will actually get saved in the bootLinkMemberAux method. - $this->setRelation('aux', $aux); - } - } -} diff --git a/main/app/sprinkles/extend-user/src/Database/Models/MemberAux.php b/main/app/sprinkles/extend-user/src/Database/Models/MemberAux.php deleted file mode 100644 index 6612586..0000000 --- a/main/app/sprinkles/extend-user/src/Database/Models/MemberAux.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -namespace UserFrosting\Sprinkle\ExtendUser\Database\Models; - -use UserFrosting\Sprinkle\Core\Database\Models\Model; - -class MemberAux extends Model -{ - public $timestamps = FALSE; - - /** - * @var string The name of the table for the current model. - */ - protected $table = 'members'; - - protected $fillable = [ - 'city', - 'country' - ]; -} diff --git a/main/app/sprinkles/extend-user/src/Database/Scopes/MemberAuxScope.php b/main/app/sprinkles/extend-user/src/Database/Scopes/MemberAuxScope.php deleted file mode 100644 index 624c4f6..0000000 --- a/main/app/sprinkles/extend-user/src/Database/Scopes/MemberAuxScope.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -namespace UserFrosting\Sprinkle\ExtendUser\Database\Scopes; - -use Illuminate\Database\Eloquent\Scope; -use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\Builder; - -class MemberAuxScope implements Scope -{ - /** - * Apply the scope to a given Eloquent query builder. - * - * @param \Illuminate\Database\Eloquent\Builder $builder - * @param \Illuminate\Database\Eloquent\Model $model - * @return void - */ - public function apply(Builder $builder, Model $model) { - $baseTable = $model->getTable(); - // Hardcode the table name here, or you can access it using the classMapper and `getTable` - $auxTable = 'members'; - - // Specify columns to load from base table and aux table - $builder->addSelect( - "$baseTable.*", - "$auxTable.city as city", - "$auxTable.country as country" - ); - - // Join on matching `member` records - $builder->leftJoin($auxTable, function ($join) use ($baseTable, $auxTable) { - $join->on("$auxTable.id", '=', "$baseTable.id"); - }); - } -} diff --git a/main/app/sprinkles/extend-user/src/ServicesProvider/ServicesProvider.php b/main/app/sprinkles/extend-user/src/ServicesProvider/ServicesProvider.php deleted file mode 100644 index 22d8c7b..0000000 --- a/main/app/sprinkles/extend-user/src/ServicesProvider/ServicesProvider.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php - -// In /app/sprinkles/site/src/ServicesProvider/ServicesProvider.php - -namespace UserFrosting\Sprinkle\ExtendUser\ServicesProvider; - -class ServicesProvider -{ - /** - * Register extended user fields services. - * - * @param Container $container A DI container implementing ArrayAccess and container-interop. - */ - public function register($container) { - /** - * Extend the 'classMapper' service to register model classes. - * - * Mappings added: Member - */ - $container->extend('classMapper', function ($classMapper, $c) { - $classMapper->setClassMapping('user', 'UserFrosting\Sprinkle\ExtendUser\Database\Models\Member'); - return $classMapper; - }); - } -} |