Skip to content

Commit

Permalink
Merge pull request #39 from daniel-de-wit/refactor/replace-enums
Browse files Browse the repository at this point in the history
Replace enum classes with schema definitions
  • Loading branch information
daniel-de-wit committed Apr 27, 2021
2 parents 4729a19 + 03b6ed4 commit db4ffb9
Show file tree
Hide file tree
Showing 20 changed files with 55 additions and 155 deletions.
1 change: 0 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
],
"require": {
"php": "^7.4 || ^8.0",
"bensampo/laravel-enum": "^3.3",
"laravel/framework": "^8.36.2",
"laravel/sanctum": "^2.10",
"nuwave/lighthouse": "^5.5"
Expand Down
28 changes: 28 additions & 0 deletions graphql/sanctum.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,33 @@ type LogoutResponse {
message: String!
}

enum LogoutStatus {
"""TOKEN_REVOKED"""
TOKEN_REVOKED
}

type RegisterResponse {
token: String
status: RegisterStatus!
}

enum RegisterStatus {
"""MUST_VERIFY_EMAIL"""
MUST_VERIFY_EMAIL

"""SUCCESS"""
SUCCESS
}

type EmailVerificationResponse {
status: EmailVerificationStatus!
}

enum EmailVerificationStatus {
"""VERIFIED"""
VERIFIED
}

input VerifyEmailInput {
id: ID!
hash: String!
Expand Down Expand Up @@ -70,6 +88,11 @@ type ForgotPasswordResponse {
message: String
}

enum ForgotPasswordStatus {
"""EMAIL_SENT"""
EMAIL_SENT
}

input ResetPasswordInput {
email: String! @rules(apply: ["email"])
token: String!
Expand All @@ -82,6 +105,11 @@ type ResetPasswordResponse {
message: String
}

enum ResetPasswordStatus {
"""PASSWORD_RESET"""
PASSWORD_RESET
}

extend type Mutation {
login(input: LoginInput @spread): AccessToken!
@field(resolver: "DanielDeWit\\LighthouseSanctum\\GraphQL\\Mutations\\Login")
Expand Down
15 changes: 0 additions & 15 deletions src/Enums/EmailVerificationStatus.php

This file was deleted.

13 changes: 0 additions & 13 deletions src/Enums/ForgotPasswordStatus.php

This file was deleted.

15 changes: 0 additions & 15 deletions src/Enums/LogoutStatus.php

This file was deleted.

17 changes: 0 additions & 17 deletions src/Enums/RegisterStatus.php

This file was deleted.

15 changes: 0 additions & 15 deletions src/Enums/ResetPasswordStatus.php

This file was deleted.

5 changes: 2 additions & 3 deletions src/GraphQL/Mutations/ForgotPassword.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
namespace DanielDeWit\LighthouseSanctum\GraphQL\Mutations;

use DanielDeWit\LighthouseSanctum\Contracts\Services\ResetPasswordServiceInterface;
use DanielDeWit\LighthouseSanctum\Enums\ForgotPasswordStatus;
use Exception;
use Illuminate\Contracts\Auth\PasswordBroker;
use Illuminate\Contracts\Translation\Translator;
Expand All @@ -29,7 +28,7 @@ public function __construct(
/**
* @param mixed $_
* @param array<string, mixed> $args
* @return array<string, ForgotPasswordStatus|array|string|null>
* @return array<string, string|array>
* @throws Exception
*/
public function __invoke($_, array $args): array
Expand All @@ -43,7 +42,7 @@ public function __invoke($_, array $args): array
]);

return [
'status' => ForgotPasswordStatus::EMAIL_SENT(),
'status' => 'EMAIL_SENT',
'message' => $this->translator->get('An email has been sent'),
];
}
Expand Down
5 changes: 2 additions & 3 deletions src/GraphQL/Mutations/Logout.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

namespace DanielDeWit\LighthouseSanctum\GraphQL\Mutations;

use DanielDeWit\LighthouseSanctum\Enums\LogoutStatus;
use DanielDeWit\LighthouseSanctum\Exceptions\HasApiTokensException;
use Exception;
use Illuminate\Contracts\Auth\Factory as AuthFactory;
Expand All @@ -27,7 +26,7 @@ public function __construct(AuthFactory $authFactory, Translator $translator)
/**
* @param mixed $_
* @param array<string, mixed> $args
* @return array<string, LogoutStatus|string|array|null>
* @return array<string, string|array>
* @throws Exception
*/
public function __invoke($_, array $args): array
Expand All @@ -49,7 +48,7 @@ public function __invoke($_, array $args): array
$personalAccessToken->delete();

return [
'status' => LogoutStatus::TOKEN_REVOKED(),
'status' => 'TOKEN_REVOKED',
'message' => $this->translator->get('Your session has been terminated'),
];
}
Expand Down
7 changes: 3 additions & 4 deletions src/GraphQL/Mutations/Register.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
namespace DanielDeWit\LighthouseSanctum\GraphQL\Mutations;

use DanielDeWit\LighthouseSanctum\Contracts\Services\EmailVerificationServiceInterface;
use DanielDeWit\LighthouseSanctum\Enums\RegisterStatus;
use DanielDeWit\LighthouseSanctum\Exceptions\HasApiTokensException;
use DanielDeWit\LighthouseSanctum\Traits\CreatesUserProvider;
use Exception;
Expand Down Expand Up @@ -41,7 +40,7 @@ public function __construct(
/**
* @param mixed $_
* @param array<string, mixed> $args
* @return array<string, RegisterStatus|array|string|null>
* @return array<string, string|null>
* @throws Exception
*/
public function __invoke($_, array $args): array
Expand All @@ -62,7 +61,7 @@ public function __invoke($_, array $args): array

return [
'token' => null,
'status' => RegisterStatus::MUST_VERIFY_EMAIL(),
'status' => 'MUST_VERIFY_EMAIL',
];
}

Expand All @@ -72,7 +71,7 @@ public function __invoke($_, array $args): array

return [
'token' => $user->createToken('default')->plainTextToken,
'status' => RegisterStatus::SUCCESS(),
'status' => 'SUCCESS',
];
}

