Page MenuHomePhorge

D5745.1774865236.diff
No OneTemporary

Authored By
Unknown
Size
3 KB
Referenced Files
None
Subscribers
None

D5745.1774865236.diff

diff --git a/src/app/Jobs/User/CreateJob.php b/src/app/Jobs/User/CreateJob.php
--- a/src/app/Jobs/User/CreateJob.php
+++ b/src/app/Jobs/User/CreateJob.php
@@ -36,21 +36,7 @@
$user = $this->getUser();
- if (!$user) {
- return;
- }
-
- if ($user->role == User::ROLE_SERVICE || $user->role == User::ROLE_DEVICE) {
- return;
- }
-
- // TODO: this can be removed in favor of the above once we are sure the role is set everywhere.
- if ($user->email == \config('services.imap.admin_login')) {
- // Ignore Cyrus admin account
- return;
- }
-
- if ($user->trashed()) {
+ if (!$user || $user->trashed() || $user->isVirtual()) {
return;
}
diff --git a/src/app/Jobs/User/DeleteJob.php b/src/app/Jobs/User/DeleteJob.php
--- a/src/app/Jobs/User/DeleteJob.php
+++ b/src/app/Jobs/User/DeleteJob.php
@@ -19,11 +19,7 @@
$user = $this->getUser();
- if (!$user) {
- return;
- }
-
- if ($user->role == User::ROLE_SERVICE || $user->role == User::ROLE_DEVICE) {
+ if (!$user || $user->isVirtual()) {
return;
}
diff --git a/src/app/Jobs/User/ResyncJob.php b/src/app/Jobs/User/ResyncJob.php
--- a/src/app/Jobs/User/ResyncJob.php
+++ b/src/app/Jobs/User/ResyncJob.php
@@ -20,11 +20,7 @@
$user = $this->getUser();
- if (!$user) {
- return;
- }
-
- if ($user->role == User::ROLE_SERVICE || $user->role == User::ROLE_DEVICE) {
+ if (!$user || $user->isVirtual()) {
return;
}
diff --git a/src/app/Jobs/User/UpdateJob.php b/src/app/Jobs/User/UpdateJob.php
--- a/src/app/Jobs/User/UpdateJob.php
+++ b/src/app/Jobs/User/UpdateJob.php
@@ -25,15 +25,7 @@
$user = $this->getUser();
- if (!$user) {
- return;
- }
-
- if ($user->role == User::ROLE_SERVICE || $user->role == User::ROLE_DEVICE) {
- return;
- }
-
- if ($user->trashed()) {
+ if (!$user || $user->trashed() || $user->isVirtual()) {
return;
}
diff --git a/src/app/User.php b/src/app/User.php
--- a/src/app/User.php
+++ b/src/app/User.php
@@ -525,6 +525,23 @@
return ($this->status & self::STATUS_RESTRICTED) > 0;
}
+ /**
+ * Check if user has a special role, and it should not have a mailbox
+ */
+ public function isVirtual(): bool
+ {
+ if ($this->role == self::ROLE_SERVICE || $this->role == self::ROLE_DEVICE) {
+ return true;
+ }
+
+ // TODO: this can be removed in favor of the above once we are sure the role is set everywhere.
+ if ($this->email && $this->email == \config('services.imap.admin_login')) {
+ return true;
+ }
+
+ return false;
+ }
+
/**
* Licenses whis user has.
*
diff --git a/src/tests/Unit/UserTest.php b/src/tests/Unit/UserTest.php
--- a/src/tests/Unit/UserTest.php
+++ b/src/tests/Unit/UserTest.php
@@ -8,6 +8,31 @@
class UserTest extends TestCase
{
+ /**
+ * Test User::isVirtual()
+ */
+ public function testIsVirtual(): void
+ {
+ $user = new User();
+
+ $this->assertFalse($user->isVirtual());
+
+ $user->role = User::ROLE_SERVICE;
+ $this->assertTrue($user->isVirtual());
+
+ $user->role = User::ROLE_DEVICE;
+ $this->assertTrue($user->isVirtual());
+
+ $user->role = User::ROLE_ADMIN;
+ $this->assertFalse($user->isVirtual());
+
+ $user->role = User::ROLE_RESELLER;
+ $this->assertFalse($user->isVirtual());
+
+ $user->email = \config('services.imap.admin_login');
+ $this->assertTrue($user->isVirtual());
+ }
+
/**
* Test User password mutator
*/

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 30, 10:07 AM (3 d, 2 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18803151
Default Alt Text
D5745.1774865236.diff (3 KB)

Event Timeline