Skip to content

Fix decryption to handle serialized ClickUp tokens #38

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"php": "^8.0.2",
"ext-json": "*",
"guzzlehttp/guzzle": "^7.0",
"laravel/framework": "^9.19|^10|^11",
"laravel/framework": "^9.19|^10|^11|^12",
"nesbot/carbon": "^2.62.1|^3"
},
"require-dev": {
Expand Down
20 changes: 10 additions & 10 deletions src/Concerns/HasClickUp.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use Illuminate\Support\Facades\Crypt;
use Spinen\ClickUp\Api\Client as ClickUp;
use Spinen\ClickUp\Exceptions\NoClientException;
use Spinen\ClickUp\Support\Builder;
use Spinen\ClickUp\Support\ClickUpBuilder;

/**
* Trait HasClickUp
Expand All @@ -20,26 +20,26 @@ trait HasClickUp
/**
* ClickUp Builder instance
*/
protected ?Builder $builder = null;
protected ?ClickUpBuilder $clickUpBuilder = null;

/**
* Return cached version of the ClickUp Builder for the user
*
* @throws BindingResolutionException
*/
public function clickup(): Builder
public function clickup(): ClickUpBuilder
{
if (is_null($this->builder)) {
$this->builder = Container::getInstance()
->make(Builder::class)
if (is_null($this->clickUpBuilder)) {
$this->clickUpBuilder = Container::getInstance()
->make(ClickUpBuilder::class)
->setClient(
Container::getInstance()
->make(ClickUp::class)
->setToken($this->clickup_token)
);
}

return $this->builder;
return $this->clickUpBuilder;
}

/**
Expand All @@ -62,7 +62,7 @@ public function getClickupAttribute(): ClickUp
public function getClickupTokenAttribute(): ?string
{
if (! is_null($this->attributes['clickup_token'])) {
return Crypt::decryptString($this->attributes['clickup_token']);
return unserialize(Crypt::decryptString($this->attributes['clickup_token']));
}

return null;
Expand All @@ -86,8 +86,8 @@ public function initializeHasClickUp(): void
public function setClickupTokenAttribute(?string $clickup_token): void
{
// If setting the password & already have a client, then empty the client to use new password in client
if (! is_null($this->builder)) {
$this->builder = null;
if (! is_null($this->clickUpBuilder)) {
$this->clickUpBuilder = null;
}

$this->attributes['clickup_token'] = is_null($clickup_token)
Expand Down
8 changes: 4 additions & 4 deletions src/Providers/ClientServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
use Illuminate\Support\Facades\Config;
use Illuminate\Support\ServiceProvider as LaravelServiceProvider;
use Spinen\ClickUp\Api\Client as ClickUp;
use Spinen\ClickUp\Support\Builder;
use Spinen\ClickUp\Support\ClickUpBuilder;

/**
* Class ClientServiceProvider
Expand Down Expand Up @@ -47,7 +47,7 @@ public function register()
public function provides()
{
return [
Builder::class,
ClickUpBuilder::class,
ClickUp::class,
];
}
Expand All @@ -60,8 +60,8 @@ public function provides()
protected function registerClient(): void
{
$this->app->bind(
Builder::class,
fn (Application $app): Builder => new Builder($app->make(ClickUp::class))
ClickUpBuilder::class,
fn (Application $app): ClickUpBuilder => new ClickUpBuilder($app->make(ClickUp::class))
);

$this->app->bind(
Expand Down
4 changes: 2 additions & 2 deletions src/Support/Builder.php → src/Support/ClickUpBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
use Spinen\ClickUp\User;

/**
* Class Builder
* Class ClickUpBuilder
*
* @property Collection $spaces
* @property Collection $tasks
Expand All @@ -30,7 +30,7 @@
* @method teams
* @method workspaces
*/
class Builder
class ClickUpBuilder
{
use HasClient;

Expand Down
12 changes: 6 additions & 6 deletions src/Support/Model.php
Original file line number Diff line number Diff line change
Expand Up @@ -223,10 +223,10 @@ public function belongsTo($related, $foreignKey = null): BelongsTo
{
$foreignKey = $foreignKey ?? $this->assumeForeignKey($related);

$builder = (new Builder())->setClass($related)
$clickUpBuilder = (new ClickUpBuilder())->setClass($related)
->setClient($this->getClient());

return new BelongsTo($builder, $this, $foreignKey);
return new BelongsTo($clickUpBuilder, $this, $foreignKey);
}

/**
Expand All @@ -243,11 +243,11 @@ public function childOf($related, $foreignKey = null): ChildOf
{
$foreignKey = $foreignKey ?? $this->assumeForeignKey($related);

$builder = (new Builder())->setClass($related)
$builder = (new ClickUpBuilder())->setClass($related)
->setClient($this->getClient())
->setParent($this);

return new ChildOf($builder, $this, $foreignKey);
return new ChildOf($clickUpBuilder, $this, $foreignKey);
}

/**
Expand Down Expand Up @@ -452,11 +452,11 @@ public function givenOne($related, $attributes, $reset = false): Model
*/
public function hasMany($related): HasMany
{
$builder = (new Builder())->setClass($related)
$clickUpBuilder = (new ClickUpBuilder())->setClass($related)
->setClient($this->getClient())
->setParent($this);

return new HasMany($builder, $this);
return new HasMany($clickUpBuilder, $this);
}

/**
Expand Down
6 changes: 3 additions & 3 deletions src/Support/Relations/BelongsTo.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use Spinen\ClickUp\Exceptions\InvalidRelationshipException;
use Spinen\ClickUp\Exceptions\NoClientException;
use Spinen\ClickUp\Exceptions\TokenException;
use Spinen\ClickUp\Support\Builder;
use Spinen\ClickUp\Support\ClickUpBuilder;
use Spinen\ClickUp\Support\Model;

/**
Expand All @@ -21,14 +21,14 @@ class BelongsTo extends Relation
*
* @throws InvalidRelationshipException
*/
public function __construct(protected Builder $builder, protected Model $child, protected $foreignKey)
public function __construct(protected ClickUpBuilder $clickUpBuilder, protected Model $child, protected $foreignKey)
{
// In the underlying base relationship class, the "child" variable is
// referred to as the "parentModel" since most relationships are not
// inversed. But, since this one is we will create a "child" variable
// for much better readability.

parent::__construct($builder->whereId($this->getForeignKey()), $this->getChild());
parent::__construct($clickUpBuilder->whereId($this->getForeignKey()), $this->getChild());
}

/**
Expand Down
10 changes: 5 additions & 5 deletions src/Support/Relations/Relation.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use Illuminate\Support\Traits\ForwardsCalls;
use Illuminate\Support\Traits\Macroable;
use Spinen\ClickUp\Exceptions\InvalidRelationshipException;
use Spinen\ClickUp\Support\Builder;
use Spinen\ClickUp\Support\ClickUpBuilder;
use Spinen\ClickUp\Support\Model;

/**
Expand All @@ -30,9 +30,9 @@ abstract class Relation
*
* @throws InvalidRelationshipException
*/
public function __construct(protected Builder $builder, protected Model $parent)
public function __construct(protected ClickUpBuilder $clickUpBuilder, protected Model $parent)
{
$this->related = $builder->getModel();
$this->related = $clickUpBuilder->getModel();
}

/**
Expand All @@ -56,9 +56,9 @@ public function __call(string $method, array $parameters)
/**
* Get the Builder instance
*/
public function getBuilder(): Builder
public function getBuilder(): ClickUpBuilder
{
return $this->builder;
return $this->clickUpBuilder;
}

/**
Expand Down
6 changes: 3 additions & 3 deletions tests/Concerns/HasClickUpTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
use ReflectionClass;
use Spinen\ClickUp\Api\Client as ClickUp;
use Spinen\ClickUp\Concerns\Stubs\User;
use Spinen\ClickUp\Support\Builder;
use Spinen\ClickUp\Support\ClickUpBuilder;
use Spinen\ClickUp\TestCase;

class HasClickUpTest extends TestCase
Expand Down Expand Up @@ -47,7 +47,7 @@ protected function setUp(): void
)
->andReturnSelf();

$this->builder_mock = Mockery::mock(Builder::class);
$this->builder_mock = Mockery::mock(ClickUpBuilder::class);
$this->builder_mock->shouldReceive('getClient')
->withNoArgs()
->andReturn($this->client_mock);
Expand All @@ -60,7 +60,7 @@ protected function setUp(): void
->andReturnSelf();

Container::getInstance()
->instance(Builder::class, $this->builder_mock);
->instance(ClickUpBuilder::class, $this->builder_mock);

Container::getInstance()
->instance(ClickUp::class, $this->client_mock);
Expand Down
2 changes: 1 addition & 1 deletion tests/Concerns/Stubs/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ class User

public function getBuilder()
{
return $this->builder;
return $this->clickUpBuilder;
}
}
8 changes: 4 additions & 4 deletions tests/Support/BuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
class BuilderTest extends TestCase
{
/**
* @var Builder
* @var ClickUpBuilder
*/
protected $builder;
protected $clickUpBuilder;

/**
* @var Mock
Expand All @@ -50,8 +50,8 @@ protected function setUp(): void
{
$this->client_mock = Mockery::mock(Client::class);

$this->builder = new Builder();
$this->builder->setClient($this->client_mock);
$this->clickUpBuilder = new ClickUpBuilder();
$this->clickUpBuilder->setClient($this->client_mock);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions tests/Support/Relations/BelongsToTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace Spinen\ClickUp\Support\Relations;

use Mockery;
use Spinen\ClickUp\Support\Builder;
use Spinen\ClickUp\Support\ClickUpBuilder;
use Spinen\ClickUp\Support\Collection;
use Spinen\ClickUp\Support\Stubs\Model;

Expand Down Expand Up @@ -96,7 +96,7 @@ public function it_gets_the_first_value_from_the_results_of_the_builder()
*/
public function it_returns_null_if_foreign_key_is_null()
{
$builder_mock = Mockery::mock(Builder::class);
$builder_mock = Mockery::mock(ClickUpBuilder::class);
$builder_mock->shouldReceive('getModel')
->andReturn($this->parent_mock);
$builder_mock->shouldReceive('whereId')
Expand Down
4 changes: 2 additions & 2 deletions tests/Support/Relations/RelationCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

use Mockery;
use Mockery\Mock;
use Spinen\ClickUp\Support\Builder;
use Spinen\ClickUp\Support\ClickUpBuilder;
use Spinen\ClickUp\Support\Model;
use Spinen\ClickUp\TestCase;

Expand All @@ -29,7 +29,7 @@ protected function setUp(): void
{
$this->parent_mock = Mockery::mock(Model::class);

$this->builder_mock = Mockery::mock(Builder::class);
$this->builder_mock = Mockery::mock(ClickUpBuilder::class);
$this->builder_mock->shouldReceive('getModel')
->andReturn($this->parent_mock);

Expand Down