Expand Down
5 changes: 2 additions & 3 deletions src/GraphQL/Mutations/ResetPassword.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

namespace DanielDeWit\LighthouseSanctum\GraphQL\Mutations;

use DanielDeWit\LighthouseSanctum\Enums\ResetPasswordStatus;
use DanielDeWit\LighthouseSanctum\Exceptions\ResetPasswordException;
use Exception;
use GraphQL\Type\Definition\ResolveInfo;
Expand Down Expand Up @@ -42,7 +41,7 @@ public function __construct(
* @param array<string, mixed> $args
* @param GraphQLContext $context
* @param ResolveInfo $resolveInfo
* @return array<string, ResetPasswordStatus|string|null>
* @return array<string, string|array>
* @throws Exception
*/
public function __invoke($_, array $args, GraphQLContext $context, ResolveInfo $resolveInfo): array
Expand All @@ -60,7 +59,7 @@ public function __invoke($_, array $args, GraphQLContext $context, ResolveInfo $

if ($response === PasswordBroker::PASSWORD_RESET) {
return [
'status' => ResetPasswordStatus::PASSWORD_RESET(),
'status' => 'PASSWORD_RESET',
'message' => $this->translator->get($response),
];
}
Expand Down
5 changes: 2 additions & 3 deletions src/GraphQL/Mutations/VerifyEmail.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
namespace DanielDeWit\LighthouseSanctum\GraphQL\Mutations;

use DanielDeWit\LighthouseSanctum\Contracts\Services\EmailVerificationServiceInterface;
use DanielDeWit\LighthouseSanctum\Enums\EmailVerificationStatus;
use DanielDeWit\LighthouseSanctum\Traits\CreatesUserProvider;
use Exception;
use Illuminate\Auth\AuthManager;
Expand Down Expand Up @@ -35,7 +34,7 @@ public function __construct(
/**
* @param mixed $_
* @param array<string, string|int> $args
* @return array<string, EmailVerificationStatus>
* @return array<string, string>
* @throws Exception
*/
public function __invoke($_, array $args): array
Expand All @@ -57,7 +56,7 @@ public function __invoke($_, array $args): array
$user->markEmailAsVerified();

return [
'status' => EmailVerificationStatus::VERIFIED(),
'status' => 'VERIFIED',
];
}

Expand Down
39 changes: 1 addition & 38 deletions src/Providers/LighthouseSanctumServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,24 @@

use DanielDeWit\LighthouseSanctum\Contracts\Services\EmailVerificationServiceInterface;
use DanielDeWit\LighthouseSanctum\Contracts\Services\ResetPasswordServiceInterface;
use DanielDeWit\LighthouseSanctum\Enums\EmailVerificationStatus;
use DanielDeWit\LighthouseSanctum\Enums\ForgotPasswordStatus;
use DanielDeWit\LighthouseSanctum\Enums\LogoutStatus;
use DanielDeWit\LighthouseSanctum\Enums\RegisterStatus;
use DanielDeWit\LighthouseSanctum\Enums\ResetPasswordStatus;
use DanielDeWit\LighthouseSanctum\Services\EmailVerificationService;
use DanielDeWit\LighthouseSanctum\Services\ResetPasswordService;
use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\ServiceProvider;
use Nuwave\Lighthouse\Schema\TypeRegistry;
use Nuwave\Lighthouse\Schema\Types\LaravelEnumType;

class LighthouseSanctumServiceProvider extends ServiceProvider
{
protected TypeRegistry $typeRegistry;

public function register(): void
{
$this->app->singleton(EmailVerificationServiceInterface::class, EmailVerificationService::class);
$this->app->singleton(ResetPasswordServiceInterface::class, ResetPasswordService::class);
}

public function boot(Dispatcher $dispatcher, TypeRegistry $typeRegistry): void
public function boot(): void
{
$this->typeRegistry = $typeRegistry;

$this->publishConfig();
$this->publishSchema();

$this->mergeConfig();

$this->registerEnums();
}

protected function publishConfig(): void
Expand All @@ -61,27 +47,4 @@ protected function mergeConfig(): void
'lighthouse-sanctum',
);
}

protected function registerEnums(): void
{
$this->typeRegistry->register(
new LaravelEnumType(RegisterStatus::class),
);

$this->typeRegistry->register(
new LaravelEnumType(LogoutStatus::class),
);

$this->typeRegistry->register(
new LaravelEnumType(EmailVerificationStatus::class),
);

$this->typeRegistry->register(
new LaravelEnumType(ForgotPasswordStatus::class),
);

$this->typeRegistry->register(
new LaravelEnumType(ResetPasswordStatus::class),
);
}
}
5 changes: 2 additions & 3 deletions tests/Integration/GraphQL/Mutations/RegisterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

