/** * @param UserModel $user * @return UserModel */ public function create(models\ModelAbstract $user) { if (!$user instanceof UserModel) { throw new InvalidArgumentException('Supplied data must be a user model'); } // Generate a random password $password = $this->generatePassword(); // Fetch password hashing resource $bootstrap = \Zend_Controller_Front::getInstance()->getParam('bootstrap'); $phpass = $bootstrap->getResource('PHPass'); // Store a hashed version of the password in the user profile $user->setPassword($phpass->hashPassword($password)); // Set initial Last password change $user->setLastPasswordChange(time()); // Set initial status $user->setStatus(UserModel::USER_STATUS_PENDING); parent::create($user); //Save password in lastUsedPasswords list UserMapper::getInstance()->insertLastUsedPasswords($user->id, array(sha1($password))); $token = $this->generateAndSaveActivationLink($user); try { $this->sendEmailWelcome($user, $password, $token); } catch (\Exception $e) { \App::log()->ERR('[mailto:' . $user->getEmail() . '] ' . $e->getMessage()); } return $user; }