public function user()
    {
        if ($this->loggedOut) {
            return null;
        }

        if (!is_null($this->user)) {
            return $this->user;
        }

        $user = null;

        if (!is_null($id = $this->retrieveIdentifier())) {
            $user = $this->retrieveUserByIdentifier($id);
        }

        if (empty($user)) {
            /** @var \Phalcon\Http\Response\Cookies $cookies */
            $cookies = $this->{Services::COOKIES};
            if ($cookies->has('remember_me')) {
                $recaller = $cookies->get('remember_me')->getValue();

                list($identifier, $token) = explode('|', $recaller);

                if ($identifier && $token) {
                    $user = $this->retrieveUserByToken($identifier, $token);

                    if ($user) {
                        $this->{Services::SESSION}->set($this->sessionKey(), $user->getAuthIdentifier());
                    }
                }
            }
        }

        $this->user = $user;

        return $this->user;
    }