namespace DanielDeWit\LighthouseSanctum\Tests\Integration\GraphQL\Mutations;

use DanielDeWit\LighthouseSanctum\Enums\RegisterStatus;
use DanielDeWit\LighthouseSanctum\Tests\Integration\AbstractIntegrationTest;
use DanielDeWit\LighthouseSanctum\Tests\stubs\Users\UserHasApiTokens;
use DanielDeWit\LighthouseSanctum\Tests\stubs\Users\UserMustVerifyEmail;
Expand Down Expand Up @@ -40,7 +39,7 @@ public function it_registers_a_user(): void
]);

static::assertNotNull($response->json('data.register.token'));
static::assertTrue(RegisterStatus::SUCCESS()->is($response->json('data.register.status')));
static::assertSame('SUCCESS', $response->json('data.register.status'));

$this->assertDatabaseHas('users', [
'name' => 'Foo Bar',
Expand Down Expand Up @@ -82,7 +81,7 @@ public function it_sends_an_email_verification_notification(): void
]);

static::assertNull($response->json('data.register.token'));
static::assertTrue(RegisterStatus::MUST_VERIFY_EMAIL()->is($response->json('data.register.status')));
static::assertSame('MUST_VERIFY_EMAIL', $response->json('data.register.status'));

$this->assertDatabaseHas('users', [
'name' => 'Foo Bar',
Expand Down
Loading

0 comments on commit db4ffb9

Please sign in to comment.