Skip to content

Commit c4e55bd

Browse files
authored
Merge pull request #2167 from opensource-workshop/Register
[ユーザ登録][ユーザ管理][プロフィール変更] ログインIDとパスワードの不一致チェック追加
2 parents 8ab68dc + 262cf28 commit c4e55bd

File tree

5 files changed

+110
-28
lines changed

5 files changed

+110
-28
lines changed

app/Http/Controllers/Auth/RegisterController.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use App\Models\Core\UsersColumns;
1414
use App\Models\Core\UsersInputCols;
1515
use App\Plugins\Manage\UserManage\UsersTool;
16+
use App\Rules\CustomValiLoginIdAndPasswordDoNotMatch;
1617
//use App\Providers\RouteServiceProvider;
1718
use App\Rules\CustomValiUserEmailUnique;
1819
use App\User;
@@ -74,7 +75,13 @@ protected function validator(array $data)
7475
'name' => 'required|string|max:255',
7576
'userid' => 'required|max:255|unique:users',
7677
'email' => ['nullable', 'email', 'max:255', new CustomValiUserEmailUnique($columns_set_id, null)],
77-
'password' => 'required|string|min:6|confirmed',
78+
'password' => [
79+
'required',
80+
'string',
81+
'min:6',
82+
'confirmed',
83+
new CustomValiLoginIdAndPasswordDoNotMatch($data['userid'], UsersColumns::getLabelLoginId($users_columns)),
84+
],
7885
'status' => 'required',
7986
'columns_set_id' => ['required'],
8087
],

