1 {% extends
"../base.html" %}
3 {% block title %}{{ account }}{% end block %}
6 {% import phonenumbers %}
8 <section class=
"hero {% if account.is_lwl() %}is-lwl{% else %}is-dark{% end %}">
9 <div class=
"hero-body">
10 <div class=
"container">
11 <div class=
"columns is-vcentered">
13 <nav class=
"breadcrumb is-medium" aria-label=
"breadcrumbs">
25 <li class=
"is-active">
26 <a href=
"#" aria-current=
"page">{{ account }}
</a>
31 <h1 class=
"title is-1">{{ account }}
</h1>
32 <h6 class=
"subtitle is-6">{{ account.uid }}
</h6>
35 {% if account.description %}
38 {% module Markdown(account.description) %}
44 <div class=
"column is-narrow is-hidden-mobile">
45 <figure class=
"image">
46 <img class=
"is-rounded" src=
"{{ account.avatar_url(192) }}">
54 <section class=
"section">
55 <div class=
"container">
57 <a class=
"button is-light" href=
"mailto:{{ account.email }}">
58 <span class=
"icon-text">
60 <i class=
"fas fa-envelope"></i>
62 <span>{{ account.email }}
</span>
66 <a class=
"button is-light" href=
"https://community.ipfire.org/u/{{ account.uid }}">
67 <span class=
"icon-text">
69 <i class=
"fas fa-users"></i>
71 <span>{{ _(
"Community Profile") }}
</span>
75 {% if account.has_shell() %}
76 <a class=
"button is-dark" href=
"/~{{ account.uid }}/">
77 <span class=
"icon-text">
79 <i class=
"fas fa-home"></i>
81 <span>{{ _(
"Home Directory") }}
</span>
86 {% if account.can_be_managed_by(current_user) %}
87 {% if account.has_sip() %}
88 <a class=
"button is-success" href=
"/users/{{ account.uid }}/calls">
89 <span class=
"icon-text">
91 <i class=
"fas fa-phone"></i>
93 <span>{{ _(
"Calls") }}
</span>
98 <a class=
"button is-light" href=
"/users/{{ account.uid }}/passwd">
99 {{ _(
"Change Password") }}
102 <a class=
"button is-warning" href=
"/users/{{ account.uid }}/edit">
106 <a class=
"button is-danger" href=
"/users/{{ account.uid }}/delete"
107 {% if not account.can_be_deleted_by(current_user) %}disabled{% end %}
>
113 {% if account == current_user %}
114 {# Suggest adding a description #}
115 {% if not current_user.description %}
116 <div class=
"notification is-info">
117 <strong>{{ _(
"Tell Us About Yourself!") }}
</strong>
119 {{ _(
"Add a couple of lines about yourself to your profile so that others get to know you better") }}
121 <a href=
"/users/{{ account.uid }}/edit#description">{{ _(
"Edit Profile") }}
</a>
124 {# Suggest uploading an avatar if this user does not have one #}
125 {% elif not current_user.has_avatar() %}
126 <div class=
"notification is-info">
127 <strong>{{ _(
"Upload An Avatar!") }}
</strong>
129 {{ _(
"A picture says more than a thousand words") }}
131 <a href=
"/users/{{ account.uid }}/edit#avatar">{{ _(
"Upload Avatar") }}
</a>
138 {% if current_user == account or current_user.is_staff() %}
139 <section class=
"section">
140 <div class=
"container">
141 <div class=
"columns">
143 {% if account.address %}
145 <h6 class=
"title is-6">{{ _(
"Address") }}
</h6>
148 {{ account.name }}
<br>
149 {% for line in account.address %}
157 {% if account.phone_number or account.fax_number %}
159 <h6 class=
"title is-6">{{ _(
"Phone Numbers") }}
</h6>
162 {% if account.has_sip() %}
164 {% if account.sip_channels %}
165 <i class=
"fas fa-phone-volume has-text-warning fa-fw"></i>
166 {% elif account.sip_registrations %}
167 <i class=
"fas fa-phone-square has-text-success fa-fw"></i>
168 {% elif account.uses_sip_forwarding() %}
169 <i class=
"fas fa-phone-square has-text-warning fa-fw"></i>
171 <i class=
"fas fa-phone-square has-text-danger fa-fw"></i>
174 <a href=
"sip:{{ account.sip_url }}">{{ account.sip_id }}
</a>
178 {% if account.phone_number %}
180 <i class=
"fas fa-phone fa-fw"></i>
182 <a href=
"tel:{{ format_phone_number_to_e164(account.phone_number) }}">
183 {{ format_phone_number(account.phone_number) }}
188 {% if account.fax_number %}
190 <i class=
"fas fa-fax fa-fw"></i>
192 <a href=
"fax:{{ format_phone_number_to_e164(account.fax_number) }}">
193 {{ format_phone_number(account.fax_number) }}
201 {% if current_user.is_staff() %}
202 {% if account.groups %}
203 <div class=
"column is-half">
204 <h6 class=
"title is-6">{{ _(
"Groups") }}
</h6>
207 {% for g in account.groups %}
208 <a class=
"panel-block" href=
"/users/groups/{{ g.gid }}">
209 <span class=
"panel-icon">
210 <i class=
"fas fa-users" aria-hidden=
"true"></i>
223 <section class=
"section">
224 <div class=
"container">
226 <div class=
"level-item has-text-centered">
228 <p class=
"heading">{{ _(
"Joined") }}
</p>
230 {{ locale.format_date(account.created_at, shorter=True) }}
235 <div class=
"level-item has-text-centered">
237 <p class=
"heading">{{ _(
"Last Modified") }}
</p>
239 {{ locale.format_date(account.modified_at) }}
244 {% if account.last_successful_authentication %}
245 <div class=
"level-item has-text-centered">
247 <p class=
"heading">{{ _(
"Last Successful Authentication") }}
</p>
249 {{ locale.format_date(account.last_successful_authentication) }}
255 {% if account.failed_login_count %}
256 <div class=
"level-item has-text-warning has-text-centered">
258 <p class=
"heading">{{ _(
"Failed Authentication Attempts") }}
</p>
259 <p>{{ account.failed_login_count }}
</p>
263 {% if account.last_failed_authentication %}
264 <div class=
"level-item has-text-warning has-text-centered">
266 <p class=
"heading">{{ _(
"Last Failed Authentication Attempt") }}
</p>
267 <p>{{ locale.format_date(account.last_failed_authentication) }}
</p>