Page MenuHomePhorge

D3415.1774872851.diff
No OneTemporary

Authored By
Unknown
Size
3 KB
Referenced Files
None
Subscribers
None

D3415.1774872851.diff

diff --git a/src/app/Backends/Roundcube.php b/src/app/Backends/Roundcube.php
--- a/src/app/Backends/Roundcube.php
+++ b/src/app/Backends/Roundcube.php
@@ -9,6 +9,7 @@
{
private const FILESTORE_TABLE = 'filestore';
private const USERS_TABLE = 'users';
+ private const IDENTITIES_TABLE = 'identities';
/** @var array List of GnuPG files to store */
private static $enigma_files = ['pubring.gpg', 'secring.gpg', 'pubring.kbx'];
@@ -218,7 +219,7 @@
$uri = \parse_url(\config('imap.uri'));
- return (int) $db->table(self::USERS_TABLE)->insertGetId(
+ $user_id = (int) $db->table(self::USERS_TABLE)->insertGetId(
[
'username' => $email,
'mail_host' => $uri['host'],
@@ -226,6 +227,18 @@
],
'user_id'
);
+
+ $username = \App\User::where('email', $email)->first()->name();
+
+ $db->table(self::IDENTITIES_TABLE)->insert([
+ 'user_id' => $user_id,
+ 'email' => $email,
+ 'name' => $username,
+ 'changed' => now()->toDateTimeString(),
+ 'standard' => 1,
+ ]);
+
+ return $user_id;
}
return (int) $user->user_id;
diff --git a/src/tests/Feature/Backends/RoundcubeTest.php b/src/tests/Feature/Backends/RoundcubeTest.php
new file mode 100644
--- /dev/null
+++ b/src/tests/Feature/Backends/RoundcubeTest.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace Tests\Feature\Backends;
+
+use App\Backends\Roundcube;
+use Tests\TestCase;
+
+class RoundcubeTest extends TestCase
+{
+ /**
+ * {@inheritDoc}
+ */
+ public function setUp(): void
+ {
+ parent::setUp();
+
+ $this->deleteTestUser('roundcube@' . \config('app.domain'));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function tearDown(): void
+ {
+ $this->deleteTestUser('roundcube@' . \config('app.domain'));
+
+ parent::tearDown();
+ }
+
+ /**
+ * Test creating a Roundcube user record (and related data)
+ *
+ * @group roundcube
+ */
+ public function testUserCreation(): void
+ {
+ $user = $this->getTestUser('roundcube@' . \config('app.domain'));
+ $user->setSetting('first_name', 'First');
+ $user->setSetting('last_name', 'Last');
+
+ $db = Roundcube::dbh();
+
+ // delete the user record if exists
+ if ($userid = Roundcube::userId($user->email, false)) {
+ $db->table('users')->delete();
+ }
+
+ // Create the user
+ $userid = Roundcube::userId($user->email);
+
+ $rcuser = $db->table('users')->where('username', $user->email)->first();
+
+ $this->assertTrue(!empty($rcuser));
+
+ $rcidentity = $db->table('identities')->where('user_id', $rcuser->user_id)->first();
+
+ $this->assertSame($user->email, $rcidentity->email);
+ $this->assertSame('First Last', $rcidentity->name);
+ $this->assertSame(1, $rcidentity->standard);
+ }
+}

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 30, 12:14 PM (4 d, 23 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18739452
Default Alt Text
D3415.1774872851.diff (3 KB)

Event Timeline