app/Plugins/Manage/UserManage/UserManage.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
use App\Rules\CustomValiUserEmailUnique;
2626
use App\Rules\CustomValiEmails;
2727
use App\Rules\CustomValiCsvExistsName;
28+
use App\Rules\CustomValiLoginIdAndPasswordDoNotMatch;
2829
use App\Traits\ConnectMailTrait;
2930
use App\User;
3031
use App\Utilities\Csv\CsvUtils;
@@ -845,8 +846,14 @@ public function update($request, $id = null)
845846
// ログインID
846847
'userid' => ['required', 'max:255', Rule::unique('users', 'userid')->ignore($id)],
847848
'email' => ['nullable', 'email', 'max:255', new CustomValiUserEmailUnique($request->columns_set_id, $id)],
848-
'password' => 'nullable|string|min:6|confirmed',
849-
'status' => 'required',
849+
'password' => [
850+
'nullable',
851+
'string',
852+
'min:6',
853+
'confirmed',
854+
new CustomValiLoginIdAndPasswordDoNotMatch($request->userid, UsersColumns::getLabelLoginId($users_columns)),
855+
],
856+
'status' => ['required'],
850857
'columns_set_id' => ['required'],
851858
],
852859
'message' => [

app/Plugins/Mypage/ProfileMypage/ProfileMypage.php

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,21 @@
22

33
namespace app\Plugins\Mypage\ProfileMypage;
44

5-
use Illuminate\Support\Facades\Auth;
6-
use Illuminate\Support\Facades\Hash;
7-
use Illuminate\Support\Facades\Validator;
8-
use Illuminate\Validation\Rule;
9-
10-
use App\User;
5+
use App\Enums\EditType;
6+
use App\Enums\UserColumnType;
117
use App\Models\Core\Section;
128
use App\Models\Core\UsersColumns;
139
use App\Models\Core\UsersInputCols;
1410
use App\Models\Core\UserSection;
15-
16-
use App\Plugins\Mypage\MypagePluginBase;
17-
18-
use App\Enums\EditType;
19-
use App\Enums\UserColumnType;
2011
use App\Plugins\Manage\UserManage\UsersTool;
12+
use App\Plugins\Mypage\MypagePluginBase;
13+
use App\Rules\CustomValiLoginIdAndPasswordDoNotMatch;
2114
use App\Rules\CustomValiUserEmailUnique;
15+
use App\User;
16+
use Illuminate\Support\Facades\Auth;
17+
use Illuminate\Support\Facades\Hash;
18+
use Illuminate\Support\Facades\Validator;
19+
use Illuminate\Validation\Rule;
2220

2321
/**
2422
* プロフィールマイページクラス
@@ -82,8 +80,8 @@ public function update($request, $id)
8280
$user = User::where('id', $id)->first();
8381

8482
// ユーザーのカラム
85-
$users_columns = UsersTool::getUsersColumns($user->columns_set_id);
86-
$users_columns = $users_columns->where('is_edit_my_page', EditType::ok);
83+
$users_columns_all = UsersTool::getUsersColumns($user->columns_set_id);
84+
$users_columns = $users_columns_all->where('is_edit_my_page', EditType::ok);
8785

8886
// 項目のエラーチェック
8987
$validator_array = [
@@ -92,9 +90,8 @@ public function update($request, $id)
9290
'name' => UsersColumns::getLabelUserName($users_columns),
9391
'userid' => UsersColumns::getLabelLoginId($users_columns),
9492
'email' => UsersColumns::getLabelUserEmail($users_columns),
95-
'password' => UsersColumns::getLabelUserPassword($users_columns),
96-
'now_password' => '現在のパスワード',
97-
'new_password' => '新しいパスワード',
93+
'now_password' => '現在の' . UsersColumns::getLabelUserPassword($users_columns),
94+
'new_password' => '新しい' . UsersColumns::getLabelUserPassword($users_columns),
9895
]
9996
];
10097

@@ -124,7 +121,17 @@ function ($attribute, $value, $fail) {
124121
}
125122
},
126123
];
127-
$validator_array['column']['new_password'] = 'nullable|string|min:6|confirmed';
124+
125+
// ログインID
126+
$userid = $request->userid ?? $user->userid;
127+
128+
$validator_array['column']['new_password'] = [
129+
'nullable',
130+
'string',
131+
'min:6',
132+
'confirmed',
133+
new CustomValiLoginIdAndPasswordDoNotMatch($userid, UsersColumns::getLabelLoginId($users_columns_all)),
134+
];
128135
} elseif ($users_column->column_type == UserColumnType::created_at) {
129136
// チェックしない
130137
} elseif ($users_column->column_type == UserColumnType::updated_at) {
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
3+
namespace App\Rules;
4+
5+
use Illuminate\Contracts\Validation\Rule;
6+
7+
/**
8+
* ログインIDとパスワードの不一致チェック
9+
*
10+
* @author 牟田口 満 <mutaguchi@opensource-workshop.jp>
11+
* @copyright OpenSource-WorkShop Co.,Ltd. All Rights Reserved
12+
* @category ユーザ登録
13+
* @package Rule
14+
*/
15+
class CustomValiLoginIdAndPasswordDoNotMatch implements Rule
16+
{
17+
/** ログインID */
18+
protected $login_id;
19+
/** ログインIDのカラム名 */
20+
protected $login_id_column_name;
21+
22+
/**
23+
* Create a new rule instance.
24+
*
25+
* @return void
26+
*/
27+
public function __construct(?string $login_id, string $login_id_column_name)
28+
{
29+
$this->login_id = $login_id;
30+
$this->login_id_column_name = $login_id_column_name;
31+
}
32+
33+
/**
34+
* Determine if the validation rule passes.
35+
*
36+
* @param string $attribute 項目名
37+
* @param mixed $value
38+
* @return bool
39+
*/
40+
public function passes($attribute, $value)
41+
{
42+
if ($value == $this->login_id) {
43+
return false;
44+
}
45+
46+
return true;
47+
}
48+
49+
/**
50+
* Get the validation error message.
51+
*
52+
* @return string
53+
*/
54+
public function message()
55+
{
56+
return ":attributeには{$this->login_id_column_name}と同じ文字列は指定できません。";
57+
}
58+
}

tests/Browser/Manage/UserManageTest.php

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,24 @@
22

33
namespace Tests\Browser\Manage;
44

5-
use Illuminate\Foundation\Testing\DatabaseMigrations;
6-
use Illuminate\Support\Facades\Artisan;
7-
use Laravel\Dusk\Browser;
8-
use Tests\DuskTestCase;
9-
105
use App\Models\Core\Configs;
11-
use App\User;
126
use App\Models\Core\UsersColumns;
137
use App\Models\Core\UsersColumnsSelects;
148
use App\Models\Core\UsersInputCols;
159
use App\Models\Core\UsersLoginHistories;
1610
use App\Models\Core\UsersRoles;
11+
use App\User;
12+
use Illuminate\Support\Facades\Artisan;
13+
use Laravel\Dusk\Browser;
14+
use Tests\DuskTestCase;
1715

1816
/**
17+
* ユーザ管理テスト
18+
*
1919
* > tests\bin\connect-cms-test.bat
20+
*
21+
* @see https://github.com/opensource-workshop/connect-cms/wiki/Dusk#テスト実行 [How to test]
22+
* @see \Tests\Browser\Manage\GroupManageTest 実行後に実行すること(グループが作成される)
2023
*/
2124
class UserManageTest extends DuskTestCase
2225
{
@@ -207,8 +210,8 @@ private function regist()
207210
->type('name', 'テストユーザ')
208211
->type('userid', 'test-user')
209212
->type('email', 'test@osws.jp')
210-
->type('password', 'test-user')
211-
->type('password_confirmation', 'test-user')
213+
->type('password', 'test-user2')
214+
->type('password_confirmation', 'test-user2')
212215
->screenshot('manage/user/regist/images/regist1')
213216
->scrollIntoView('footer')
214217
->click('#label_role_reporter')

0 commit comments

Comments
 (0)