public function createUserToken(array $data)
    {
        $userToken = new TokenEntity;

        $expires = Arr::get($data, 'expires') ?: strtotime('+1 day', time());

        $defaults = [
            'created' => time(),
            'expires' => $expires,
            'token'   => $userToken->generateToken(),
        ];

        $userToken = $userToken->exchangeArray(array_merge($defaults, $data));

        return $this->tokenMapper->persist($userToken);
    }