This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/templates/preferences/account.hbs
2019-05-24 09:02:39 +08:00

240 lines
8.1 KiB
Handlebars

<div class="control-group pref-username">
<label class="control-label">{{i18n 'user.username.title'}}</label>
<div class="controls">
<span class='static'>{{model.username}}</span>
{{#if model.can_edit_username}}
{{#link-to "preferences.username" class="btn btn-default btn-small btn-icon pad-left no-text"}}
{{d-icon "pencil-alt"}} {{/link-to}}
{{/if}}
</div>
{{#if siteSettings.enable_mentions}}
<div class='instructions'>
{{{i18n 'user.username.short_instructions' username=model.username}}}
</div>
{{/if}}
</div>
{{#unless siteSettings.sso_overrides_avatar}}
<div class="control-group pref-avatar">
<label class="control-label" id="profile-picture">{{i18n 'user.avatar.title'}}</label>
<div class="controls">
{{! we want the "huge" version even though we're downsizing it in CSS }}
{{bound-avatar model "huge"}}
{{d-button action=(route-action "showAvatarSelector") actionParam=model class="btn-default pad-left" icon="pencil-alt"}}
</div>
</div>
{{/unless}}
{{#if canEditName}}
<div class="control-group pref-name">
<label class="control-label">{{i18n 'user.name.title'}}</label>
<div class="controls">
{{#if model.can_edit_name}}
{{text-field value=newNameInput classNames="input-xxlarge"}}
{{else}}
<span class='static'>{{model.name}}</span>
{{/if}}
</div>
<div class='instructions'>
{{nameInstructions}}
</div>
</div>
{{/if}}
{{#if canCheckEmails}}
<div class="control-group pref-email">
<label class="control-label">{{i18n 'user.email.title'}}</label>
{{#if model.email}}
<div class="controls">
<span class='static'>{{model.email}}</span>
{{#if model.can_edit_email}}
{{#link-to "preferences.email" class="btn btn-default btn-small btn-icon pad-left no-text"}}{{d-icon "pencil-alt"}}{{/link-to}}
{{/if}}
</div>
<div class='instructions'>
{{#if siteSettings.sso_overrides_email}}
{{i18n 'user.email.sso_override_instructions'}}
{{/if}}
{{i18n 'user.email.instructions'}}
</div>
{{else}}
<div class="controls">
{{d-button action=(route-action "checkEmail") class="btn-default" actionParam=model title="admin.users.check_email.title" icon="far-envelope" label="admin.users.check_email.text"}}
</div>
{{/if}}
</div>
{{/if}}
{{#if canChangePassword}}
<div class="control-group pref-password">
<label class="control-label">{{i18n 'user.password.title'}}</label>
<div class="controls">
<a href {{action "changePassword"}} class='btn btn-default'>
{{d-icon "envelope"}}
{{#if model.no_password}}
{{i18n 'user.change_password.set_password'}}
{{else}}
{{i18n 'user.change_password.action'}}
{{/if}}
</a>
{{passwordProgress}}
</div>
</div>
<div class="control-group pref-second-factor">
<label class="control-label">{{i18n 'user.second_factor.title'}}</label>
{{#unless model.second_factor_enabled}}
<label>
{{i18n 'user.second_factor.short_description'}}
</label>
{{/unless}}
<div class="controls pref-second-factor">
{{#if isCurrentUser}}
{{#if model.second_factor_enabled}}
{{#link-to "preferences.second-factor" class="btn btn-default"}}
{{d-icon "unlock"}} <span>{{i18n 'user.second_factor.disable'}}</span>
{{/link-to}}
{{else}}
{{#link-to "preferences.second-factor" class="btn btn-default"}}
{{d-icon "lock"}} <span>{{i18n 'user.second_factor.enable'}}</span>
{{/link-to}}
{{/if}}
{{/if}}
</div>
<div class="controls pref-second-factor-backup">
{{#if model.second_factor_enabled}}
{{#if isCurrentUser}}
{{#link-to "preferences.second-factor-backup"}}
<span>
{{#if model.second_factor_backup_enabled}}
{{i18n 'user.second_factor_backup.manage'}}
{{else}}
{{i18n 'user.second_factor_backup.enable_long'}}
{{/if}}
</span>
{{/link-to}}
{{/if}}
{{/if}}
</div>
</div>
{{/if}}
{{#if canUpdateAssociatedAccounts}}
<div class="control-group pref-associated-accounts">
<label class="control-label">{{i18n 'user.associated_accounts.title'}}</label>
{{#if associatedAccountsLoaded}}
<table>
{{#each authProviders as |authProvider|}}
<tr>
<td>{{authProvider.method.prettyName}}</td>
{{#if authProvider.account}}
<td>{{authProvider.account.description}}</td>
<td>
{{#if authProvider.method.can_revoke}}
{{#conditional-loading-spinner condition=revoking size='small'}}
{{d-button action=(action "revokeAccount") actionParam=authProvider.account title="user.associated_accounts.revoke" class="btn-danger no-text" icon="trash-alt" }}
{{/conditional-loading-spinner}}
{{/if}}
</td>
{{else}}
<td colspan=2>
{{#if authProvider.method.can_connect}}
{{d-button action=(action "connectAccount") actionParam=authProvider.method label="user.associated_accounts.connect" class="btn-default" icon="plug" disabled=disableConnectButtons}}
{{else}}
{{i18n 'user.associated_accounts.not_connected'}}
{{/if}}
</td>
{{/if}}
</tr>
{{/each}}
</table>
{{else}}
<div class="controls">
{{d-button action=(route-action "checkEmail") actionParam=model title="admin.users.check_email.title" icon="far-envelope" label="admin.users.check_email.text"}}
</div>
{{/if}}
</div>
{{/if}}
{{#if canSelectTitle}}
<div class="control-group pref-title">
<label class="control-label">{{i18n 'user.title.title'}}</label>
<div class="controls">
{{combo-box
value=newTitleInput
content=model.availableTitles
none="user.title.none"}}
</div>
</div>
{{/if}}
{{#if canCheckEmails}}
<div class="control-group pref-auth-tokens">
<label class="control-label">{{i18n 'user.auth_tokens.title'}}</label>
<div class="auth-tokens">
{{#each authTokens as |token|}}
<div class="row auth-token">
<div class="auth-token-icon">{{d-icon token.icon}}</div>
{{#unless token.is_active}}
{{auth-token-dropdown token=token
revokeAuthToken=(action "revokeAuthToken")
showToken=(action "showToken")}}
{{/unless}}
<div class="auth-token-first">
<span class="auth-token-device">{{token.device}}</span> &ndash; <span title="{{i18n "user.auth_tokens.ip"}}: {{token.client_ip}}">{{token.location}}</span>
</div>
<div class="auth-token-second">
{{token.browser}} |
{{#if token.is_active}}
<span class="active">{{i18n 'user.auth_tokens.active'}}</span>
{{else}}
{{format-date token.seen_at}}
{{/if}}
</div>
</div>
{{/each}}
</div>
{{#if canShowAllAuthTokens}}
<a {{action "toggleShowAllAuthTokens"}}>
{{#if showAllAuthTokens}}
{{d-icon "caret-up"}} {{i18n 'user.auth_tokens.show_few'}}
{{else}}
{{d-icon "caret-down"}} {{i18n 'user.auth_tokens.show_all' count=model.user_auth_tokens.length}}
{{/if}}
</a>
{{/if}}
<a {{action "revokeAuthToken"}} class="pull-right text-danger">{{d-icon "sign-out-alt"}} {{i18n 'user.auth_tokens.log_out_all'}}</a>
</div>
{{/if}}
{{plugin-outlet name="user-preferences-account" args=(hash model=model save=(action "save"))}}
<br/>
{{plugin-outlet name="user-custom-controls" args=(hash model=model)}}
{{#if canSaveUser}}
<div class="control-group save-button">
<div class="controls">
{{partial 'user/preferences/save-button'}}
</div>
</div>
{{/if}}
{{#if model.canDeleteAccount}}
<div class="control-group delete-account">
<br/>
<div class="controls">
{{d-button action=(action "delete") disabled=deleteDisabled class="btn-danger" icon="far-trash-alt" label="user.delete_account"}}
</div>
</div>
{{/if}}