diff --git a/plugins/baser-core/src/Model/Table/UsersTable.php b/plugins/baser-core/src/Model/Table/UsersTable.php index 068ccb7b07..3ce57c35a3 100644 --- a/plugins/baser-core/src/Model/Table/UsersTable.php +++ b/plugins/baser-core/src/Model/Table/UsersTable.php @@ -79,6 +79,11 @@ public function beforeMarshal(Event $event, ArrayObject $data, ArrayObject $opti (isset($data['password_2']) && $data['password_2'] !== '')) { $data['password'] = $data['password_1']; } + foreach(['real_name_1', 'real_name_2'] as $field) { + if (isset($data[$field]) && is_string($data[$field])) { + $data[$field] = preg_replace('/^[  ]+|[  ]+$/u', '', $data[$field]); + } + } } /** diff --git a/plugins/baser-core/tests/TestCase/Model/Table/UsersTableTest.php b/plugins/baser-core/tests/TestCase/Model/Table/UsersTableTest.php index bb50f37d31..1e0a2fbf1e 100644 --- a/plugins/baser-core/tests/TestCase/Model/Table/UsersTableTest.php +++ b/plugins/baser-core/tests/TestCase/Model/Table/UsersTableTest.php @@ -92,6 +92,37 @@ public function testBeforeMarshal() $this->assertNotEmpty($user->password); } + /** + * Test beforeMarshal + * + * real_name_1/real_name_2 は前後の半角・全角スペースのみ除去し、間のスペースは保持すること + */ + public function testBeforeMarshalTrimsRealName() + { + $user = $this->Users->newEntity([ + 'real_name_1' => "  山田 太郎  ", + 'real_name_2' => "  鈴木 一郎  ", + ], ['validate' => false]); + $this->assertEquals('山田 太郎', $user->real_name_1); + $this->assertEquals('鈴木 一郎', $user->real_name_2); + } + + /** + * Test beforeMarshal + * + * real_name_1/real_name_2 がスペースのみの場合、トリムされて空文字になり、 + * real_name_1 は必須バリデーションでエラーになり、real_name_2 は空文字を許容してエラーにならないこと + */ + public function testBeforeMarshalRealNameOnlySpace() + { + $user = $this->Users->newEntity([ + 'real_name_1' => ' ', + 'real_name_2' => '   ', + ]); + $this->assertNotEmpty($user->getError('real_name_1')); + $this->assertEmpty($user->getError('real_name_2')); + } + /** * Test afterMarshal */