From c38cd0c995889e459a7ccbc0669b260e38f13b38 Mon Sep 17 00:00:00 2001 From: Andrey Kutejko Date: Mon, 6 Apr 2015 20:30:24 +0300 Subject: [PATCH] auth admin: allow to override definition of extra fields --- ipf/auth/admin.php | 17 +++-------------- ipf/auth/models.php | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/ipf/auth/admin.php b/ipf/auth/admin.php index 9a6df25..380dc46 100644 --- a/ipf/auth/admin.php +++ b/ipf/auth/admin.php @@ -75,19 +75,6 @@ class UserForm extends \IPF_ObjectForm 'help_text' => __('Designates that this user has all permissions without explicitly assigning them.'), )); - $r = new \ReflectionClass(\PFF\Container::auth()->userModel); - $extra_fields = array(); - foreach ($r->getProperties(\ReflectionProperty::IS_PUBLIC) as $p) { - $name = $p->getName(); - if (in_array($name, array('id', 'username', 'password', 'email', 'is_active', 'is_staff', 'is_superuser', 'last_login')) || $name[0] === '_') - continue; - - $this->fields[$name] = new \IPF_Form_Field_Varchar(array( - 'label' => \IPF_Utils::humanTitle($name), - )); - $extra_fields[] = $name; - } - $permissions = array('is_active', 'is_staff', 'is_superuser'); if (\PFF\Container::auth()->arePermissionsEnabled()) { $permissions[] = 'permissions'; @@ -114,8 +101,10 @@ class UserForm extends \IPF_ObjectForm array('fields' => $permissions, 'label' => __('Permissions')), ); + $extra_fields = call_user_func(array(\PFF\Container::auth()->userModel, 'adminExtraFields')); if ($extra_fields) { - $this->field_groups[] = array('fields' => $extra_fields, 'label' => __('Extra')); + $this->fields = array_merge($this->fields, $extra_fields); + $this->field_groups[] = array('fields' => array_keys($extra_fields), 'label' => __('Extra')); } } diff --git a/ipf/auth/models.php b/ipf/auth/models.php index e0bc15c..4346e35 100644 --- a/ipf/auth/models.php +++ b/ipf/auth/models.php @@ -141,6 +141,24 @@ class User extends DBObject ->where(implode(' OR ', $cond), $params) ->fetchColumn() == count($params); } + + /* admin */ + + public static function adminExtraFields() + { + $r = new \ReflectionClass(get_called_class()); + $extra_fields = array(); + foreach ($r->getProperties(\ReflectionProperty::IS_PUBLIC) as $p) { + $name = $p->getName(); + if (in_array($name, array('id', 'username', 'password', 'email', 'is_active', 'is_staff', 'is_superuser', 'last_login')) || $name[0] === '_') + continue; + + $extra_fields[$name] = new \IPF_Form_Field_Varchar(array( + 'label' => \IPF_Utils::humanTitle($name), + )); + } + return $extra_fields; + } } class Role extends DBObject -- 2.49.0