zulip/static/templates/settings/account_settings.hbs

203 lines
13 KiB
Handlebars

<div id="account-settings" class="settings-section show" data-name="your-account">
<div class="alert" id="dev-account-settings-status"></div>
<div class="account-settings-form">
<div class="inline-block">
<div id="user_details_section">
<h3 class="inline-block">{{t "User settings" }}</h3>
<form class="email-change-form grid">
<div class="alert-notification" id="account-settings-status"></div>
<div class="input-group user-name-section">
<label class="inline-block title">{{t "Email" }}</label>
<button id='change_email' type="button" class="button btn-link small rounded inline-block" id='email_value'
{{#if (and page_params.realm_email_changes_disabled (not page_params.is_admin))}}disabled="disabled"{{/if}}>
{{page_params.delivery_email}}
<i class="fa fa-pencil"></i>
</button>
<i class="tippy-zulip-tooltip fa fa-question-circle change_email_tooltip settings-info-icon" {{#if (or (not page_params.realm_email_changes_disabled) page_params.is_admin)}}style="display: none;"{{/if}} data-tippy-content="{{t 'Email address changes are disabled in this organization.' }}"></i>
</div>
<div id="change_email_modal" class="modal modal-bg hide fade" tabindex="-1" role="dialog"
aria-labelledby="change_email_modal_label" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="{{t 'Close' }}"><span aria-hidden="true">&times;</span></button>
<h3 class="inline-block" id="change_email_modal_label">{{t "Change email" }}</h3>
<div class="alert-notification change_email_info"></div>
</div>
<div class="modal-body">
<div class="input-group email_change_container">
<label for="email">{{t "New email" }}</label>
<input type="text" name="email" value="{{ page_params.delivery_email }}" autocomplete="off" spellcheck="false" autofocus="autofocus"/>
</div>
</div>
<div class="modal-footer">
<button class="button white rounded" type="button" data-dismiss="modal">{{t "Cancel" }}</button>
<button id='change_email_button' class="button rounded sea-green" data-dismiss="modal">{{t "Change" }}</button>
</div>
</div>
</form>
{{#if page_params.two_fa_enabled }}
<p for="two_factor_auth" class="inline-block title">
{{t "Two factor authentication" }}: {{#if page_params.two_fa_enabled_user }}{{t "Enabled" }}{{else}}{{t "Disabled" }}{{/if}}
<a target="_blank" rel="noopener noreferrer" id="two_factor_auth" href="/account/two_factor/" title="{{t 'Set up two factor authentication' }}">[{{t "Setup" }}]</a>
</p>
{{/if}}
<form class="form-horizontal full-name-change-form">
<div class="input-group inline-block grid user-name-parent">
<div class="user-name-section inline-block">
<label for="full_name" class="inline-block title">{{t "Full name" }}</label>
<button type="button" id='change_full_name' class="button btn-link small white rounded inline-block" id="full_name"
{{#unless user_can_change_name}}disabled="disabled"{{/unless}}>
<span id="full_name_value">{{page_params.full_name}}</span>
<i class="fa fa-pencil"></i>
</button>
<i class="fa fa-question-circle change_name_tooltip tippy-zulip-tooltip settings-info-icon"
{{#if user_can_change_name}}style="display:none"{{/if}}
data-tippy-content="{{t 'Name changes are disabled in this organization. Contact an administrator to change your name.' }}">
</i>
</div>
<div id="change_full_name_modal" class="modal modal-bg hide fade" tabindex="-1" role="dialog"
aria-labelledby="change_full_name_modal_label" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="{{t 'Close' }}"><span aria-hidden="true">&times;</span></button>
<h3 class="inline-block" id="change_full_name_modal_label">{{t "Change full name" }}</h3>
<div class="alert-notification change_full_name_info"></div>
</div>
<div class="modal-body">
<div class="input-group full_name_change_container">
<label for="email">{{t "New full name" }}</label>
<input type="text" name="full_name" value="{{ page_params.full_name }}" autocomplete="off" spellcheck="false" autofocus="autofocus"/>
</div>
</div>
<div class="modal-footer">
<button class="button white rounded" type="button" data-dismiss="modal">{{t "Cancel" }}</button>
<button id='change_full_name_button' class="button rounded sea-green" data-dismiss="modal">{{t "Change" }}</button>
</div>
</div>
</div>
</form>
<form class="password-change-form grid">
{{#if page_params.realm_email_auth_enabled}}
<div class="user-name-section">
<label class="inline-block title">{{t "Password" }}</label>
<div class="input-group inline-block" id="pw_change_link">
<button id="change_password" type="button" class="change_password_button btn-link small button rounded inline-block" data-dismiss="modal">********<i class="fa fa-pencil"></i></button>
</div>
</div>
{{/if}}
<div id="change_password_modal" class="modal modal-bg hide fade" tabindex="-1" role="dialog"
aria-labelledby="change_password_modal_label" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="{{t 'Close' }}"><span aria-hidden="true">&times;</span></button>
<h3 class="inline-block" id="change_password_modal_label">{{t "Change password" }}</h3>
<div class="alert-notification change_password_info"></div>
</div>
<div class="modal-body">
<div class="field password-div">
<label for="old_password" class="title">{{t "Old password" }}</label>
<input type="password" autocomplete="off" name="old_password" id="old_password" class="w-200 inline-block" value="" />
<i class="fa fa-eye-slash password_visibility_toggle tippy-zulip-tooltip" role="button"></i>
<div class="info">
<a href="/accounts/password/reset/" class="sea-green" target="_blank" rel="noopener noreferrer">{{t "Forgotten it?" }}</a>
</div>
</div>
<div class="field password-div">
<label for="new_password" class="title">{{t "New password" }}</label>
<input type="password" autocomplete="new-password" name="new_password" id="new_password" class="w-200 inline-block" value=""
data-min-length="{{ page_params.password_min_length }}" data-min-guesses="{{ page_params.password_min_guesses }}" />
<i class="fa fa-eye-slash password_visibility_toggle tippy-zulip-tooltip" role="button"></i>
<div class="progress inline-block" id="pw_strength">
<div class="bar bar-danger fade" style="width: 10%;"></div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="button white rounded" type="button" data-dismiss="modal">{{t "Cancel" }}</button>
<button id='change_password_button' class="button rounded sea-green">{{t "Change" }}</button>
</div>
</div>
</form>
<div class="user-role input-group grid">
<label for="user_role" class="inline-block title">{{t "Role" }}</label>
<span>{{user_role_text}}</span>
</div>
<form class="deactivate_account grid">
<div class="input-group">
<button type="submit" class="button rounded btn-danger" id="user_deactivate_account_button">
{{t 'Deactivate account' }}
</button>
</div>
</form>
</div>
</div>
<div class="inline-block user-avatar-section">
<h3>{{t "Profile picture" }}</h3>
{{> image_upload_widget
widget = "user-avatar"
upload_text = (t "Upload new profile picture")
delete_text = (t "Delete profile picture")
is_editable_by_current_user = user_can_change_avatar
image = page_params.avatar_url_medium}}
<div id="user-avatar-source">
<a href="https://en.gravatar.com/" target="_blank" rel="noopener noreferrer">{{t "Avatar from Gravatar" }}</a>
</div>
</div>
<div class="clear-float"></div>
<h3 class="inline-block" id="custom-field-header" {{#unless page_params.custom_profile_fields}}style="display: none"{{/unless}}>{{t "Profile" }}</h3>
<form class="form-horizontal custom-profile-fields-form grid"></form>
<button class="button rounded sea-green w-200 block" id="show_my_user_profile_modal">
{{t 'Preview profile' }}
<i class="fa fa-external-link" aria-hidden="true" title="{{t 'Preview profile' }}"></i>
</button>
<div id="deactivate_self_modal" class="modal modal-bg hide fade" tabindex="-1" role="dialog" aria-labelledby="deactivation_self_modal_label" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="{{t 'Close' }}"><span aria-hidden="true">&times;</span></button>
<h3 id="deactivation_self_modal_label">{{t "Deactivate your account" }} </h3>
</div>
<div class="modal-body">
<p>{{#tr}}By deactivating your account, you will be logged out immediately.{{/tr}}</p>
<p>{{t "Note that any bots that you maintain will be disabled." }}</p>
<p>{{t "Are you sure you want to deactivate your account?"}}</p>
</div>
<div class="modal-footer">
<button class="button" data-dismiss="modal">{{t "Cancel" }}</button>
<button class="button btn-danger rounded" id="do_deactivate_self_button">
<object class="loader" type="image/svg+xml" data="/static/images/loader.svg"></object>
<span>{{t "Confirm" }}</span>
</button>
</div>
</div>
<hr class="settings_separator" />
<div class="form-horizontal" id="api_key_button_box">
<h3>{{t "API key" }}</h3>
<div class="input-group">
<p class="api-key-note">
{{#tr}}
An API key can be used to programmatically access a Zulip account.
Anyone with access to your API key has the ability to read your messages, send
messages on your behalf, and otherwise impersonate you on Zulip, so you should
guard your API key as carefully as you guard your password. <br />
We recommend creating bots and using the bots' accounts and API keys to access
the Zulip API, unless the task requires access to your account.
{{/tr}}
</p>
<button class="button rounded" id="api_key_button">{{t "Show/change your API key" }}</button>
</div>
</div>
<!-- Render /settings/api_key_modal.hbs after #api_key_button is clicked
to avoid password being inserted by password manager too aggressively. -->
</div>
</div>