1{{template "base/head" .}}
2<div class="page-content admin edit user">
3	{{template "admin/navbar" .}}
4	<div class="ui container">
5		{{template "base/alert" .}}
6		<h4 class="ui top attached header">
7			{{.i18n.Tr "admin.users.edit_account"}}
8		</h4>
9		<div class="ui attached segment">
10			<form class="ui form" action="{{.Link}}" method="post">
11				{{template "base/disable_form_autofill"}}
12				{{.CsrfTokenHtml}}
13				<div class="field {{if .Err_UserName}}error{{end}}">
14					<label for="user_name">{{.i18n.Tr "username"}}</label>
15					<input id="user_name" name="user_name" value="{{.User.Name}}" autofocus {{if not .User.IsLocal }}disabled{{end}}>
16				</div>
17				<!-- Types and name -->
18				<div class="inline required field {{if .Err_LoginType}}error{{end}}">
19					<label>{{.i18n.Tr "admin.users.auth_source"}}</label>
20					<div class="ui selection type dropdown">
21						<input type="hidden" id="login_type" name="login_type" value="{{.LoginSource.Type.Int}}-{{.LoginSource.ID}}" required>
22						<div class="text">{{.i18n.Tr "admin.users.local"}}</div>
23						{{svg "octicon-triangle-down" 14 "dropdown icon"}}
24						<div class="menu">
25							<div class="item" data-value="0-0">{{.i18n.Tr "admin.users.local"}}</div>
26							{{range .Sources}}
27								<div class="item" data-value="{{.Type.Int}}-{{.ID}}">{{.Name}}</div>
28							{{end}}
29						</div>
30					</div>
31				</div>
32
33				<div class="inline field {{if .Err_Visibility}}error{{end}}">
34					<span class="inline required field"><label for="visibility">{{.i18n.Tr "settings.visibility"}}</label></span>
35					<div class="ui selection type dropdown">
36						{{if .User.Visibility.IsPublic}}<input type="hidden" id="visibility" name="visibility" value="0">{{end}}
37						{{if .User.Visibility.IsLimited}}<input type="hidden" id="visibility" name="visibility" value="1">{{end}}
38						{{if .User.Visibility.IsPrivate}}<input type="hidden" id="visibility" name="visibility" value="2">{{end}}
39						<div class="text">
40							{{if .User.Visibility.IsPublic}}{{.i18n.Tr "settings.visibility.public"}}{{end}}
41							{{if .User.Visibility.IsLimited}}{{.i18n.Tr "settings.visibility.limited"}}{{end}}
42							{{if .User.Visibility.IsPrivate}}{{.i18n.Tr "settings.visibility.private"}}{{end}}
43						</div>
44						{{svg "octicon-triangle-down" 14 "dropdown icon"}}
45						<div class="menu">
46							{{range $mode := .AllowedUserVisibilityModes}}
47								{{if $mode.IsPublic}}
48									<div class="item tooltip" data-content="{{$.i18n.Tr "settings.visibility.public_tooltip"}}" data-value="0">{{$.i18n.Tr "settings.visibility.public"}}</div>
49								{{else if $mode.IsLimited}}
50									<div class="item tooltip" data-content="{{$.i18n.Tr "settings.visibility.limited_tooltip"}}" data-value="1">{{$.i18n.Tr "settings.visibility.limited"}}</div>
51								{{else if $mode.IsPrivate}}
52									<div class="item tooltip" data-content="{{$.i18n.Tr "settings.visibility.private_tooltip"}}" data-value="2">{{$.i18n.Tr "settings.visibility.private"}}</div>
53								{{end}}
54							{{end}}
55						</div>
56					</div>
57				</div>
58
59				<div class="required non-local field {{if .Err_LoginName}}error{{end}} {{if eq .User.LoginSource 0}}hide{{end}}">
60					<label for="login_name">{{.i18n.Tr "admin.users.auth_login_name"}}</label>
61					<input id="login_name" name="login_name" value="{{.User.LoginName}}" autofocus>
62				</div>
63				<div class="field {{if .Err_FullName}}error{{end}}">
64					<label for="full_name">{{.i18n.Tr "settings.full_name"}}</label>
65					<input id="full_name" name="full_name" value="{{.User.FullName}}">
66				</div>
67				<div class="required field {{if .Err_Email}}error{{end}}">
68					<label for="email">{{.i18n.Tr "email"}}</label>
69					<input id="email" name="email" type="email" value="{{.User.Email}}" autofocus required>
70				</div>
71				<div class="local field {{if .Err_Password}}error{{end}} {{if not (or (.User.IsLocal) (.User.IsOAuth2))}}hide{{end}}">
72					<label for="password">{{.i18n.Tr "password"}}</label>
73					<input id="password" name="password" type="password" autocomplete="new-password">
74					<p class="help">{{.i18n.Tr "admin.users.password_helper"}}</p>
75				</div>
76				<div class="field {{if .Err_Website}}error{{end}}">
77					<label for="website">{{.i18n.Tr "settings.website"}}</label>
78					<input id="website" name="website" type="url" value="{{.User.Website}}" placeholder="e.g. http://mydomain.com or https://mydomain.com">
79				</div>
80				<div class="field {{if .Err_Location}}error{{end}}">
81					<label for="location">{{.i18n.Tr "settings.location"}}</label>
82					<input id="location" name="location" value="{{.User.Location}}">
83				</div>
84
85				<div class="ui divider"></div>
86
87				<div class="inline field {{if .Err_MaxRepoCreation}}error{{end}}">
88					<label for="max_repo_creation">{{.i18n.Tr "admin.users.max_repo_creation"}}</label>
89					<input id="max_repo_creation" name="max_repo_creation" type="number" value="{{.User.MaxRepoCreation}}">
90					<p class="help">{{.i18n.Tr "admin.users.max_repo_creation_desc"}}</p>
91				</div>
92
93				<div class="ui divider"></div>
94
95				<div class="inline field">
96					<div class="ui checkbox">
97						<label><strong>{{.i18n.Tr "admin.users.is_activated"}}</strong></label>
98						<input name="active" type="checkbox" {{if .User.IsActive}}checked{{end}}>
99					</div>
100				</div>
101				<div class="inline field">
102					<div class="ui checkbox">
103						<label><strong>{{.i18n.Tr "admin.users.prohibit_login"}}</strong></label>
104						<input name="prohibit_login" type="checkbox" {{if .User.ProhibitLogin}}checked{{end}} {{if (eq .User.ID .SignedUserID)}}disabled{{end}}>
105					</div>
106				</div>
107				<div class="inline field">
108					<div class="ui checkbox">
109						<label><strong>{{.i18n.Tr "admin.users.is_admin"}}</strong></label>
110						<input name="admin" type="checkbox" {{if .User.IsAdmin}}checked{{end}}>
111					</div>
112				</div>
113				<div class="inline field">
114					<div class="ui checkbox">
115						<label><strong>{{.i18n.Tr "admin.users.is_restricted"}}</strong></label>
116						<input name="restricted" type="checkbox" {{if .User.IsRestricted}}checked{{end}}>
117					</div>
118				</div>
119				<div class="inline field">
120					<div class="ui checkbox tooltip" data-content="{{.i18n.Tr "admin.users.allow_git_hook_tooltip"}}" data-variation="very wide">
121						<label><strong>{{.i18n.Tr "admin.users.allow_git_hook"}}</strong></label>
122						<input name="allow_git_hook" type="checkbox" {{if .User.CanEditGitHook}}checked{{end}} {{if DisableGitHooks}}disabled{{end}}>
123					</div>
124				</div>
125				<div class="inline field" {{if or (DisableImportLocal) (.DisableMigrations)}}hidden{{end}}>
126					<div class="ui checkbox">
127						<label><strong>{{.i18n.Tr "admin.users.allow_import_local"}}</strong></label>
128						<input name="allow_import_local" type="checkbox" {{if .User.CanImportLocal}}checked{{end}} {{if DisableImportLocal}}disabled{{end}}>
129					</div>
130				</div>
131				{{if not .DisableRegularOrgCreation}}
132				<div class="inline field">
133					<div class="ui checkbox">
134						<label><strong>{{.i18n.Tr "admin.users.allow_create_organization"}}</strong></label>
135						<input name="allow_create_organization" type="checkbox" {{if .User.CanCreateOrganization}}checked{{end}}>
136					</div>
137				</div>
138				{{end}}
139
140				{{if .TwoFactorEnabled}}
141				<div class="ui divider"></div>
142				<div class="inline field">
143					<div class="ui checkbox">
144						<label><strong>{{.i18n.Tr "admin.users.reset_2fa"}}</strong></label>
145						<input name="reset_2fa" type="checkbox">
146					</div>
147				</div>
148				{{end}}
149
150				<div class="ui divider"></div>
151
152				<div class="field">
153					<button class="ui green button">{{.i18n.Tr "admin.users.update_profile"}}</button>
154					<div class="ui red button delete-button" data-url="{{$.Link}}/delete" data-id="{{.User.ID}}">{{.i18n.Tr "admin.users.delete_account"}}</div>
155				</div>
156			</form>
157		</div>
158
159		<h4 class="ui top attached header">
160			{{.i18n.Tr "settings.avatar"}}
161		</h4>
162		<div class="ui attached segment">
163			<form class="ui form" action="{{.Link}}/avatar" method="post" enctype="multipart/form-data">
164				{{.CsrfTokenHtml}}
165				{{if not DisableGravatar}}
166				<div class="inline field">
167					<div class="ui radio checkbox">
168						<input name="source" value="lookup" type="radio" {{if not .User.UseCustomAvatar}}checked{{end}}>
169						<label>{{.i18n.Tr "settings.lookup_avatar_by_mail"}}</label>
170					</div>
171				</div>
172				<div class="field {{if .Err_Gravatar}}error{{end}}">
173					<label for="gravatar">Avatar {{.i18n.Tr "email"}}</label>
174					<input id="gravatar" name="gravatar" value="{{.User.AvatarEmail}}" />
175				</div>
176				{{end}}
177
178				<div class="inline field">
179					<div class="ui radio checkbox">
180						<input name="source" value="local" type="radio" {{if .User.UseCustomAvatar}}checked{{end}}>
181						<label>{{.i18n.Tr "settings.enable_custom_avatar"}}</label>
182					</div>
183				</div>
184
185				<div class="inline field">
186					<label for="avatar">{{.i18n.Tr "settings.choose_new_avatar"}}</label>
187					<input name="avatar" type="file" >
188				</div>
189
190				<div class="field">
191					<button class="ui green button">{{$.i18n.Tr "settings.update_avatar"}}</button>
192					<a class="ui red button delete-post" data-request-url="{{.Link}}/avatar/delete" data-done-url="{{.Link}}">{{$.i18n.Tr "settings.delete_current_avatar"}}</a>
193				</div>
194			</form>
195		</div>
196	</div>
197</div>
198
199<div class="ui small basic delete modal">
200	<div class="ui icon header">
201		{{svg "octicon-trash"}}
202		{{.i18n.Tr "settings.delete_account_title"}}
203	</div>
204	<div class="content">
205		<p>{{.i18n.Tr "settings.delete_account_desc"}}</p>
206	</div>
207	{{template "base/delete_modal_actions" .}}
208</div>
209{{template "base/footer" .}}
210