aboutsummaryrefslogtreecommitdiffhomepage
path: root/main/app/sprinkles/extend-user/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/app/sprinkles/extend-user/src')
-rw-r--r--main/app/sprinkles/extend-user/src/Controller/MemberController.php123
-rw-r--r--main/app/sprinkles/extend-user/src/Database/Migrations/v400/MembersTable.php33
-rw-r--r--main/app/sprinkles/extend-user/src/Database/Models/Member.php118
-rw-r--r--main/app/sprinkles/extend-user/src/Database/Models/MemberAux.php20
-rw-r--r--main/app/sprinkles/extend-user/src/Database/Scopes/MemberAuxScope.php35
-rw-r--r--main/app/sprinkles/extend-user/src/ServicesProvider/ServicesProvider.php25
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;
- });
- }
-}