Edit template for controller - Refine params copy and bring DB opens up to spec with UTF8

This commit is contained in:
2025-10-06 10:57:00 +01:00
parent 29f8de63fd
commit ecb846fc6c
119 changed files with 10059 additions and 36 deletions

View File

@@ -0,0 +1,161 @@
<div>
% my $btn = l("usr_ADD_USER");
<form action="/smanager/useraccounts" method="POST">
<br>
<div>
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %> </button>
</div>
</form>
<br>
<%= $c->render_to_string(inline => $c->l("usr_FIRSTPAGE_DESC")) %>
<br>
%#= dumper @$users
% my $numUsers = @$users;
% if ($numUsers == 0) {
<%=l "usr_NO_USER_ACCOUNTS" %>
% } else {
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th><%= l "ACCOUNT" %></th>
<th><%= l "USER_NAME" %></th>
<th><%= l "usr_VPN_CLIENT_ACCESS" %></th>
<th><%= l "usr_FORWARDING_ADDRESS" %></th>
<th class="text-center text-center" colspan="5"><%= l "ACTION" %></th>
</tr>
</thead>
<tbody>
% foreach my $user (@$users) {
% my $username = $user->key();
% my $first = $user->prop("FirstName");
% my $last = $user->prop("LastName");
% my $lockable = $user->prop("Lockable") || "yes";
% my $removable = $user->prop("Removable") || "yes";
% my $fwd = (($user->prop("EmailForward") || "local") =~ m/^forward|both$/) ?
% $user->prop("ForwardAddress") : "";
% my $vpnaccess = $user->prop("VPNClientAccess") || "no";
% $vpnaccess = $vpnaccess eq "yes" ? $c->l("YES") : $c->l("NO");
% my $password_set = $user->prop("PasswordSet");
% my $useraccounts_user_name = $user->key; # useraccountss_entry name extracted from the data structure
% my $csrf_token = "TOKEN"; # CSRF token for security
% my $modify_text = l("MODIFY"); # Localized text
% my $remove_text = l("REMOVE"); # Localized text
% my $password_text = l("PASSWORD_RESET");
% my $lock_text = l("Lock"); # Localized text
% my $roundcube_text = l("Webmail"); # Localized text
% my ($actionModify, $actionLock, $actionResetPw, $actionRemove,$actionroundcube) = "&nbsp;";
% my $thisdomain = $c->req->url->to_abs->host;
<tr class="align-middle">
<td><%= $username %></td>
<td><%= $first %>&nbsp<%=$last %></td>
<td><%= $vpnaccess %></td>
<td><%= $fwd %></td>
% if ($useraccounts_user_name eq "admin") {
%$actionModify = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=UPS&user=$useraccounts_user_name">
% <button type="button" class="btn btn-primary btn-sm" title="$modify_text">
% $modify_text
% </button>
%</a>
%};
%$actionResetPw = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWS&user=$useraccounts_user_name">
% <button type="button" class="btn btn-primary btn-sm" title="$password_text" >
% $password_text
% </button>
%</a>
%};
% } else {
%$actionModify = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=UPD&user=$useraccounts_user_name">
% <button type="button" class="btn btn-primary btn-sm" title="$modify_text" >
% $modify_text
% </button>
%</a>
%};
% }
% if ($password_set ne "yes") {
<!-- Needs a fix here -->
%#$actionLock = l("ACCOUNT_LOCKED");
<!-- Sets BOTH columns - possibly leave out Reset Password here?-->
%$actionLock = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWD&user=$useraccounts_user_name">
% <button type="button" class="btn btn-danger btn-sm" title="$password_text - currently unset">
% Unlock
% </button>
%</a>
%};
%$actionResetPw = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWD&user=$useraccounts_user_name">
% <button type="button" class="btn btn-primary btn-sm" title="$password_text - currently unset">
% $password_text
% </button>
%</a>
%};
% } elsif ($useraccounts_user_name ne "admin") {
%$actionLock = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=LCK&user=$useraccounts_user_name">
% <button type="button" class="btn btn-primary btn-sm" title="$lock_text" >
% $lock_text
% </button>
%</a>
%};
%$actionResetPw = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=PWD&user=$useraccounts_user_name">
% <button type="button" class="btn btn-primary btn-sm" title="$password_text" >
% $password_text
% </button>
%</a>
%};
% }
% if ( $removable eq "yes" ) {
%$actionRemove = qq{
%<a href="useraccountsd?CsrfDef=$csrf_token&trt=DEL&user=$useraccounts_user_name">
% <button type="button" class="btn btn-primary btn-sm" title="$remove_text" >
% $remove_text
% </button>
%</a>
%};
% }
<!-- If webmail disabled??? -->
% $actionroundcube = qq{
%<a href="roundcubepanel?CsrfDef=$csrf_token&url=https://$thisdomain/roundcube?_user=$useraccounts_user_name&height=600px">
% <button type="button" class="btn btn-primary btn-sm" title="$roundcube_text" >
% $roundcube_text
% </button>
%</a>
%};
<td class="text-center"><%= $c->render_to_string(inline => $actionModify) %></td>
<td class="text-center"><%= $c->render_to_string(inline => $actionResetPw) %></td>
<td class="text-center"><%= $c->render_to_string(inline => $actionLock) %></td>
<td class="text-center"><%= $c->render_to_string(inline => $actionRemove) %></td>
<td class="text-center"><%= $c->render_to_string(inline => $actionroundcube) %></td>
</tr>
% }
</tbody>
</table>
</div>
% }
<%= hidden_field "trt" => $usr_datas->{trt} %>
</div>

