Merge pull request #2307 from dibdot/ovpn
[oweals/luci.git] / modules / luci-mod-system / luasrc / view / admin_system / password.htm
1 <%+header%>
2
3 <script type="application/javascript">//<![CDATA[
4         function submitPassword(ev) {
5                 var pw1 = document.body.querySelector('[name="pw1"]'),
6                     pw2 = document.body.querySelector('[name="pw2"]');
7
8                 if (!pw1.value.length || !pw2.value.length)
9                         return;
10
11                 if (pw1.value === pw2.value) {
12                         showModal('<%:Change login password%>',
13                                 E('p', { class: 'spinning' }, '<%:Changing password…%>'));
14
15                         (new XHR()).post('<%=url("admin/system/admin/password/json")%>',
16                                 { token: '<%=token%>', password: pw1.value },
17                                 function() {
18                                         showModal('<%:Change login password%>', [
19                                                 E('div', _('The system password has been successfully changed.')),
20                                                 E('div', { 'class': 'right' },
21                                                         E('div', { class: 'btn', click: hideModal }, '<%:Dismiss%>'))
22                                         ]);
23
24                                         pw1.value = pw2.value = '';
25                                 });
26                 }
27                 else {
28                         showModal('<%:Change login password%>', [
29                                 E('div', { class: 'alert-message warning' },
30                                         _('Given password confirmation did not match, password not changed!')),
31                                 E('div', { 'class': 'right' },
32                                         E('div', { class: 'btn', click: hideModal }, '<%:Dismiss%>'))
33                         ]);
34                 }
35         }
36 //]]></script>
37
38 <input type="password" aria-hidden="true" style="position:absolute; left:-10000px" />
39
40 <div class="cbi-map">
41         <h2><%:Router Password%></h2>
42
43         <div class="cbi-section-descr">
44                 <%:Changes the administrator password for accessing the device%>
45         </div>
46
47         <div class="cbi-section-node">
48                 <div class="cbi-value">
49                         <label class="cbi-value-title" for="image"><%:Password%></label>
50                         <div class="cbi-value-field">
51                                 <input type="password" name="pw1" /><!--
52                                 --><button class="cbi-button cbi-button-neutral" title="<%:Reveal/hide password%>" aria-label="<%:Reveal/hide password%>" onclick="var e = this.previousElementSibling; e.type = (e.type === 'password') ? 'text' : 'password'">∗</button>
53                         </div>
54                 </div>
55
56                 <div class="cbi-value">
57                         <label class="cbi-value-title" for="image"><%:Confirmation%></label>
58                         <div class="cbi-value-field">
59                                 <input type="password" name="pw2" onkeydown="if (event.keyCode === 13) submitPassword(event)" /><!--
60                                 --><button class="cbi-button cbi-button-neutral" title="<%:Reveal/hide password%>" aria-label="<%:Reveal/hide password%>" onclick="var e = this.previousElementSibling; e.type = (e.type === 'password') ? 'text' : 'password'">∗</button>
61                         </div>
62                 </div>
63         </div>
64 </div>
65
66 <div class="cbi-page-actions">
67         <button class="btn cbi-button-apply" onclick="submitPassword(event)"><%:Save%></button>
68 </div>
69
70 <%+footer%>