Skip to content

Commit e3fcd26

Browse files
author
Claudio Valdez
committed
Add mfa reset button for admin s on user profile edit
1 parent 151823b commit e3fcd26

4 files changed

Lines changed: 39 additions & 0 deletions

File tree

app/Users/Controllers/UserController.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,4 +208,17 @@ public function destroy(Request $request, int $id)
208208

209209
return redirect('/settings/users');
210210
}
211+
212+
/**
213+
* Reset MFA for the specified user.
214+
*/
215+
public function resetMfa(Request $request, int $id)
216+
{
217+
$this->checkPermission(Permission::UsersManage);
218+
$user = $this->userRepo->getById($id);
219+
// Resetear el 2FA del usuario
220+
$user->mfaValues()->delete();
221+
session()->flash('success', trans('settings.users_mfa_reset_success', ['userName' => $user->name]));
222+
return redirect()->back();
223+
}
211224
}

lang/en/settings.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,11 @@
263263
'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
264264
'users_mfa_x_methods' => ':count method configured|:count methods configured',
265265
'users_mfa_configure' => 'Configure Methods',
266+
'users_mfa_reset' => 'Reset 2FA',
267+
'users_mfa_reset_desc' => 'Reset and clear all configured MFA methods for :userName. They will be prompted to reconfigure on next login.',
268+
'users_mfa_reset_confirm' => 'Are you sure you want to reset 2FA for :userName?',
269+
'users_mfa_reset_success' => '2FA has been reset for :userName',
270+
'users_mfa_reset_error' => 'Failed to reset 2FA for :userName',
266271

267272
// API Tokens
268273
'user_api_token_create' => 'Create API Token',

resources/views/users/edit.blade.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,26 @@ class="button outline">{{ trans('settings.users_mfa_configure') }}</a>
7171
</div>
7272
</div>
7373

74+
@if(user()->hasSystemRole('admin'))
75+
<div class="mt-xl">
76+
<hr class="my-m">
77+
<div class="grid half gap-xl v-center">
78+
<div>
79+
<strong class="text-neg">{{ trans('settings.users_mfa_reset') }}</strong>
80+
<p class="text-small text-muted">{{ trans('settings.users_mfa_reset_desc', ['userName' => $user->name]) }}</p>
81+
</div>
82+
<div class="text-m-right">
83+
<form action="{{ url("/settings/users/{$user->id}/reset-mfa") }}" method="POST" style="display: inline;">
84+
@csrf
85+
<button type="submit" class="button neg"
86+
onclick="return confirm('{{ trans('settings.users_mfa_reset_confirm', ['userName' => $user->name]) }}')">
87+
{{ trans('settings.users_mfa_reset') }}
88+
</button>
89+
</form>
90+
</div>
91+
</div>
92+
</div>
93+
@endif
7494
</section>
7595

7696
@if(count($activeSocialDrivers) > 0)

routes/web.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@
251251
Route::get('/settings/users/{id}', [UserControllers\UserController::class, 'edit']);
252252
Route::put('/settings/users/{id}', [UserControllers\UserController::class, 'update']);
253253
Route::delete('/settings/users/{id}', [UserControllers\UserController::class, 'destroy']);
254+
Route::post('/settings/users/{id}/reset-mfa', [UserControllers\UserController::class, 'resetMfa']);
254255

255256
// User Account
256257
Route::get('/my-account', [UserControllers\UserAccountController::class, 'redirect']);

0 commit comments

Comments
 (0)