From 89d01e6b3ba7001bb359bd6efb84f82b4a1febf8 Mon Sep 17 00:00:00 2001 From: Richard Willis Date: Sat, 14 Jan 2012 13:44:46 +0000 Subject: [PATCH] A variety of small tweaks. Refs #26 --- application/bootstrap.php | 11 ++-- .../classes/proxima/controller/admin/auth.php | 2 +- proxima/core/classes/proxima/model/user.php | 63 +++++++++++-------- .../proxima/view/model/admin/master.php | 8 +-- proxima/core/config/admin/auth.php | 6 +- proxima/core/config/admin/nav.php | 2 +- proxima/core/media/css/admin/admin.global.css | 21 ++----- proxima/core/media/js/admin/auth.js | 17 ++++- proxima/core/media/js/install/install.js | 12 +--- .../messages/admin/auth/signup/_external.php | 7 +++ .../core/messages/admin/auth/signup/user.php | 14 +++++ .../views/admin/page/auth/master/page.php | 8 --- 12 files changed, 93 insertions(+), 78 deletions(-) create mode 100644 proxima/core/messages/admin/auth/signup/_external.php create mode 100644 proxima/core/messages/admin/auth/signup/user.php diff --git a/application/bootstrap.php b/application/bootstrap.php index 2f87a74..0d38940 100644 --- a/application/bootstrap.php +++ b/application/bootstrap.php @@ -61,9 +61,10 @@ * Note: If you supply an invalid environment name, a PHP warning will be thrown * saying "Couldn't find constant Kohana::" */ -if (isset($_SERVER['KOHANA_ENV'])) +if (($env = getenv('KOHANA_ENV')) !== FALSE) { - Kohana::$environment = constant('Kohana::'.strtoupper($_SERVER['KOHANA_ENV'])); + Kohana::$environment = constant('Kohana::'.strtoupper($env)); + unset($env); } else { @@ -102,8 +103,6 @@ Kohana::$config->attach(new Config_File); /** - * Load the modules. + * Enable the modules. */ -$modules = Kohana::$config->load('modules')->as_array(); - -Kohana::modules($modules); +Kohana::modules(Kohana::$config->load('modules')->as_array()); diff --git a/proxima/core/classes/proxima/controller/admin/auth.php b/proxima/core/classes/proxima/controller/admin/auth.php index fd865a9..bb0295e 100644 --- a/proxima/core/classes/proxima/controller/admin/auth.php +++ b/proxima/core/classes/proxima/controller/admin/auth.php @@ -76,7 +76,7 @@ public function action_signup() } catch(ORM_Validation_Exception $e) { - $errors = $e->errors('signup'); + $errors = $e->errors('admin/auth/signup'); Message::set(Message::ERROR, __('Please correct the errors.')); } diff --git a/proxima/core/classes/proxima/model/user.php b/proxima/core/classes/proxima/model/user.php index ffb6e63..ba5f9dd 100644 --- a/proxima/core/classes/proxima/model/user.php +++ b/proxima/core/classes/proxima/model/user.php @@ -1,7 +1,7 @@ array('model' => 'user_token'), 'assets' => array('model' => 'asset'), @@ -15,7 +15,7 @@ public function admin_add($data = array()) $this->check_passwords($data); $this->values($data); $this->save(); - + $roles = Arr::get($data, 'roles'); $groups = Arr::get($data, 'groups'); @@ -52,9 +52,9 @@ private function check_passwords($data) { // Check the passwords match. $validation = Validation::factory($data) - ->rules('password_confirm', + ->rules('password_confirm', array( - array('matches', + array('matches', array(':validation', ':field', 'password') ) ) @@ -81,7 +81,7 @@ public function login($data) ->rules('password', array( array('not_empty'), )); - + if ( ! $validation->check()) { throw new Validation_Exception($validation); @@ -95,19 +95,28 @@ public function login($data) public function signup($data) { + // Add a password confirmation check + $validation = Validation::factory($data) + ->rules('password', array( + array('not_empty') + )) + ->rules('password_confirm', array( + array('matches', array(':validation', ':field', 'password')), + )); + $this->values($data); - $this->save(); + $this->save($validation); $this->add('roles', new Model_Role(array('name' =>'login'))); - + $message_body = View::factory('admin/page/auth/email/signup') ->set('user', $this); $swift_loader = Kohana::find_file('vendor', 'swiftmailer/lib/swift_required'); if ($swift_loader === FALSE) - { + { throw new Exception('Swiftmailer library not found.'); - } + } require_once $swift_loader; @@ -118,7 +127,7 @@ public function signup($data) ->addPart($message_body, 'text/plain'); $transport = Swift_MailTransport::newInstance(); - + Swift_Mailer::newInstance($transport)->send($message); } @@ -126,9 +135,9 @@ public function update_roles($roles) { foreach(ORM::factory('role')->find_all() as $role) { - if (in_array($role->id, $roles)) + if (in_array($role->id, $roles)) { - try + try { // Add roles relationship $this->add('roles', new Model_Role(array('id' => $role->id))); @@ -142,7 +151,7 @@ public function update_roles($roles) } } } - + public function update_groups($groups) { foreach(ORM::factory('group')->find_all() as $group) @@ -153,10 +162,10 @@ public function update_groups($groups) { // Add groups relationship $this->add('groups', new Model_Group(array('id' => $group->id))); - } + } catch(Exception $e){} - } - else + } + else { // Remove groups relationship $this->remove('groups', new Model_Group(array('id' => $group->id))); @@ -187,7 +196,7 @@ public function reset_password($data) // generate the token $token = Auth::instance()->hash_password($this->email.'+'.$this->password); - + // generate the reset password link $url = URL::site('admin/auth/confirm_reset_password?id=' . $this->id . '&auth_token=' . $token, TRUE); @@ -201,9 +210,9 @@ public function reset_password($data) $swift_loader = Kohana::find_file('vendor', 'swiftmailer/lib/swift_required'); if ($swift_loader === FALSE) - { + { throw new Kohana_Exception('Swiftmailer library not found.'); - } + } require_once $swift_loader; @@ -224,21 +233,21 @@ public function confirm_reset_password(& $data, $token) { $cookie_token = Cookie::get('token', FALSE); - if ( $token !== $cookie_token ) + if ( $token !== $cookie_token ) { throw new Exception(__('Invalid auth token.')); } $rules = array_merge( $this->rules(), - array('password_confirm' => + array('password_confirm' => array( - array('matches', + array('matches', array(':validation', ':field', 'password') - ) - ) + ) + ) ) - ); + ); $data = Validation::factory($data) ->rules('password', $rules['password']) @@ -270,9 +279,9 @@ public function friendly_date() public function __get($key) { if ($key === 'friendly_date') - { + { return $this->friendly_date(); - } + } return parent::__get($key); } diff --git a/proxima/core/classes/proxima/view/model/admin/master.php b/proxima/core/classes/proxima/view/model/admin/master.php index 3bf5635..b3218ef 100644 --- a/proxima/core/classes/proxima/view/model/admin/master.php +++ b/proxima/core/classes/proxima/view/model/admin/master.php @@ -10,16 +10,16 @@ public function __construct($file = NULL, array $data = NULL) $this ->styles(array( - (array) Kohana::$config->load('admin/media.styles'), + (array) Kohana::$config->load('admin/media.styles'), (array) Kohana::$config->load('admin/'.$request->controller().'.styles') - )) + )) ->scripts(array( (array) Kohana::$config->load('admin/media.scripts'), (array) Kohana::$config->load('admin/'.$request->controller().'.scripts'), - )) + )) ->paths(array( (array) Kohana::$config->load('admin/media.paths'), (array) Kohana::$config->load('admin/'.$request->controller().'.paths'), - )); + )); } } diff --git a/proxima/core/config/admin/auth.php b/proxima/core/config/admin/auth.php index dc8bacd..98e726b 100644 --- a/proxima/core/config/admin/auth.php +++ b/proxima/core/config/admin/auth.php @@ -1,9 +1,9 @@ array( - 'modules/users/media/js/admin/auth.js' - ), + 'scripts' => Core::path(array( + 'media/js/admin/auth.js' + )), 'styles' => array( ), ); diff --git a/proxima/core/config/admin/nav.php b/proxima/core/config/admin/nav.php index e0baf91..a29588d 100755 --- a/proxima/core/config/admin/nav.php +++ b/proxima/core/config/admin/nav.php @@ -1,7 +1,7 @@ array( + 'matches' => 'password confirm must match' + ) +); diff --git a/proxima/core/messages/admin/auth/signup/user.php b/proxima/core/messages/admin/auth/signup/user.php new file mode 100644 index 0000000..dff54db --- /dev/null +++ b/proxima/core/messages/admin/auth/signup/user.php @@ -0,0 +1,14 @@ + array( + 'unique' => 'email address is already registered', + ), + 'username' => array( + 'unique' => 'username is already registered', + ), + '_external' => array( + 'password_confirm' => array( + 'matches' => 'password confirm must match password' + ) +); diff --git a/proxima/core/views/admin/page/auth/master/page.php b/proxima/core/views/admin/page/auth/master/page.php index b724802..335b373 100644 --- a/proxima/core/views/admin/page/auth/master/page.php +++ b/proxima/core/views/admin/page/auth/master/page.php @@ -30,13 +30,5 @@ $paths)) ?> -