account.gohtml (7506B)
1 {{ define "sub-content" }} 2 3 {{ if .Data.Error }} 4 <div class="alert alert-danger">{{ .Data.Error }}</div> 5 {{ end }} 6 7 <div class="card mb-3"> 8 <div class="card-header"> 9 {{ t "Change contact information" . }} 10 </div> 11 <div class="card-body"> 12 <form method="post"> 13 <input type="hidden" name="csrf" value="{{ .CSRF }}" /> 14 <input type="hidden" name="formName" value="editProfile" /> 15 <div class="form-group"> 16 <label>{{ t "Website" . }}</label> 17 <input name="website" placeholder="Website" value="{{ .Data.Website }}" class="form-control{{ if .Data.ErrorWebsite }} is-invalid{{ end }}" type="url" {{ if .Data.ErrorWebsite }} autofocus{{ end }} /> 18 {{ if .Data.ErrorWebsite }} 19 <div class="invalid-feedback">{{ .Data.ErrorWebsite }}</div> 20 {{ end }} 21 </div> 22 <div class="form-group"> 23 <label>{{ t "Email" . }}</label> 24 <input name="email" placeholder="Email" value="{{ .Data.Email }}" class="form-control{{ if .Data.ErrorEmail }} is-invalid{{ end }}" type="email" {{ if .Data.ErrorEmail }} autofocus{{ end }} /> 25 {{ if .Data.ErrorEmail }} 26 <div class="invalid-feedback">{{ .Data.ErrorEmail }}</div> 27 {{ end }} 28 </div> 29 <div class="form-group"> 30 <div class="form-check form-check-1"> 31 <div class="checkbox-wrapper form-check-input"> 32 <input class="my-cbx" type="checkbox" name="last_seen_public" id="last_seen_public" value="1"{{ if .AuthUser.LastSeenPublic }} checked{{ end }} /> 33 <label for="last_seen_public" class="toggle"><span></span></label> 34 </div> 35 <label for="last_seen_public">Display "Last seen" in public profile</label> 36 </div> 37 <div class="form-check form-check-1"> 38 <div class="checkbox-wrapper form-check-input"> 39 <input class="my-cbx" type="checkbox" name="terminate_all_sessions_on_logout" id="terminate_all_sessions_on_logout" value="1"{{ if .AuthUser.TerminateAllSessionsOnLogout }} checked{{ end }} /> 40 <label for="terminate_all_sessions_on_logout" class="toggle"><span></span></label> 41 </div> 42 <label for="terminate_all_sessions_on_logout">Terminate all active sessions on logout</label> 43 </div> 44 </div> 45 <div class="form-group"> 46 <input type="submit" value="{{ t "Save profile" . }}" class="btn btn-primary" /> 47 </div> 48 </form> 49 </div> 50 </div> 51 52 <div class="card mb-3"> 53 <div class="card-header"> 54 {{ t "Change avatar" . }} 55 </div> 56 <div class="card-body"> 57 <form method="post" enctype="multipart/form-data"> 58 <input type="hidden" name="csrf" value="{{ .CSRF }}" /> 59 <input type="hidden" name="formName" value="changeAvatar" /> 60 <table width="100%"> 61 <tr> 62 <td> 63 <div class="form-group"> 64 {{ if not .AuthUser.CanUpload }} 65 <p>{{ .Data.AccountTooYoungErrorString }}</p> 66 {{ end }} 67 <p> 68 The maximum dimensions for avatars are: 120x120 pixels.<br /> 69 The maximum file size for avatars is 300 KB. 70 </p> 71 <input name="avatar" class="{{ if .Data.ErrorAvatar }} is-invalid{{ end }}" type="file" accept=".bmp,.gif,.png,.jpg,.jpeg,.webp,image/gif,image/png,image/jpeg,image/bmp,image/webp" required /> 72 {{ if .Data.ErrorAvatar }} 73 <div class="invalid-feedback">{{ .Data.ErrorAvatar }}</div> 74 {{ end }} 75 </div> 76 <div class="form-group"> 77 <input type="submit" value="{{ t "Upload avatar" . }}" class="btn btn-primary"{{ if not .AuthUser.CanUpload }} disabled{{ end }} /> 78 </div> 79 </td> 80 <td width="150" align="right"> 81 {{ if .AuthUser.Avatar }} 82 <img src="data:image;base64,{{ .AuthUser.Avatar | b64 }}" alt="avatar" /> 83 {{ else }} 84 <img src="/public/img/avatar-placeholder.png" alt="avatar" /> 85 {{ end }} 86 </td> 87 </tr> 88 </table> 89 </form> 90 </div> 91 </div> 92 93 {{ if .AuthUser.CanChangeUsername }} 94 <div class="card mb-3"> 95 <div class="card-header"> 96 {{ t "Change username" . }} 97 </div> 98 <div class="card-body"> 99 <form method="post" novalidate> 100 <input type="hidden" name="csrf" value="{{ .CSRF }}" /> 101 <input type="hidden" name="formName" value="changeUsername" /> 102 <div class="form-group"> 103 <label>{{ t "New username" . }}</label> 104 <input name="username" value="{{ .Data.Username }}" class="form-control{{ if .Data.ErrorUsername }} is-invalid{{ end }}" type="text"{{ if .Data.ErrorUsername }} autofocus{{ end }} required /> 105 {{ if .Data.ErrorUsername }} 106 <div class="invalid-feedback">{{ .Data.ErrorUsername }}</div> 107 {{ end }} 108 </div> 109 <div class="form-group"> 110 <input type="submit" value="{{ t "Change my username" . }}" class="btn btn-primary" /> 111 </div> 112 </form> 113 </div> 114 </div> 115 {{ end }} 116 117 <div class="card mb-3"> 118 <div class="card-header"> 119 {{ t "Two-Factor Authentication" . }} 120 </div> 121 <div class="card-body"> 122 <div class="mb-3"> 123 {{ if eq .AuthUser.TwoFactorSecret "" }} 124 <a href="/two-factor-authentication/verify" class="btn btn-primary">{{ t "Enable TOTP two-factor authentication" . }}</a> 125 {{ else }} 126 <a href="/two-factor-authentication/disable" class="btn btn-danger">{{ t "Disable TOTP two-factor authentication" . }}</a> 127 {{ end }} 128 </div> 129 <div> 130 {{ if not .AuthUser.GpgTwoFactorEnabled }} 131 <a href="/gpg-two-factor-authentication/toggle" class="btn btn-primary">{{ t "Enable PGP two-factor authentication" . }}</a> 132 {{ else }} 133 <a href="/gpg-two-factor-authentication/toggle" class="btn btn-danger">{{ t "Disable PGP two-factor authentication" . }}</a> 134 {{ end }} 135 </div> 136 </div> 137 </div> 138 139 <div class="mb-5"></div> 140 141 <!--<div class="card border-danger mb-3">--> 142 <!-- <div class="card-header">--> 143 <!-- {{ t "Delete account" . }}--> 144 <!-- </div>--> 145 <!-- <div class="card-body">--> 146 <!-- {{ if eq .AuthUser.ID 1 }}--> 147 <!-- <div>--> 148 <!-- <p class="text-danger">--> 149 <!-- {{ t "Root admin cannot delete his account" . }}--> 150 <!-- </p>--> 151 <!-- </div>--> 152 <!-- {{ end }}--> 153 <!-- <button class="btn btn-danger"{{ if eq .AuthUser.ID 1 }} disabled{{ end }}>{{ t "Delete your account" . }}</button>--> 154 <!-- </div>--> 155 <!--</div>--> 156 {{ end }}