2
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
<html xmlns="http://www.w3.org/1999/xhtml"
5
xmlns:xi="http://www.w3.org/2001/XInclude"
6
xmlns:py="http://genshi.edgewall.org/"
7
xmlns:i18n="http://genshi.edgewall.org/i18n"
8
i18n:domain="acct_mgr">
9
<xi:include href="admin.html" />
12
dgettext = _dgettext ?>
14
<title>Account Details</title>
18
<div id="account_details">
20
<h2>Review User Account Details</h2>
22
<p py:when="name" i18n:msg="name, user">
23
for <b>${name}</b> (<em>${user}</em>)
25
<p py:otherwise="" i18n:msg="user">
31
<form method="get" action="${url}">
34
<label>Account Status</label>
37
<div id="user_store" py:when="user_store">
38
<p i18n:msg="order_num,store">
39
Credentials for this user are stored in AuthStore number
40
<em>${store_order_num}</em> (${user_store}).</p>
42
<p class="hint" py:when="ignore_auth_case" i18n:msg="bool">
43
Username matching is set to <b>not case-sensitive</b>.</p>
44
<p class="hint" py:otherwise="" i18n:msg="bool">
45
Username matching is set to <em>case-sensitive</em>.</p>
48
<div id="no_user_store" py:otherwise="">
49
<p i18n:msg="">No store provides credentials for this user,
50
so the user currently can't be authenticated and
51
access to this <b>account is effectively blocked</b>,
52
while account details may still be available.</p>
56
<hr py:if="pretty_lock_time or (lock_count > 0)" />
58
<div id="user_locked" py:if="user_locked is True">
61
<span py:when="release_time" i18n:msg="time">
62
<img src="${href.chrome('/acct_mgr/time-locked.png')}" />
63
This account has been locked until ${release_time}<br />
64
and even valid login attempts are rejected meanwhile.</span>
65
<span py:otherwise="">
66
<img src="${href.chrome('/acct_mgr/locked.png')}" />
67
This account has been locked permanently.</span>
69
<span class="buttons">
70
<input type="submit" name="release"
71
alt="Release account lock"
72
title="Release account lock"
73
value="${dgettext('acct_mgr', 'Unlock')}" />
79
<div id="restricted" py:when="pretty_lock_time">
81
<div py:when="lock_count > 0">
82
<i18n:choose numeral="lock_count" params="count"
83
py:if="not _dgettext">
84
<p i18n:singular="">Lock condition has been met
85
${lock_count} time by now.</p>
86
<p i18n:plural="">Lock condition has been met
87
${lock_count} times by now.</p>
89
<!--! i18n:choose doesn't play nicely with Trac releases
90
before Trac 0.12, so we provide an alternative message
91
that is excluded from extraction and translation. -->
92
<p py:if="_dgettext" xml:lang="en">Lock condition has been met
93
${lock_count} time(s) by now.</p>
95
Therefore after another failed login attempt authentication
96
for this account would be retarded by ${pretty_lock_time}.
100
<div py:otherwise="">
101
<p>Lock condition has not been met yet.</p>
106
<div id="unrestricted" py:otherwise="">
107
<p py:if="not user_locked is True">
108
No constraints are set for this account.</p>
113
<div id="verification" py:if="verification">
116
<label>Verification</label>
119
<div py:when="email">
121
Current email address: <${email}></p>
123
<p py:when="email_verified is True">
124
This address has been verified successfully.</p>
125
<p py:when="not email_verified is None" i18n:msg="token">
126
Verification is pending
127
(<span class="hint">token: '${email_verified}' </span>).</p>
129
This address has not been verified yet.</p>
132
<div py:otherwise="">
133
<p>No email address is registered for this account.</p>
141
<label>Access History</label>
144
<p py:when="last_visit" i18n:msg="time">
145
Last login: ${last_visit}</p>
146
<p py:otherwise="">The user has not logged in before.</p>
149
<div id="failed_attempts" py:when="attempts_count > 0">
150
<p i18n:msg="count">Total failed attempts: ${attempts_count}</p>
151
<p class="tableheader">
152
Table: Last failed login attempts log view</p>
153
<table class="listing" id="login_attempts">
161
<tr py:for="attempt in attempts">
162
<td>${attempt.ipnr}</td>
163
<td>${attempt.time}</td>
167
<div class="buttons" py:if="not user_locked is True">
168
<input type="submit" name="delete"
169
alt="Delete login failure log"
170
title="Delete login failure log"
171
value="${dgettext('acct_mgr', 'Delete Log')}" />
174
<div id="no_failed_attempts" py:otherwise="">
175
<p>There is currently no failed login attempt logged.</p>
180
<div class="buttons">
181
<input type="hidden" name="user" value="${user}" />
182
<input type="submit" name="list"
183
value="${dgettext('acct_mgr', 'Back to accounts')}" />
184
<input type="submit" name="update"
185
value="${dgettext('acct_mgr', 'Update')}" />