diff --git a/resources/lang/en-US/admin/settings/general.php b/resources/lang/en-US/admin/settings/general.php
index ed148cf81..c4073efb7 100644
--- a/resources/lang/en-US/admin/settings/general.php
+++ b/resources/lang/en-US/admin/settings/general.php
@@ -394,6 +394,19 @@ return [
'due_checkin_days_help' => 'How many days before the expected checkin of an asset should it be listed in the "Due for checkin" page?',
'no_groups' => 'No groups have been created yet. Visit Admin Settings > Permission Groups
to add one.',
'text' => 'Text',
+ 'firstname_lastname_format' => 'First Name Last Name (jane.smith)',
+ 'first_name_format' => 'First Name (jane)',
+ 'filastname_format' => 'First Initial Last Name (jsmith)',
+ 'lastnamefirstinitial_format' => 'Last Name First Initial (smithj)',
+ 'firstname_lastname_underscore_format' => 'First Name Last Name (jane_smith)',
+ 'firstinitial.lastname' => 'First Initial Last Name (j.smith)',
+ 'lastname_firstinitial' => 'Last Name First Initial (smith_j)',
+ 'lastname_dot_firstinitial_format' => 'Last Name First Initial (smith.j)',
+ 'firstnamelastname' => 'First Name Last Name (janesmith)',
+ 'firstnamelastinitial' => 'First Name Last Initial (janes)',
+ 'lastnamefirstname' => 'Last Name.First Name (smith.jane)',
+
+
'logo_labels' => [
'acceptance_pdf_logo' => 'PDF Logo',
diff --git a/resources/macros/macros.php b/resources/macros/macros.php
index debf3241c..aa55ba8fd 100644
--- a/resources/macros/macros.php
+++ b/resources/macros/macros.php
@@ -189,7 +189,7 @@ Form::macro('barcode_types', function ($name = 'barcode_type', $selected = null,
return $select;
});
-Form::macro('username_format', function ($name = 'username_format', $selected = null, $class = null) {
+Form::macro('email_format', function ($name = 'email_format', $selected = null, $class = null) {
$formats = [
'firstname.lastname' => trans('general.firstname_lastname_format'),
'firstname' => trans('general.first_name_format'),
@@ -214,6 +214,31 @@ Form::macro('username_format', function ($name = 'username_format', $selected =
return $select;
});
+Form::macro('username_format', function ($name = 'username_format', $selected = null, $class = null) {
+ $formats = [
+ 'firstname.lastname' => trans('admin/settings/general.firstname_lastname_format'),
+ 'firstname' => trans('admin/settings/general.first_name_format'),
+ 'filastname' => trans('admin/settings/general.filastname_format'),
+ 'lastnamefirstinitial' => trans('admin/settings/general.lastnamefirstinitial_format'),
+ 'firstname_lastname' => trans('admin/settings/general.firstname_lastname_underscore_format'),
+ 'firstinitial.lastname' => trans('admin/settings/general.firstinitial.lastname'),
+ 'lastname_firstinitial' => trans('admin/settings/general.lastname_firstinitial'),
+ 'lastname.firstinitial' => trans('admin/settings/general.lastname_dot_firstinitial_format'),
+ 'firstnamelastname' => trans('admin/settings/general.firstnamelastname'),
+ 'firstnamelastinitial' => trans('admin/settings/general.firstnamelastinitial'),
+ 'lastname.firstname' => trans('admin/settings/general.lastnamefirstname'),
+ ];
+
+ $select = '';
+
+ return $select;
+});
+
Form::macro('two_factor_options', function ($name = 'two_factor_enabled', $selected = null, $class = null) {
$formats = [
'' => trans('admin/settings/general.two_factor_disabled'),
diff --git a/resources/views/settings/general.blade.php b/resources/views/settings/general.blade.php
index 1b123d351..b9bf9263d 100644
--- a/resources/views/settings/general.blade.php
+++ b/resources/views/settings/general.blade.php
@@ -93,7 +93,7 @@
- {!! Form::username_format('email_format', old('email_format', $setting->email_format), 'select2') !!}
+ {!! Form::email_format('email_format', old('email_format', $setting->email_format), 'select2') !!}
{!! $errors->first('email_format', ':message') !!}
diff --git a/tests/Unit/UserTest.php b/tests/Unit/UserTest.php
index d47a49934..9554085c0 100644
--- a/tests/Unit/UserTest.php
+++ b/tests/Unit/UserTest.php
@@ -24,6 +24,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
+ public function testFirstNameEmail()
+ {
+ $fullname = "Natalia Allanovna Romanova-O'Shostakova";
+ $expected_email = 'natalia@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'firstname');
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
+
public function testFirstNameDotLastName()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@@ -32,6 +40,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
+ public function testFirstNameDotLastNameEmail()
+ {
+ $fullname = "Natalia Allanovna Romanova-O'Shostakova";
+ $expected_email = 'natalia.allanovna-romanova-oshostakova@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'firstname.lastname');
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
+
public function testLastNameFirstInitial()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@@ -40,6 +56,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
+ public function testLastNameFirstInitialEmail()
+ {
+ $fullname = "Natalia Allanovna Romanova-O'Shostakova";
+ $expected_email = 'allanovna-romanova-oshostakovan@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'lastnamefirstinitial');
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
+
public function testFirstInitialLastName()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@@ -48,6 +72,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
+ public function testFirstInitialLastNameEmail()
+ {
+ $fullname = "Natalia Allanovna Romanova-O'Shostakova";
+ $expected_email = 'nallanovna-romanova-oshostakova@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'filastname');
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
+
public function testFirstInitialUnderscoreLastName()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@@ -56,6 +88,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
+ public function testFirstInitialUnderscoreLastNameEmail()
+ {
+ $fullname = "Natalia Allanovna Romanova-O'Shostakova";
+ $expected_email = 'nallanovna-romanova-oshostakova@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'firstinitial_lastname');
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
+
public function testSingleName()
{
$fullname = 'Natalia';
@@ -64,6 +104,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
+ public function testSingleNameEmail()
+ {
+ $fullname = 'Natalia';
+ $expected_email = 'natalia@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'firstname_lastname',);
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
+
public function testFirstInitialDotLastname()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@@ -72,6 +120,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
+ public function testFirstInitialDotLastnameEmail()
+ {
+ $fullname = "Natalia Allanovna Romanova-O'Shostakova";
+ $expected_email = 'nallanovna-romanova-oshostakova@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'firstinitial.lastname');
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
+
public function testLastNameDotFirstInitial()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@@ -80,6 +136,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
+ public function testLastNameDotFirstInitialEmail()
+ {
+ $fullname = "Natalia Allanovna Romanova-O'Shostakova";
+ $expected_email = 'allanovna-romanova-oshostakova.n@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'lastname.firstinitial');
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
+
public function testLastNameUnderscoreFirstInitial()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@@ -88,6 +152,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
+ public function testLastNameUnderscoreFirstInitialEmail()
+ {
+ $fullname = "Natalia Allanovna Romanova-O'Shostakova";
+ $expected_email = 'allanovna-romanova-oshostakova_n@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'lastname_firstinitial');
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
+
public function testFirstNameLastName()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@@ -96,6 +168,14 @@ class UserTest extends TestCase
$this->assertEquals($expected_username, $user['username']);
}
+ public function testFirstNameLastNameEmail()
+ {
+ $fullname = "Natalia Allanovna Romanova-O'Shostakova";
+ $expected_email = 'nataliaallanovna-romanova-oshostakova@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'firstnamelastname');
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
+
public function testFirstNameLastInitial()
{
$fullname = "Natalia Allanovna Romanova-O'Shostakova";
@@ -103,4 +183,12 @@ class UserTest extends TestCase
$user = User::generateFormattedNameFromFullName($fullname, 'firstnamelastinitial');
$this->assertEquals($expected_username, $user['username']);
}
+
+ public function testFirstNameLastInitialEmail()
+ {
+ $fullname = "Natalia Allanovna Romanova-O'Shostakova";
+ $expected_email = 'nataliaa@example.com';
+ $user = User::generateFormattedNameFromFullName($fullname, 'firstnamelastinitial');
+ $this->assertEquals($expected_email, $user['username'] . '@example.com');
+ }
}