mirror of
https://github.com/drakkan/sftpgo.git
synced 2024-11-25 17:10:28 +00:00
WebUI: add a base template for info messages
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
parent
a275ef17a8
commit
caa1d70aab
11 changed files with 43 additions and 42 deletions
|
@ -214,7 +214,7 @@ func (e *IPListEntry) validate() error {
|
||||||
// parse as IP
|
// parse as IP
|
||||||
parsed, err := netip.ParseAddr(e.IPOrNet)
|
parsed, err := netip.ParseAddr(e.IPOrNet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return util.NewI18nError(util.NewValidationError(fmt.Sprintf("invalid IP %q", e.IPOrNet)), util.I18nErrorIpInvalid)
|
return util.NewI18nError(util.NewValidationError(fmt.Sprintf("invalid IP %q", e.IPOrNet)), util.I18nErrorIPInvalid)
|
||||||
}
|
}
|
||||||
if parsed.Is4() {
|
if parsed.Is4() {
|
||||||
e.IPOrNet += "/32"
|
e.IPOrNet += "/32"
|
||||||
|
|
|
@ -224,7 +224,7 @@ const (
|
||||||
I18nErrorAdminSelfPerms = "admin.self_permissions"
|
I18nErrorAdminSelfPerms = "admin.self_permissions"
|
||||||
I18nErrorAdminSelfDisable = "admin.self_disable"
|
I18nErrorAdminSelfDisable = "admin.self_disable"
|
||||||
I18nErrorAdminSelfRole = "admin.self_role"
|
I18nErrorAdminSelfRole = "admin.self_role"
|
||||||
I18nErrorIpInvalid = "ip_list.ip_invalid"
|
I18nErrorIPInvalid = "ip_list.ip_invalid"
|
||||||
I18nErrorNetInvalid = "ip_list.net_invalid"
|
I18nErrorNetInvalid = "ip_list.net_invalid"
|
||||||
I18nFTPTLSDisabled = "status.tls_disabled"
|
I18nFTPTLSDisabled = "status.tls_disabled"
|
||||||
I18nFTPTLSExplicit = "status.tls_explicit"
|
I18nFTPTLSExplicit = "status.tls_explicit"
|
||||||
|
|
|
@ -726,6 +726,16 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</div>
|
</div>
|
||||||
{{- end}}
|
{{- end}}
|
||||||
|
|
||||||
|
{{- define "infomsg"}}
|
||||||
|
<div class="notice d-flex bg-light-primary rounded border-primary border border-dashed p-4">
|
||||||
|
<div class="d-flex flex-stack flex-grow-1">
|
||||||
|
<div class="fs-5 fw-semibold text-break text-wrap text-gray-800">
|
||||||
|
<span data-i18n="{{.}}"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{- end}}
|
||||||
|
|
||||||
{{- define "base"}}
|
{{- define "base"}}
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
|
@ -21,24 +21,11 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
<h3 data-i18n="title.change_password" class="card-title section-title">Change password</h3>
|
<h3 data-i18n="title.change_password" class="card-title section-title">Change password</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="notice d-flex bg-light-primary rounded border-primary border border-dashed p-6 mb-5">
|
{{template "infomsg" "change_pwd.info"}}
|
||||||
<i class="ki-duotone ki-shield-tick fs-2tx text-primary me-4">
|
|
||||||
<span class="path1"></span>
|
|
||||||
<span class="path2"></span>
|
|
||||||
</i>
|
|
||||||
<div class="d-flex flex-stack flex-grow-1 flex-wrap flex-md-nowrap">
|
|
||||||
<div class="mb-3 mb-md-0">
|
|
||||||
<div class="fs-6 text-gray-800 fw-semibold pe-7">
|
|
||||||
<span data-i18n="change_pwd.info">
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{- template "errmsg" .Error}}
|
{{- template "errmsg" .Error}}
|
||||||
<form id="change_pwd_form" action="{{.CurrentURL}}" method="POST" autocomplete="off">
|
<form id="change_pwd_form" action="{{.CurrentURL}}" method="POST" autocomplete="off">
|
||||||
<div class="form-group row">
|
<div class="form-group row mt-10">
|
||||||
<label data-i18n="change_pwd.current" class="col-md-3 col-form-label required">Current password</label>
|
<label data-i18n="change_pwd.current" class="col-md-3 col-form-label required">Current password</label>
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<div class="position-relative" data-password-control="container">
|
<div class="position-relative" data-password-control="container">
|
||||||
|
|
|
@ -69,7 +69,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
<h3 data-i18n="general.role" class="card-title section-title-inner">Role</h3>
|
<h3 data-i18n="general.role" class="card-title section-title-inner">Role</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p data-i18n="admin.role_help" class="fs-5 fw-semibold mb-4"></p>
|
{{template "infomsg" "admin.role_help"}}
|
||||||
<div class="form-group row mt-10">
|
<div class="form-group row mt-10">
|
||||||
<label for="idRole" data-i18n="general.role" class="col-md-3 col-form-label">Role</label>
|
<label for="idRole" data-i18n="general.role" class="col-md-3 col-form-label">Role</label>
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
|
@ -92,7 +92,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div id="groups">
|
<div id="groups">
|
||||||
<p class="fs-5 fw-semibold mb-4" data-i18n="admin.users_groups_help"></p>
|
{{template "infomsg" "admin.users_groups_help"}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div data-repeater-list="groups">
|
<div data-repeater-list="groups">
|
||||||
{{range $idx, $val := .Admin.Groups}}
|
{{range $idx, $val := .Admin.Groups}}
|
||||||
|
@ -181,7 +181,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
<h3 data-i18n="admin.user_page_pref" class="card-title section-title-inner">User page preferences</h3>
|
<h3 data-i18n="admin.user_page_pref" class="card-title section-title-inner">User page preferences</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p data-i18n="admin.user_page_pref_help" class="fs-5 fw-semibold mb-4"></p>
|
{{template "infomsg" "admin.user_page_pref_help"}}
|
||||||
|
|
||||||
<div class="form-group row mt-10">
|
<div class="form-group row mt-10">
|
||||||
<label for="idUserPageHiddenSections" data-i18n="admin.hide_sections" class="col-md-3 col-form-label">Hide sections</label>
|
<label for="idUserPageHiddenSections" data-i18n="admin.hide_sections" class="col-md-3 col-form-label">Hide sections</label>
|
||||||
|
|
|
@ -31,7 +31,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</h2>
|
</h2>
|
||||||
<div id="accordion_sftp_body" class="accordion-collapse collapse {{if eq .ConfigSection 1}}show{{end}}" aria-labelledby="accordion_header_sftp" data-bs-parent="#accordion_configs">
|
<div id="accordion_sftp_body" class="accordion-collapse collapse {{if eq .ConfigSection 1}}show{{end}}" aria-labelledby="accordion_header_sftp" data-bs-parent="#accordion_configs">
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<p data-i18n="sftp.help" class="fs-5 fw-semibold mb-4"></p>
|
{{template "infomsg" "sftp.help"}}
|
||||||
|
|
||||||
<form id="configs_sftp_form" action="{{.CurrentURL}}" method="POST" autocomplete="off">
|
<form id="configs_sftp_form" action="{{.CurrentURL}}" method="POST" autocomplete="off">
|
||||||
<div class="form-group row mt-10">
|
<div class="form-group row mt-10">
|
||||||
|
@ -126,7 +126,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</h2>
|
</h2>
|
||||||
<div id="accordion_acme_body" class="accordion-collapse collapse {{if eq .ConfigSection 2}}show{{end}}" aria-labelledby="accordion_header_acme" data-bs-parent="#accordion_configs">
|
<div id="accordion_acme_body" class="accordion-collapse collapse {{if eq .ConfigSection 2}}show{{end}}" aria-labelledby="accordion_header_acme" data-bs-parent="#accordion_configs">
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<p data-i18n="acme.help" class="fs-5 fw-semibold mb-4"></p>
|
{{template "infomsg" "acme.help"}}
|
||||||
|
|
||||||
<form id="configs_acme_form" action="{{.CurrentURL}}" method="POST" autocomplete="off">
|
<form id="configs_acme_form" action="{{.CurrentURL}}" method="POST" autocomplete="off">
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</h2>
|
</h2>
|
||||||
<div id="accordion_smtp_body" class="accordion-collapse collapse {{if eq .ConfigSection 3}}show{{end}}" aria-labelledby="accordion_header_smtp" data-bs-parent="#accordion_configs">
|
<div id="accordion_smtp_body" class="accordion-collapse collapse {{if eq .ConfigSection 3}}show{{end}}" aria-labelledby="accordion_header_smtp" data-bs-parent="#accordion_configs">
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<p data-i18n="smtp.help" class="fs-5 fw-semibold mb-4"></p>
|
{{template "infomsg" "smtp.help"}}
|
||||||
|
|
||||||
<form id="configs_smtp_form" action="{{.CurrentURL}}" method="POST" autocomplete="off">
|
<form id="configs_smtp_form" action="{{.CurrentURL}}" method="POST" autocomplete="off">
|
||||||
|
|
||||||
|
|
|
@ -412,7 +412,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group row mt-10 fsconfig fsconfig-sftpfs">
|
<div class="form-group row mt-10 fsconfig fsconfig-sftpfs">
|
||||||
<label for="idSFTPPrefix" data-i18n="storage.sftp_home_dir" class="col-md-3 col-form-label">Roor directory</label>
|
<label for="idSFTPPrefix" data-i18n="storage.sftp_home_dir" class="col-md-3 col-form-label">Root directory</label>
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<input id="idSFTPPrefix" type="text" class="form-control" name="sftp_prefix" value="{{.SFTPConfig.Prefix}}" aria-describedby="idSFTPPrefixHelp"/>
|
<input id="idSFTPPrefix" type="text" class="form-control" name="sftp_prefix" value="{{.SFTPConfig.Prefix}}" aria-describedby="idSFTPPrefixHelp"/>
|
||||||
<div id="idSFTPPrefixHelp" class="form-text" data-i18n="storage.sftp_home_help"></div>
|
<div id="idSFTPPrefixHelp" class="form-text" data-i18n="storage.sftp_home_help"></div>
|
||||||
|
@ -517,7 +517,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div id="directory_patterns">
|
<div id="directory_patterns">
|
||||||
<p class="fs-5 fw-semibold mb-4" data-i18n="filters.directory_patterns_help"></p>
|
{{template "infomsg" "filters.directory_patterns_help"}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div data-repeater-list="directory_patterns">
|
<div data-repeater-list="directory_patterns">
|
||||||
{{- range $idx, $pattern := .GetFlatFilePatterns -}}
|
{{- range $idx, $pattern := .GetFlatFilePatterns -}}
|
||||||
|
|
|
@ -47,9 +47,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div id="virtual_folders">
|
<div id="virtual_folders">
|
||||||
<p class="fs-5 fw-semibold mb-4" data-i18n="user.virtual_folders_help">
|
{{template "infomsg" "user.virtual_folders_help"}}
|
||||||
Quota size/files -1 means included within user quota, 0 unlimited. Don't set -1 for shared folders. You can use MB/GB/TB suffix. Without suffix we assume bytes
|
|
||||||
</p>
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div data-repeater-list="virtual_folders">
|
<div data-repeater-list="virtual_folders">
|
||||||
{{- range $idx, $val := .Group.VirtualFolders}}
|
{{- range $idx, $val := .Group.VirtualFolders}}
|
||||||
|
@ -158,7 +156,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div id="directory_permissions">
|
<div id="directory_permissions">
|
||||||
<p class="fs-5 fw-semibold mb-4" data-i18n="filters.directory_permissions_help"></p>
|
{{template "infomsg" "filters.directory_permissions_help"}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div data-repeater-list="directory_permissions">
|
<div data-repeater-list="directory_permissions">
|
||||||
{{- range $idx, $dirPerms := .Group.GetPermissions -}}
|
{{- range $idx, $dirPerms := .Group.GetPermissions -}}
|
||||||
|
|
|
@ -116,11 +116,15 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</h2>
|
</h2>
|
||||||
<div id="accordion_rec_codes_body" class="accordion-collapse collapse" aria-labelledby="accordion_rec_codes" data-bs-parent="#id_accordion">
|
<div id="accordion_rec_codes_body" class="accordion-collapse collapse" aria-labelledby="accordion_rec_codes" data-bs-parent="#id_accordion">
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<div class="fs-5 text-gray-800">
|
<div class="notice d-flex bg-light-primary rounded border-primary border border-dashed p-6">
|
||||||
|
<div class="d-flex flex-stack flex-grow-1">
|
||||||
|
<div class="fs-5 fw-semibold text-break text-wrap text-gray-800">
|
||||||
<p data-i18n="2fa.recovery_codes_msg1">Recovery codes are a set of one time use codes that can be used in place of the authentication code to login to the web UI. You can use them if you lose access to your phone to login to your account and disable or regenerate two-factor configuration.</p>
|
<p data-i18n="2fa.recovery_codes_msg1">Recovery codes are a set of one time use codes that can be used in place of the authentication code to login to the web UI. You can use them if you lose access to your phone to login to your account and disable or regenerate two-factor configuration.</p>
|
||||||
<p data-i18n="2fa.recovery_codes_msg2">To keep your account secure, don't share or distribute your recovery codes. We recommend saving them with a secure password manager.</p>
|
<p data-i18n="2fa.recovery_codes_msg2">To keep your account secure, don't share or distribute your recovery codes. We recommend saving them with a secure password manager.</p>
|
||||||
<p data-i18n="2fa.recovery_codes_msg3" class="fs-4 fw-bold">If you generate new recovery codes, you automatically invalidate old ones.</p>
|
<p data-i18n="2fa.recovery_codes_msg3" class="fs-4 fw-bold">If you generate new recovery codes, you automatically invalidate old ones.</p>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="d-flex justify-content-end mt-10">
|
<div class="d-flex justify-content-end mt-10">
|
||||||
<button type="button" id="generate_recovery_code_btn" class="btn btn-light-primary px-10 me-10">
|
<button type="button" id="generate_recovery_code_btn" class="btn btn-light-primary px-10 me-10">
|
||||||
<span data-i18n="2fa.recovery_codes_generate" class="indicator-label">
|
<span data-i18n="2fa.recovery_codes_generate" class="indicator-label">
|
||||||
|
|
|
@ -216,7 +216,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
<h3 data-i18n="title.groups" class="card-title section-title-inner">Groups</h3>
|
<h3 data-i18n="title.groups" class="card-title section-title-inner">Groups</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p data-i18n="user.groups_help" class="fs-5 fw-semibold mb-4"></p>
|
{{template "infomsg" "user.groups_help"}}
|
||||||
<div class="form-group row mt-10">
|
<div class="form-group row mt-10">
|
||||||
<label for="idPrimaryGroup" data-i18n="user.primary_group" class="col-md-3 col-form-label">Primary group</label>
|
<label for="idPrimaryGroup" data-i18n="user.primary_group" class="col-md-3 col-form-label">Primary group</label>
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
|
@ -264,9 +264,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div id="virtual_folders">
|
<div id="virtual_folders">
|
||||||
<p class="fs-5 fw-semibold mb-4" data-i18n="user.virtual_folders_help">
|
{{template "infomsg" "user.virtual_folders_help"}}
|
||||||
Quota size/files -1 means included within user quota, 0 unlimited. Don't set -1 for shared folders. You can use MB/GB/TB suffix. Without suffix we assume bytes
|
|
||||||
</p>
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div data-repeater-list="virtual_folders">
|
<div data-repeater-list="virtual_folders">
|
||||||
{{- range $idx, $val := .User.VirtualFolders}}
|
{{- range $idx, $val := .User.VirtualFolders}}
|
||||||
|
@ -445,7 +443,7 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div id="directory_permissions">
|
<div id="directory_permissions">
|
||||||
<p class="fs-5 fw-semibold mb-4" data-i18n="filters.directory_permissions_help"></p>
|
{{template "infomsg" "filters.directory_permissions_help"}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div data-repeater-list="directory_permissions">
|
<div data-repeater-list="directory_permissions">
|
||||||
{{- range $idx, $dirPerms := .User.GetSubDirPermissions -}}
|
{{- range $idx, $dirPerms := .User.GetSubDirPermissions -}}
|
||||||
|
|
|
@ -132,11 +132,15 @@ explicit grant from the SFTPGo Team (support@sftpgo.com).
|
||||||
</h2>
|
</h2>
|
||||||
<div id="accordion_rec_codes_body" class="accordion-collapse collapse" aria-labelledby="accordion_rec_codes" data-bs-parent="#id_accordion">
|
<div id="accordion_rec_codes_body" class="accordion-collapse collapse" aria-labelledby="accordion_rec_codes" data-bs-parent="#id_accordion">
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
<div class="fs-5 text-gray-800">
|
<div class="notice d-flex bg-light-primary rounded border-primary border border-dashed p-6">
|
||||||
|
<div class="d-flex flex-stack flex-grow-1">
|
||||||
|
<div class="fs-5 fw-semibold text-break text-wrap text-gray-800">
|
||||||
<p data-i18n="2fa.recovery_codes_msg1">Recovery codes are a set of one time use codes that can be used in place of the authentication code to login to the web UI. You can use them if you lose access to your phone to login to your account and disable or regenerate two-factor configuration.</p>
|
<p data-i18n="2fa.recovery_codes_msg1">Recovery codes are a set of one time use codes that can be used in place of the authentication code to login to the web UI. You can use them if you lose access to your phone to login to your account and disable or regenerate two-factor configuration.</p>
|
||||||
<p data-i18n="2fa.recovery_codes_msg2">To keep your account secure, don't share or distribute your recovery codes. We recommend saving them with a secure password manager.</p>
|
<p data-i18n="2fa.recovery_codes_msg2">To keep your account secure, don't share or distribute your recovery codes. We recommend saving them with a secure password manager.</p>
|
||||||
<p data-i18n="2fa.recovery_codes_msg3" class="fs-4 fw-bold">If you generate new recovery codes, you automatically invalidate old ones.</p>
|
<p data-i18n="2fa.recovery_codes_msg3" class="fs-4 fw-bold">If you generate new recovery codes, you automatically invalidate old ones.</p>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="d-flex justify-content-end mt-10">
|
<div class="d-flex justify-content-end mt-10">
|
||||||
<button type="button" id="generate_recovery_code_btn" class="btn btn-light-primary px-10 me-10">
|
<button type="button" id="generate_recovery_code_btn" class="btn btn-light-primary px-10 me-10">
|
||||||
<span data-i18n="2fa.recovery_codes_generate" class="indicator-label">
|
<span data-i18n="2fa.recovery_codes_generate" class="indicator-label">
|
||||||
|
|
Loading…
Reference in a new issue