limit change user name interval

This commit is contained in:
xiaomlove
2022-08-11 22:55:17 +08:00
parent 83cadfe77c
commit 1d5d53a123
7 changed files with 19 additions and 1 deletions

View File

@@ -86,7 +86,9 @@ class Test extends Command
*/
public function handle()
{
$time = Carbon::parse('2022-08-10');
$r = $time->diffInDays();
dd($r);
}

View File

@@ -126,6 +126,10 @@ class EditSetting extends Page implements Forms\Contracts\HasForms
->inline(true)
->label(__('label.setting.system.change_username_card_allow_characters_outside_the_alphabets'))
,
Forms\Components\TextInput::make('system.change_username_min_interval_in_days')
->integer()
->label(__('label.setting.system.change_username_min_interval_in_days'))
,
])->columns(2);
$tabs = apply_filter('nexus_setting_tabs', $tabs);

View File

@@ -399,6 +399,14 @@ class UserRepository extends BaseRepository
$meta = $records->get($metaKey)->first();
$user = User::query()->findOrFail($uid, User::$commonFields);
if ($metaKey == UserMeta::META_KEY_CHANGE_USERNAME) {
$changeLog = $user->usernameChangeLogs()->orderBy('id', 'desc')->first();
if ($changeLog) {
$miniDays = Setting::get('system.change_username_min_interval_in_days', 365);
if ($changeLog->created_at->diffInDays() <= $miniDays) {
$msg = nexus_trans('user.change_username_lte_min_interval', ['last_change_time' => $changeLog->created_at, 'interval' => $miniDays]);
throw new \RuntimeException($msg);
}
}
NexusDB::transaction(function () use ($user, $meta, $params) {
$this->changeUsername(
$user, UsernameChangeLog::CHANGE_TYPE_USER, $user, $params['username'],