View File

@@ -0,0 +1,57 @@
<div>
% my $btn = l("Lock");
<form action="/smanager/useraccountsd" method="POST">
%#= form_for "/useraccountsd" => (method => "POST") => begin
<div>
<h2><%= l "Lock_ACCOUNT_TITLE" %></h2>
</div>
<br>
<div>
Needs a text change in the Lex files
<br>
<%= $c->l("Lock_DESC", $usr_datas->{user}, $usr_datas->{name} ) %>
</div>
<br><br>
<table class="table table-bordered user-table-max-wdith">
<thead>
<tr>
<th class="col-sm">
%=l "ACCOUNT"
</th>
<th class="col-sm">
%=l "USER_NAME"
</th>
</tr>
</thead>
<tbody>
<tr>
<td><%= $usr_datas->{user} %></td>
<td><%= $usr_datas->{name} %></td>
</tr>
</tbody>
</table>
<br>
%= $c->render_to_string(inline => $c->l("Lock_DESC2"))
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
%= hidden_field "trt" => $usr_datas->{trt}
%= hidden_field "user" => $usr_datas->{user}
%= hidden_field "name" => $usr_datas->{name}
</form>
%# end
</div>

View File

@@ -0,0 +1,296 @@
<div>
<br>
<h2><%= l "usr_P2_TITLE" %></h2>
<br>
<%= $c->render_to_string(inline => l ("usr_CREATE_MODIFY_DESC")) %>
<br><br>
% my $btn = l("ADD");
<form action="/smanager/useraccountsd" method="POST">
%#= form_for "/useraccountsd" => (method => "POST") => begin
% if ( $usr_datas->{trt} eq "ADD" ) {
% param "user" => $usr_datas->{user} unless param "user";
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputAccountName" class="col-form-label"><%= l "usr_ACCOUNT_NAME" %></label>
</div>
<div class="col-auto">
<input type="text" name="user" id="inputAccountName" class="form-control" aria-describedby="AccountName" value="<%= $usr_datas->{user} %>" >
</div>
<div class="col-auto">
<span id="passwordHelpInline" class="form-text">
User
</span>
</div>
</div>
% } else {
<!-- If not user set Button Save not Add -->
% $btn = l("SAVE");
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputLastNAme" class="col-form-label"><%= l "usr_ACCOUNT_NAME" %></label>
</div>
<div class="col-auto">
<input disabled type="text" id="disabledTextInput" class="form-control" placeholder="<%= $usr_datas->{user} %>">
</div>
</div>
% }
<br>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputFirstName" class="col-form-label"><%= l "usr_FIRSTNAME" %></label>
</div>
<div class="col-auto">
<input type="text" name="FirstName" id="inputFirstName" class="form-control" aria-describedby="FirstName" value="<%= $usr_datas->{firstname} %>" >
</div>
<div class="col-auto">
<span id="passwordHelpInline" class="form-text">
First Name
</span>
</div>
</div>
<br>
% param "LastName" => $usr_datas->{lastname} unless param "LastName";
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputLastNAme" class="col-form-label"><%= l "usr_LASTNAME" %></label>
</div>
<div class="col-auto">
<input type="text" name="LastName" id="inputLastName" class="form-control" aria-describedby="LastName" value="<%= $usr_datas->{lastname} %>" >
</div>
<div class="col-auto">
<span id="passwordHelpInline" class="form-text">
Last Name
</span>
</div>
</div>
<br>
% param "Dept" => $usr_datas->{dept} unless param "Dept";
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputDepartment" class="col-form-label"><%= l "Department" %></label>
</div>
<div class="col-auto">
<input type="text" name="Dept" id="inputEmail" class="form-control" aria-describedby="Dept" value="<%= $usr_datas->{dept} %>" >
</div>
<div class="col-auto">
<span id="passwordHelpInline" class="form-text">
Department
</span>
</div>
</div>
<br>
% param "Company" => $usr_datas->{company} unless param "Company";
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputCompany" class="col-form-label"><%= l "Company" %></label>
</div>
<div class="col-auto">
<input type="text" name="Company" id="inputCompany" class="form-control" aria-describedby="Company" value="<%= $usr_datas->{company} %>" >
</div>
<div class="col-auto">
<span id="passwordHelpInline" class="form-text">
Company
</span>
</div>
</div>
<br>
% param "Street" => $usr_datas->{street} unless param "Street";
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputStreet" class="col-form-label"><%= l "usr_STREET_ADDRESS" %></label>
</div>
<div class="col-auto">
<input type="text" name="Street" id="inputCompany" class="form-control" aria-describedby="Street" value="<%= $usr_datas->{street} %>" >
</div>
<div class="col-auto">
<span id="passwordHelpInline" class="form-text">
Street
</span>
</div>
</div>
<br>
% param "City" => $usr_datas->{city} unless param "City";
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputCity" class="col-form-label"><%= l "City" %></label>
</div>
<div class="col-auto">
<input type="text" name="City" id="inputCity" class="form-control" aria-describedby="City" value="<%= $usr_datas->{city} %>" >
</div>
<div class="col-auto">
<span id="passwordHelpInline" class="form-text">
City
</span>
</div>
</div>
<br>
% param "Phone" => $usr_datas->{phone} unless param "Phone";
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputPhone" class="col-form-label"><%= l "usr_PHONE_NUMBER" %></label>
</div>
<div class="col-auto">
<input type="text" name="Phone" id="inputPhone" class="form-control" aria-describedby="City" value="<%= $usr_datas->{phone} %>" >
</div>
<div class="col-auto">
<span id="passwordHelpInline" class="form-text">
Phone
</span>
</div>
</div>
<br>
% param "EmailForward" => $usr_datas->{emailforward} unless param "EmailForward";
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputEmailDelivery" class="col-form-label"><%= l "usr_EMAIL_DELIVERY" %></label>
</div>
<div class="col-auto">
%= select_field "EmailForward" => $c->emailForward_list(), class => "form-select"
</div>
</div>
<br>
% param "ForwardAddress" => $usr_datas->{forwardaddress} unless param "ForwardAddress";
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputEmail" class="col-form-label"><%= l "usr_FORWARDING_ADDRESS" %></label>
</div>
<div class="col-auto">
<input type="email" name="ForwardAddresss" id="inputEmail" class="form-control" aria-describedby="Email" value=<%= $usr_datas->{forwardaddress} %>>
</div>
<div class="col-auto">
<span id="passwordHelpInline" class="form-text">
Email forwarding address
</span>
</div>
</div>
<br>
% param "VPNClientAccess" => $usr_datas->{vpnclientaccess} unless param "VPNClientAccess";
<div class="row g-3 align-items-center">
<div class="col-md-2">
<label for="inputVPNClientAccess" class="col-form-label"><%= l "usr_VPN_CLIENT_ACCESS" %></label>
</div>
<div class="col-auto">
%= select_field "VPNClientAccess" => [[ (l "NO") => "no"], [ (l "YES") => "yes"]], class => "form-select"
</div>
</div>
<br>
<!-- fix from here -->
<!-- Begin if ipsec needs fixing -->
% if ( $usr_datas->{trt} eq "UPD" and $c->ipsec_for_acct eq "OK" ) {
% my $btn2 = $c->l("DOWNLOAD");
%= form_for "/useraccountso" => (method => "POST") => begin
%= l "usr_LABEL_IPSECRW_DOWNLOAD"
%= submit_button $btn2, class => ""
%= hidden_field "trt" => "CRT"
%= hidden_field "user" => $usr_datas->{user}
% end
% }
<!-- End if ipsec -->
<!-- Groups begin -->
<div>
% my @groups = @{$c->get_groups()};
%#= dumper @groups
% if ( @groups ) {
<br><br>
%=l "usr_GROUP_MEMBERSHIPS"
<br><br>
<table class="table table-bordered user-table-max-wdith">
<thead>
<tr>
<th class="col-sm-1"><%= l "usr_MEMBER" %></th>
<th class="col-sm-1"><%=l "GROUP" %></th>
<th class="col-sm-1"><%=l "DESCRIPTION" %></th>
</tr>
</thead>
<tbody>
% foreach my $g ( @groups) {
% my $user = $usr_datas->{user};
% my $groupname = $g->key();
% my $description = $g->prop("Description");
% my $checked = "";
% if ( $user and $c->is_user_in_group($user, $groupname) ) {
% $checked = "checked";
% }
<tr>
<td>
% if ( $checked eq "checked" ) {
<input type="checkbox" name="groupMemberships" checked value="<%= $groupname %>">
%} else {
%= check_box "groupMemberships" => $groupname
%}
</td>
<td><%= $groupname %></td>
<td><%= $description %></td>
</tr>
% }
</tbody>
</table>
% }
<!-- Groups End -->
</div>
<div class="row g-3 align-items-center">
<div class="col-md-2">
<button type="submit" class="btn btn-primary btn-sm"><%= $btn %></button>
</div>
</div>
%= hidden_field "trt" => $usr_datas->{trt}
% if ( $usr_datas->{trt} eq "UPD" ) {
%= hidden_field "user" => $usr_datas->{user}
% }
</form>
%#end
</div>
<!-- End of containers-sm -->

