mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-21 12:44:49 -05:00
Add option for administrator to reset user 2FA (#14243)
* Frontend * Backend * only show 2FA-Reset option if posible
This commit is contained in:
parent
15a475b7db
commit
325add71cf
4 changed files with 35 additions and 0 deletions
|
@ -42,6 +42,7 @@ type AdminEditUserForm struct {
|
||||||
AllowImportLocal bool
|
AllowImportLocal bool
|
||||||
AllowCreateOrganization bool
|
AllowCreateOrganization bool
|
||||||
ProhibitLogin bool
|
ProhibitLogin bool
|
||||||
|
Reset2FA bool `form:"reset_2fa"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate validates form fields
|
// Validate validates form fields
|
||||||
|
|
|
@ -2116,6 +2116,7 @@ users.delete_account = Delete User Account
|
||||||
users.still_own_repo = This user still owns one or more repositories. Delete or transfer these repositories first.
|
users.still_own_repo = This user still owns one or more repositories. Delete or transfer these repositories first.
|
||||||
users.still_has_org = This user is a member of an organization. Remove the user from any organizations first.
|
users.still_has_org = This user is a member of an organization. Remove the user from any organizations first.
|
||||||
users.deletion_success = The user account has been deleted.
|
users.deletion_success = The user account has been deleted.
|
||||||
|
users.reset_2fa = Reset 2FA
|
||||||
|
|
||||||
emails.email_manage_panel = User Email Management
|
emails.email_manage_panel = User Email Management
|
||||||
emails.primary = Primary
|
emails.primary = Primary
|
||||||
|
|
|
@ -183,6 +183,16 @@ func prepareUserInfo(ctx *context.Context) *models.User {
|
||||||
}
|
}
|
||||||
ctx.Data["Sources"] = sources
|
ctx.Data["Sources"] = sources
|
||||||
|
|
||||||
|
ctx.Data["TwoFactorEnabled"] = true
|
||||||
|
_, err = models.GetTwoFactorByUID(u.ID)
|
||||||
|
if err != nil {
|
||||||
|
if !models.IsErrTwoFactorNotEnrolled(err) {
|
||||||
|
ctx.InternalServerError(err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
ctx.Data["TwoFactorEnabled"] = false
|
||||||
|
}
|
||||||
|
|
||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -259,6 +269,19 @@ func EditUserPost(ctx *context.Context, form auth.AdminEditUserForm) {
|
||||||
u.HashPassword(form.Password)
|
u.HashPassword(form.Password)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if form.Reset2FA {
|
||||||
|
tf, err := models.GetTwoFactorByUID(u.ID)
|
||||||
|
if err != nil && !models.IsErrTwoFactorNotEnrolled(err) {
|
||||||
|
ctx.InternalServerError(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = models.DeleteTwoFactorByID(tf.ID, u.ID); err != nil {
|
||||||
|
ctx.InternalServerError(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
u.LoginName = form.LoginName
|
u.LoginName = form.LoginName
|
||||||
u.FullName = form.FullName
|
u.FullName = form.FullName
|
||||||
u.Email = form.Email
|
u.Email = form.Email
|
||||||
|
|
|
@ -110,6 +110,16 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
|
{{if .TwoFactorEnabled}}
|
||||||
|
<div class="ui divider"></div>
|
||||||
|
<div class="inline field">
|
||||||
|
<div class="ui checkbox">
|
||||||
|
<label><strong>{{.i18n.Tr "admin.users.reset_2fa"}}</strong></label>
|
||||||
|
<input name="reset_2fa" type="checkbox">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
<div class="ui divider"></div>
|
<div class="ui divider"></div>
|
||||||
|
|
||||||
<div class="field">
|
<div class="field">
|
||||||
|
|
Loading…
Reference in a new issue