<?php

namespace App\Packages\v4\User\Manager;

use App\Packages\User\Models\User;
use App\Packages\User\Models\UserToken;
use App\Packages\v4\User\Repository\UserTokenRepository;

/**
 * Class TokenManager
 * @package App\Packages\User\Manager\v4
 */
class TokenManager
{
    /**
     * @param User $user
     *
     * @return UserToken
     */
    public function generateToken(User $user)
    {
//        UserTokenRepository::init()->cleanUpTokens($user->id);

        $accessToken = $this->generateString();
        $findToken = UserTokenRepository::init()->findToken($accessToken);
        if ($findToken) {
            $accessToken = $this->generateString();
        }

        $token = new UserToken();
        $token->user_id = $user->id;
        $token->access_token = $accessToken;
        $token->save();

        return $token;
    }

    /**
     * @return string
     */
    public function generateString()
    {
        return str_random(120);
    }
}