View File

@@ -0,0 +1,28 @@
<div id="usr_lock">
% my $btn = l("Lock");
%= form_for "/useraccountsd" => (method => "POST") => begin
<p>
<h2>
%=l "Lock_ACCOUNT_TITLE"
</h2>
<br>
%= $c->l("Lock_DESC", $usr_datas->{user}, $usr_datas->{name} );
<br>
%= $c->render_to_string(inline => $c->l("Lock_DESC2"))
</p>
<p>
<br>
%= submit_button "$btn", class => "action"
</p>
%= hidden_field "trt" => $usr_datas->{trt}
%= hidden_field "user" => $usr_datas->{user}
%= hidden_field "name" => $usr_datas->{name}
% end
</div>

View File

@@ -0,0 +1,185 @@
<div id="usr_upd">
% my $btn = l("ADD");
%= form_for "/useraccountsd" => (method => "POST") => begin
<p>
<h2>
%=l "usr_P2_TITLE"
</h2>
<br>
%= $c->render_to_string(inline => l ("usr_CREATE_MODIFY_DESC"))
</p>
<p>
<span class=label>
%=l "usr_ACCOUNT_NAME"
</span><span class=data>
% if ( $usr_datas->{trt} eq "ADD" ) {
% param "user" => $usr_datas->{user} unless param "user";
%= text_field "user", class => "input"
% } else {
% $btn = l("SAVE");
%= $usr_datas->{user}, class => "data"
% }
</span>
</p>
<p>
<span class=label>
%=l "usr_FIRSTNAME"
</span><span class=data>
% param "FirstName" => $usr_datas->{firstname} unless param "FirstName";
%= text_field "FirstName", class => "input"
</span>
</p>
<p>
<span class=label>
%=l "usr_LASTNAME"
</span><span class=data>
% param "LastName" => $usr_datas->{lastname} unless param "LastName";
%= text_field "LastName", class => "input"
</span>
</p>
<p>
<span class=label>
%=l "Department"
</span><span class=data>
% param "Dept" => $usr_datas->{dept} unless param "Dept";
%= text_field "Dept", class => "input"
</span>
</p>
<p>
<span class=label>
%=l "Company"
</span><span class=data>
% param "Company" => $usr_datas->{company} unless param "Company";
%= text_field "Company", class => "input"
</span>
</p>
<p>
<span class=label>
%=l "usr_STREET_ADDRESS"
</span><span class=data>
% param "Street" => $usr_datas->{street} unless param "Street";
%= text_field "Street", class => "input"
</span>
</p>
<p>
<span class=label>
%=l "City"
</span><span class=data>
% param "City" => $usr_datas->{city} unless param "City";
%= text_field "City", class => "input"
</span>
</p>
<p>
<span class=label>
%=l "usr_PHONE_NUMBER"
</span><span class=data>
% param "Phone" => $usr_datas->{phone} unless param "Phone";
%= text_field "Phone", class => "input"
</span>
</p>
<p>
<span class=label>
%=l "usr_EMAIL_DELIVERY"
</span><span class=data>
% param "EmailForward" => $usr_datas->{emailforward} unless param "EmailForward";
%= select_field "EmailForward" => $c->emailForward_list(), class => "input"
</span>
</p>
<p>
<span class=label>
%=l "usr_FORWARDING_ADDRESS"
</span><span class=data>
% param "ForwardAddress" => $usr_datas->{forwardaddress} unless param "ForwardAddress";
%= text_field "ForwardAddress", class => "input"
</span>
</p>
<p>
<span class=label>
%=l "usr_VPN_CLIENT_ACCESS"
</span><span class=data>
% param "VPNClientAccess" => $usr_datas->{vpnclientaccess} unless param "VPNClientAccess";
%= select_field "VPNClientAccess" => [[ (l "NO") => "no"], [ (l "YES") => "yes"]], class => "input"
</span>
</p>
% if ( $usr_datas->{trt} eq "UPD" and $c->ipsec_for_acct eq "OK" ) {
% my $btn2 = $c->l("DOWNLOAD");
%= form_for "/useraccountso" => (method => "POST") => begin
<p>
<span class=label>
%=l "usr_LABEL_IPSECRW_DOWNLOAD"
</span><span class=data>
%= submit_button $btn2, class => "action"
</span>
</p>
%= hidden_field "trt" => "CRT"
%= hidden_field "user" => $usr_datas->{user}
%end
% }
% my @groups = @{$c->get_groups()};
% if ( @groups ) {
<p>
<span class=label>
%=l "usr_GROUP_MEMBERSHIPS"
</span>
<span class=data>
<table class="sme-border "><thead>
<tr><th class="sme-border">
%=l "usr_MEMBER"
</th><th class="sme-border">
%=l "GROUP"
</th><th class="sme-border">
%=l "DESCRIPTION"
</th></tr>
</thead><tbody>
% foreach my $g ( @groups) {
% my $user = $usr_datas->{user};
% my $groupname = $g->key();
% my $description = $g->prop("Description");
% my $checked = "";
% if ( $user and $c->is_user_in_group($user, $groupname) ) {
% $checked = "checked";
% }
<tr>
<td>
% if ( $checked eq "checked" ) {
<!-- % = check_box "groupMemberships", value => $groupname, checked => $checked -->
<input type="checkbox" name="groupMemberships" checked value="<%= $groupname %>">
%} else {
%= check_box "groupMemberships" => $groupname
%}
</td>
<!-- t td => (class => "sme-border") => (check_box " groupMemberships" => $groupname $checked) -->
%= t td => (class => "sme-border") => $groupname
%= t td => (class => "sme-border") => "$description"
</tr>
% }
</tbody>
</table>
</span>
</p>
% }
<p>
<br><br>
%= submit_button $btn, class => "action"
</p>
%= hidden_field "trt" => $usr_datas->{trt}
% if ( $usr_datas->{trt} eq "UPD" ) {
%= hidden_field "user" => $usr_datas->{user}
% }
% end
</div>

