Page MenuHomePhorge

D2779.1775250407.diff
No OneTemporary

Authored By
Unknown
Size
18 KB
Referenced Files
None
Subscribers
None

D2779.1775250407.diff

diff --git a/src/app/AuthAttempt.php b/src/app/AuthAttempt.php
--- a/src/app/AuthAttempt.php
+++ b/src/app/AuthAttempt.php
@@ -4,6 +4,7 @@
use Illuminate\Database\Eloquent\Model;
use Iatstuti\Database\Support\NullableFields;
+use App\Traits\UuidKeyTrait;
use Carbon\Carbon;
/**
@@ -14,6 +15,7 @@
class AuthAttempt extends Model
{
use NullableFields;
+ use UuidKeyTrait;
// No specific reason
public const REASON_NONE = '';
@@ -43,9 +45,6 @@
'last_seen' => 'datetime'
];
- public $incrementing = false;
- protected $keyType = 'string';
-
/**
* Prepare a date for array / JSON serialization.
*
diff --git a/src/app/Discount.php b/src/app/Discount.php
--- a/src/app/Discount.php
+++ b/src/app/Discount.php
@@ -2,6 +2,7 @@
namespace App;
+use App\Traits\UuidKeyTrait;
use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;
@@ -17,9 +18,7 @@
class Discount extends Model
{
use HasTranslations;
-
- public $incrementing = false;
- protected $keyType = 'string';
+ use UuidKeyTrait;
protected $casts = [
'discount' => 'integer',
diff --git a/src/app/Domain.php b/src/app/Domain.php
--- a/src/app/Domain.php
+++ b/src/app/Domain.php
@@ -3,6 +3,7 @@
namespace App;
use App\Wallet;
+use App\Traits\BinaryUuidKeyTrait;
use App\Traits\DomainConfigTrait;
use App\Traits\SettingsTrait;
use Illuminate\Database\Eloquent\Model;
@@ -18,6 +19,7 @@
*/
class Domain extends Model
{
+ use BinaryUuidKeyTrait;
use DomainConfigTrait;
use SettingsTrait;
use SoftDeletes;
@@ -48,10 +50,6 @@
public const HASH_TEXT = 2;
public const HASH_CNAME = 3;
- public $incrementing = false;
-
- protected $keyType = 'bigint';
-
protected $fillable = [
'namespace',
'status',
diff --git a/src/app/Entitlement.php b/src/app/Entitlement.php
--- a/src/app/Entitlement.php
+++ b/src/app/Entitlement.php
@@ -5,6 +5,7 @@
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
+use App\Traits\UuidKeyTrait;
/**
* The eloquent definition of an Entitlement.
@@ -27,20 +28,7 @@
class Entitlement extends Model
{
use SoftDeletes;
-
- /**
- * This table does not use auto-increment.
- *
- * @var boolean
- */
- public $incrementing = false;
-
- /**
- * The key type is actually a string.
- *
- * @var string
- */
- protected $keyType = 'string';
+ use UuidKeyTrait;
/**
* The fillable columns for this Entitlement
diff --git a/src/app/Group.php b/src/app/Group.php
--- a/src/app/Group.php
+++ b/src/app/Group.php
@@ -2,6 +2,7 @@
namespace App;
+use App\Traits\BinaryUuidKeyTrait;
use App\Wallet;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
@@ -17,6 +18,7 @@
*/
class Group extends Model
{
+ use BinaryUuidKeyTrait;
use SoftDeletes;
// we've simply never heard of this domain
@@ -30,10 +32,6 @@
// domain has been created in LDAP
public const STATUS_LDAP_READY = 1 << 4;
- public $incrementing = false;
-
- protected $keyType = 'bigint';
-
protected $fillable = [
'email',
'status',
diff --git a/src/app/Observers/AuthAttemptObserver.php b/src/app/Observers/AuthAttemptObserver.php
deleted file mode 100644
--- a/src/app/Observers/AuthAttemptObserver.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace App\Observers;
-
-use App\AuthAttempt;
-
-/**
- * This is an observer for the AuthAttempt model definition.
- */
-class AuthAttemptObserver
-{
- /**
- * Handle the "creating" event on an AuthAttempt.
- *
- * Ensures that the entry uses a custom ID (uuid).
- *
- * @param AuthAttempt $authAttempt The AuthAttempt being created.
- *
- * @return void
- */
- public function creating(AuthAttempt $authAttempt)
- {
- while (true) {
- $allegedly_unique = \App\Utils::uuidStr();
- if (!AuthAttempt::find($allegedly_unique)) {
- $authAttempt->{$authAttempt->getKeyName()} = $allegedly_unique;
- break;
- }
- }
- }
-}
diff --git a/src/app/Observers/DiscountObserver.php b/src/app/Observers/DiscountObserver.php
--- a/src/app/Observers/DiscountObserver.php
+++ b/src/app/Observers/DiscountObserver.php
@@ -18,14 +18,6 @@
*/
public function creating(Discount $discount): void
{
- while (true) {
- $allegedly_unique = \App\Utils::uuidStr();
- if (!Discount::find($allegedly_unique)) {
- $discount->{$discount->getKeyName()} = $allegedly_unique;
- break;
- }
- }
-
$discount->tenant_id = \config('app.tenant_id');
}
}
diff --git a/src/app/Observers/DomainObserver.php b/src/app/Observers/DomainObserver.php
--- a/src/app/Observers/DomainObserver.php
+++ b/src/app/Observers/DomainObserver.php
@@ -16,14 +16,6 @@
*/
public function creating(Domain $domain): void
{
- while (true) {
- $allegedly_unique = \App\Utils::uuidInt();
- if (!Domain::withTrashed()->find($allegedly_unique)) {
- $domain->{$domain->getKeyName()} = $allegedly_unique;
- break;
- }
- }
-
$domain->namespace = \strtolower($domain->namespace);
$domain->status |= Domain::STATUS_NEW;
diff --git a/src/app/Observers/EntitlementObserver.php b/src/app/Observers/EntitlementObserver.php
--- a/src/app/Observers/EntitlementObserver.php
+++ b/src/app/Observers/EntitlementObserver.php
@@ -45,14 +45,6 @@
return false;
}
- while (true) {
- $allegedly_unique = \App\Utils::uuidStr();
- if (!Entitlement::withTrashed()->find($allegedly_unique)) {
- $entitlement->{$entitlement->getKeyName()} = $allegedly_unique;
- break;
- }
- }
-
return true;
}
diff --git a/src/app/Observers/GroupObserver.php b/src/app/Observers/GroupObserver.php
--- a/src/app/Observers/GroupObserver.php
+++ b/src/app/Observers/GroupObserver.php
@@ -16,14 +16,6 @@
*/
public function creating(Group $group): void
{
- while (true) {
- $allegedly_unique = \App\Utils::uuidInt();
- if (!Group::withTrashed()->find($allegedly_unique)) {
- $group->{$group->getKeyName()} = $allegedly_unique;
- break;
- }
- }
-
$group->status |= Group::STATUS_NEW | Group::STATUS_ACTIVE;
$group->tenant_id = \config('app.tenant_id');
diff --git a/src/app/Observers/PackageObserver.php b/src/app/Observers/PackageObserver.php
--- a/src/app/Observers/PackageObserver.php
+++ b/src/app/Observers/PackageObserver.php
@@ -12,22 +12,12 @@
/**
* Handle the "creating" event on an Package.
*
- * Ensures that the entry uses a custom ID (uuid).
- *
* @param Package $package The Package being created.
*
* @return void
*/
public function creating(Package $package)
{
- while (true) {
- $allegedly_unique = \App\Utils::uuidStr();
- if (!Package::find($allegedly_unique)) {
- $package->{$package->getKeyName()} = $allegedly_unique;
- break;
- }
- }
-
$package->tenant_id = \config('app.tenant_id');
}
}
diff --git a/src/app/Observers/PlanObserver.php b/src/app/Observers/PlanObserver.php
--- a/src/app/Observers/PlanObserver.php
+++ b/src/app/Observers/PlanObserver.php
@@ -20,14 +20,6 @@
*/
public function creating(Plan $plan)
{
- while (true) {
- $allegedly_unique = \App\Utils::uuidStr();
- if (!Plan::find($allegedly_unique)) {
- $plan->{$plan->getKeyName()} = $allegedly_unique;
- break;
- }
- }
-
$plan->tenant_id = \config('app.tenant_id');
}
}
diff --git a/src/app/Observers/SignupInvitationObserver.php b/src/app/Observers/SignupInvitationObserver.php
--- a/src/app/Observers/SignupInvitationObserver.php
+++ b/src/app/Observers/SignupInvitationObserver.php
@@ -18,14 +18,6 @@
*/
public function creating(SI $invitation)
{
- while (true) {
- $allegedly_unique = \App\Utils::uuidStr();
- if (!SI::find($allegedly_unique)) {
- $invitation->{$invitation->getKeyName()} = $allegedly_unique;
- break;
- }
- }
-
$invitation->status = SI::STATUS_NEW;
$invitation->tenant_id = \config('app.tenant_id');
diff --git a/src/app/Observers/SkuObserver.php b/src/app/Observers/SkuObserver.php
--- a/src/app/Observers/SkuObserver.php
+++ b/src/app/Observers/SkuObserver.php
@@ -15,14 +15,6 @@
*/
public function creating(Sku $sku)
{
- while (true) {
- $allegedly_unique = \App\Utils::uuidStr();
- if (!Sku::find($allegedly_unique)) {
- $sku->{$sku->getKeyName()} = $allegedly_unique;
- break;
- }
- }
-
$sku->tenant_id = \config('app.tenant_id');
}
}
diff --git a/src/app/Observers/TransactionObserver.php b/src/app/Observers/TransactionObserver.php
--- a/src/app/Observers/TransactionObserver.php
+++ b/src/app/Observers/TransactionObserver.php
@@ -15,14 +15,6 @@
*/
public function creating(Transaction $transaction): void
{
- while (true) {
- $allegedly_unique = \App\Utils::uuidStr();
- if (!Transaction::find($allegedly_unique)) {
- $transaction->{$transaction->getKeyName()} = $allegedly_unique;
- break;
- }
- }
-
if (!isset($transaction->user_email)) {
$transaction->user_email = \App\Utils::userEmailOrNull();
}
diff --git a/src/app/Observers/UserObserver.php b/src/app/Observers/UserObserver.php
--- a/src/app/Observers/UserObserver.php
+++ b/src/app/Observers/UserObserver.php
@@ -23,16 +23,6 @@
*/
public function creating(User $user)
{
- if (!$user->id) {
- while (true) {
- $allegedly_unique = \App\Utils::uuidInt();
- if (!User::withTrashed()->find($allegedly_unique)) {
- $user->{$user->getKeyName()} = $allegedly_unique;
- break;
- }
- }
- }
-
$user->email = \strtolower($user->email);
// only users that are not imported get the benefit of the doubt.
diff --git a/src/app/Observers/WalletObserver.php b/src/app/Observers/WalletObserver.php
--- a/src/app/Observers/WalletObserver.php
+++ b/src/app/Observers/WalletObserver.php
@@ -18,14 +18,6 @@
*/
public function creating(Wallet $wallet)
{
- while (true) {
- $allegedly_unique = \App\Utils::uuidStr();
- if (!Wallet::find($allegedly_unique)) {
- $wallet->{$wallet->getKeyName()} = $allegedly_unique;
- break;
- }
- }
-
$wallet->currency = \config('app.currency');
}
diff --git a/src/app/Package.php b/src/app/Package.php
--- a/src/app/Package.php
+++ b/src/app/Package.php
@@ -2,6 +2,7 @@
namespace App;
+use App\Traits\UuidKeyTrait;
use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;
@@ -32,9 +33,7 @@
class Package extends Model
{
use HasTranslations;
-
- public $incrementing = false;
- protected $keyType = 'string';
+ use UuidKeyTrait;
public $timestamps = false;
diff --git a/src/app/Plan.php b/src/app/Plan.php
--- a/src/app/Plan.php
+++ b/src/app/Plan.php
@@ -2,6 +2,7 @@
namespace App;
+use App\Traits\UuidKeyTrait;
use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;
@@ -27,9 +28,8 @@
class Plan extends Model
{
use HasTranslations;
+ use UuidKeyTrait;
- public $incrementing = false;
- protected $keyType = 'string';
public $timestamps = false;
protected $fillable = [
diff --git a/src/app/Providers/AppServiceProvider.php b/src/app/Providers/AppServiceProvider.php
--- a/src/app/Providers/AppServiceProvider.php
+++ b/src/app/Providers/AppServiceProvider.php
@@ -44,7 +44,6 @@
*/
public function boot()
{
- \App\AuthAttempt::observe(\App\Observers\AuthAttemptObserver::class);
\App\Discount::observe(\App\Observers\DiscountObserver::class);
\App\Domain::observe(\App\Observers\DomainObserver::class);
\App\Entitlement::observe(\App\Observers\EntitlementObserver::class);
diff --git a/src/app/SignupInvitation.php b/src/app/SignupInvitation.php
--- a/src/app/SignupInvitation.php
+++ b/src/app/SignupInvitation.php
@@ -4,6 +4,7 @@
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
+use App\Traits\UuidKeyTrait;
/**
* The eloquent definition of a signup invitation.
@@ -16,6 +17,8 @@
*/
class SignupInvitation extends Model
{
+ use UuidKeyTrait;
+
// just created
public const STATUS_NEW = 1 << 0;
// it's been sent successfully
@@ -26,20 +29,6 @@
public const STATUS_COMPLETED = 1 << 3;
- /**
- * Indicates if the IDs are auto-incrementing.
- *
- * @var bool
- */
- public $incrementing = false;
-
- /**
- * The "type" of the auto-incrementing ID.
- *
- * @var string
- */
- protected $keyType = 'string';
-
/**
* The attributes that are mass assignable.
*
diff --git a/src/app/Sku.php b/src/app/Sku.php
--- a/src/app/Sku.php
+++ b/src/app/Sku.php
@@ -4,6 +4,7 @@
use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;
+use App\Traits\UuidKeyTrait;
/**
* The eloquent definition of a Stock Keeping Unit (SKU).
@@ -23,9 +24,7 @@
class Sku extends Model
{
use HasTranslations;
-
- public $incrementing = false;
- protected $keyType = 'string';
+ use UuidKeyTrait;
protected $casts = [
'units_free' => 'integer'
diff --git a/src/app/Traits/BinaryUuidKeyTrait.php b/src/app/Traits/BinaryUuidKeyTrait.php
new file mode 100644
--- /dev/null
+++ b/src/app/Traits/BinaryUuidKeyTrait.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Traits;
+
+trait BinaryUuidKeyTrait
+{
+ /**
+ * Boot function from Laravel.
+ */
+ protected static function bootBinaryUuidKeyTrait()
+ {
+ static::creating(function ($model) {
+ if (empty($model->{$model->getKeyName()})) {
+ $allegedly_unique = \App\Utils::uuidInt();
+
+ // Verify if unique
+ if (in_array('Illuminate\Database\Eloquent\SoftDeletes', class_uses($model))) {
+ while ($model->withTrashed()->find($allegedly_unique)) {
+ $allegedly_unique = \App\Utils::uuidInt();
+ }
+ } else {
+ while ($model->find($allegedly_unique)) {
+ $allegedly_unique = \App\Utils::uuidInt();
+ }
+ }
+
+ $model->{$model->getKeyName()} = $allegedly_unique;
+ }
+ });
+ }
+
+ /**
+ * Get if the key is incrementing.
+ *
+ * @return bool
+ */
+ public function getIncrementing()
+ {
+ return false;
+ }
+
+ /**
+ * Get the key type.
+ *
+ * @return string
+ */
+ public function getKeyType()
+ {
+ return 'bigint';
+ }
+}
diff --git a/src/app/Traits/UuidKeyTrait.php b/src/app/Traits/UuidKeyTrait.php
new file mode 100644
--- /dev/null
+++ b/src/app/Traits/UuidKeyTrait.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Traits;
+
+trait UuidKeyTrait
+{
+ /**
+ * Boot function from Laravel.
+ */
+ protected static function bootUuidKeyTrait()
+ {
+ static::creating(function ($model) {
+ if (empty($model->{$model->getKeyName()})) {
+ $allegedly_unique = \App\Utils::uuidStr();
+
+ // Verify if unique
+ if (in_array('Illuminate\Database\Eloquent\SoftDeletes', class_uses($model))) {
+ while ($model->withTrashed()->find($allegedly_unique)) {
+ $allegedly_unique = \App\Utils::uuidStr();
+ }
+ } else {
+ while ($model->find($allegedly_unique)) {
+ $allegedly_unique = \App\Utils::uuidStr();
+ }
+ }
+
+ $model->{$model->getKeyName()} = $allegedly_unique;
+ }
+ });
+ }
+
+ /**
+ * Get if the key is incrementing.
+ *
+ * @return bool
+ */
+ public function getIncrementing()
+ {
+ return false;
+ }
+
+ /**
+ * Get the key type.
+ *
+ * @return string
+ */
+ public function getKeyType()
+ {
+ return 'string';
+ }
+}
diff --git a/src/app/Transaction.php b/src/app/Transaction.php
--- a/src/app/Transaction.php
+++ b/src/app/Transaction.php
@@ -4,6 +4,7 @@
use App\Entitlement;
use App\Wallet;
+use App\Traits\UuidKeyTrait;
use Illuminate\Database\Eloquent\Model;
/**
@@ -20,6 +21,8 @@
*/
class Transaction extends Model
{
+ use UuidKeyTrait;
+
public const ENTITLEMENT_BILLED = 'billed';
public const ENTITLEMENT_CREATED = 'created';
public const ENTITLEMENT_DELETED = 'deleted';
@@ -56,12 +59,6 @@
'amount' => 'integer',
];
- /** @var boolean This model uses an automatically incrementing integer primary key? */
- public $incrementing = false;
-
- /** @var string The type of the primary key */
- protected $keyType = 'string';
-
/**
* Returns the entitlement to which the transaction is assigned (if any)
diff --git a/src/app/User.php b/src/app/User.php
--- a/src/app/User.php
+++ b/src/app/User.php
@@ -5,6 +5,7 @@
use App\Entitlement;
use App\UserAlias;
use App\Sku;
+use App\Traits\BinaryUuidKeyTrait;
use App\Traits\UserConfigTrait;
use App\Traits\UserAliasesTrait;
use App\Traits\SettingsTrait;
@@ -27,6 +28,7 @@
*/
class User extends Authenticatable
{
+ use BinaryUuidKeyTrait;
use NullableFields;
use UserConfigTrait;
use UserAliasesTrait;
@@ -47,11 +49,6 @@
// user mailbox has been created in IMAP
public const STATUS_IMAP_READY = 1 << 5;
-
- // change the default primary key type
- public $incrementing = false;
- protected $keyType = 'bigint';
-
/**
* The attributes that are mass assignable.
*
diff --git a/src/app/Wallet.php b/src/app/Wallet.php
--- a/src/app/Wallet.php
+++ b/src/app/Wallet.php
@@ -4,6 +4,7 @@
use App\User;
use App\Traits\SettingsTrait;
+use App\Traits\UuidKeyTrait;
use Carbon\Carbon;
use Iatstuti\Database\Support\NullableFields;
use Illuminate\Database\Eloquent\Model;
@@ -25,9 +26,7 @@
{
use NullableFields;
use SettingsTrait;
-
- public $incrementing = false;
- protected $keyType = 'string';
+ use UuidKeyTrait;
public $timestamps = false;

File Metadata

Mime Type
text/plain
Expires
Fri, Apr 3, 9:06 PM (8 h, 10 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18826569
Default Alt Text
D2779.1775250407.diff (18 KB)

Event Timeline