View File

@@ -0,0 +1,4 @@
'Users' => 'Users',
'usr_CANNOT_MODIFY_USER_GROUPS' => 'Error: an internal error occurred while attempting to modify the group "[_1]" for user "[_2]".',
'usr_LOCK_ACCOUNT' => 'Lock account',
'usr_SYSTEM_PASSWORD_FORM_TITLE' => 'Change system password',

View File

@@ -0,0 +1,60 @@
#
# Lex file for Useraccounts generated on 2025-07-17 09:52:29
#
'Users' => 'Users',
'usr_ACCOUNT_CONFLICT' => 'Error: the account "[_1]" can"t be created because there is already a [_1] account of that name.',
'usr_ACCOUNT_NAME' => 'Account name',
'usr_ACCOUNT_TOO_LONG' => 'Error: account name is too long. The maximum is [_1] characters.',
'usr_ACCT_NAME_HAS_INVALID_CHARS' => 'The account name "[_1]" contains invalid characters. Account names must start with a lower case letter and contain only lower case letters, numbers, hyphens, periods and underscores.',
'usr_ADD_USER' => 'Add user account',
'usr_CANNOT_CONTAIN_WHITESPACE' => 'This field cannot contain white-space',
'usr_CANNOT_MODIFY_USER' => 'Error: an internal error occurred while attempting to modify the user "[_1]".',
'usr_CANNOT_MODIFY_USER_GROUPS' => 'Error: an internal error occurred while attempting to modify the group "[_1]" for user "[_2]".',
'usr_CREATE_MODIFY_DESC' => '<p>The account name should contain only lower-case letters, numbers, hyphens, periods, underscores and should start with a lower-case letter. For example "betty","hjohnson", and "mary-jane" are all valid account names, but "3friends", "John Smith", and "henry:miller" are not. </p><p>Note that two special pseudonyms will be created for each new account. These pseudonyms provide the ability to have alternative mail accounts for that user which include their first name and last name separated with a period (.) and underscore (_). So, for the account "betty" with first name "Betty" and last name "Rubble" two pseudonyms are created as betty.rubble and betty_rubble. </p><p>The directory information (department, company, etc.) can be changed from the defaults shown below. The changes will apply only to this user. </p>',
'usr_CURRENT_SYSTEM_PASSWORD' => 'Current system password',
'usr_DELIVER_AND_FORWARD' => 'Both deliver locally and forward',
'usr_DELIVER_EMAIL_LOCALLY' => 'Deliver email locally',
'usr_EMAIL_DELIVERY' => 'Email delivery',
'usr_ERR_OCCURRED_CREATING' => 'An error occurred creating the user.',
'usr_ERR_OCCURRED_DELETING' => 'An error occurred while trying to delete the user.',
'usr_ERR_OCCURRED_MODIFYING_PASSWORD' => 'An error occurred while updating the password',
'usr_FIRSTNAME' => 'First name',
'usr_FIRSTPAGE_DESC' => '<p>You can modify, lock or remove any account or reset the account"s password by clicking on the corresponding command next to the account. </p><p>If the account is marked as locked, that means that the user"s password needs to be reset. Please note that newly created accounts are automatically locked until the password is changed. </p>',
'usr_FORM_TITLE' => 'Create, modify, or remove user accounts',
'usr_FORWARD_EMAIL' => 'Forward email to address below',
'usr_FORWARDING_ADDRESS' => 'Forwarding address',
'usr_GROUP_MEMBERSHIPS' => 'Group memberships',
'usr_LABEL_IPSECRW_DOWNLOAD' => 'Download digital certificate to IPSec client',
'usr_LASTNAME' => 'Last name',
'usr_LOCK_ACCOUNT' => 'Lock account',
'usr_LOCK_ACCOUNT_TITLE' => 'Lock user account',
'usr_LOCK_DESC' => 'You are about to lock the user account "[_1]" ([_2])',
'usr_LOCK_DESC2' => 'This user account will be locked. This means that this user will not be able to log in, and will not be able to collect e-mail. Any e-mail arriving will still be stored and/or forwarded to an external e-mail address, as configured. The account may be activated in the future by setting a new password. The current password will not be retained.</p><p><b>Are you sure you wish to lock this account?</b>',
'usr_LOCKED_ACCOUNT' => 'Successfully locked account for user "[_1]".',
'usr_MEMBER' => 'Member?',
'usr_MODIFY_ADMIN_TITLE' => 'Modify the admin account',
'usr_NEW_SYSTEM_PASSWORD' => 'New system password',
'usr_NEW_SYSTEM_PASSWORD_VERIFY' => 'New system password (verify)',
'usr_NO_SUCH_USER' => 'Error: the user account "[_1]" does not exist.',
'usr_NO_USER_ACCOUNTS' => 'There are no user accounts on this system.',
'usr_P2_TITLE' => 'Create or modify',
'usr_PASSWORD_CHANGE_SUCCEEDED' => 'Successfully changed password for user "[_1]".',
'usr_PHONE_NUMBER' => 'Phone number',
'usr_PSEUDONYM_CLASH' => 'Error: the pseudonym "[_1]" is already taken by the existing user account "[_1]".To differentiate, add initials to this field.',
'usr_REMOVE_ACCOUNT_TITLE' => 'Remove user account',
'usr_REMOVE_DESC' => 'You are about to remove the user account "[_1]" ([_2])',
'usr_REMOVE_DESC2' => 'All files belonging to this user account will be deleted. Also, any e-mail for this user account still remaining on the server (i.e. that has not yet been retrieved by the user) will be discarded. </p><p><b>Are you sure you wish to remove this account?</b>',
'usr_RESET_DESC' => 'You are about to change the password for the user account "[_1]" ([_2])',
'usr_RESET_DESC2' => 'Enter the new password in the fields below',
'usr_STREET_ADDRESS' => 'Street address',
'usr_SYSTEM_PASSWORD_AUTH_ERROR' => 'The current password is incorrect.',
'usr_SYSTEM_PASSWORD_CHANGED' => 'The system password has been changed.',
'usr_SYSTEM_PASSWORD_DESCRIPTION' => 'Certain services on this server installation require a username and password (for example this web page for the server manager application). The username is always admin. You can change the system password using the fields below.',
'usr_SYSTEM_PASSWORD_FORM_TITLE' => 'Change system password',
'usr_SYSTEM_PASSWORD_UNPRINTABLES_IN_PASS' => 'Password must contain only printable characters',
'usr_SYSTEM_PASSWORD_VERIFY_ERROR' => 'The two passwords are not identical.',
'usr_TAINTED_USER' => 'The account name "[_1]" contains invalid characters.',
'usr_UNACCEPTABLE_CHARS' => 'This field must contain only letters, numbers, dots, hypens and underscores and start with a letter',
'usr_USER_CREATED' => 'Successfully created user account. ',
'usr_USER_MODIFIED' => 'Successfully modified user account. ',
'usr_VPN_CLIENT_ACCESS' => 'VPN Client Access',