|
21 | 21 | (function(OCA) { |
22 | 22 | OCA.LimitLoginToIp = OCA.LimitLoginToIp || {}; |
23 | 23 | OCA.LimitLoginToIp.Ranges = []; |
| 24 | + OCA.LimitLoginToIp.UIDs = []; |
24 | 25 |
|
25 | 26 | /** |
26 | 27 | * @namespace OCA.LimitLoginToIp.Settings |
|
58 | 59 | actionCell.innerHTML = actionCellValue.outerHTML; |
59 | 60 | }); |
60 | 61 |
|
61 | | - OCA.LimitLoginToIp.Settings.setEnabledState(true); |
| 62 | + OCA.LimitLoginToIp.Settings.setIPEnabledState(true); |
| 63 | + } |
| 64 | + } |
| 65 | + ); |
| 66 | + OCP.AppConfig.getValue( |
| 67 | + 'limit_login_to_ip', |
| 68 | + 'whitelisted.uids', |
| 69 | + '', |
| 70 | + { |
| 71 | + success: function(data) { |
| 72 | + var textData = $(data).find('data data').text(); |
| 73 | + var UIDs = textData.split(','); |
| 74 | + var table = document.getElementById('limit-login-to-ip-uidlist'); |
| 75 | + table.innerHTML = ''; |
| 76 | + |
| 77 | + OCA.LimitLoginToIp.UIDs = UIDs; |
| 78 | + UIDs.forEach(function(uid) { |
| 79 | + var row = table.insertRow(0); |
| 80 | + var actionCell = row.insertCell(0); |
| 81 | + actionCell.className = 'action-column'; |
| 82 | + var uidCell = row.insertCell(0); |
| 83 | + |
| 84 | + var uidCellValue = document.createElement('span'); |
| 85 | + uidCellValue.innerText = uid; |
| 86 | + uidCell.innerHTML = uidCellValue.outerHTML; |
| 87 | + |
| 88 | + var actionCellValue = document.createElement('span'); |
| 89 | + var deleteLink = document.createElement('a'); |
| 90 | + deleteLink.className = 'icon-delete has-tooltip'; |
| 91 | + deleteLink.title = t('limit_login_to_ip', 'Delete'); |
| 92 | + deleteLink.setAttribute('data', uid); |
| 93 | + actionCellValue.innerHTML = deleteLink.outerHTML; |
| 94 | + actionCell.innerHTML = actionCellValue.outerHTML; |
| 95 | + }); |
| 96 | + |
| 97 | + OCA.LimitLoginToIp.Settings.setUIDEnabledState(true); |
62 | 98 | } |
63 | 99 | } |
64 | 100 | ); |
|
89 | 125 | OCA.LimitLoginToIp.Settings.storeRanges(); |
90 | 126 | }, |
91 | 127 |
|
92 | | - setEnabledState: function(isEnabled) { |
| 128 | + storeUIDs: function() { |
| 129 | + var uids = OCA.LimitLoginToIp.UIDs.join(); |
| 130 | + OCP.AppConfig.setValue( |
| 131 | + 'limit_login_to_ip', |
| 132 | + 'whitelisted.uids', |
| 133 | + uids, |
| 134 | + { |
| 135 | + success: function () { |
| 136 | + OCA.LimitLoginToIp.Settings.load(); |
| 137 | + } |
| 138 | + } |
| 139 | + ); |
| 140 | + }, |
| 141 | + |
| 142 | + addUID: function(uid) { |
| 143 | + OCA.LimitLoginToIp.UIDs.push(uid); |
| 144 | + OCA.LimitLoginToIp.Settings.storeUIDs(); |
| 145 | + }, |
| 146 | + |
| 147 | + removeUID: function(uid) { |
| 148 | + var index = OCA.LimitLoginToIp.UIDs.indexOf(uid); |
| 149 | + OCA.LimitLoginToIp.UIDs.splice(index, 1); |
| 150 | + OCA.LimitLoginToIp.Settings.storeUIDs(); |
| 151 | + }, |
| 152 | + |
| 153 | + setIPEnabledState: function(isEnabled) { |
93 | 154 | if(isEnabled !== true) { |
94 | 155 | $('#limit-login-to-ip-list-spinner').removeClass('hidden'); |
95 | 156 | } else { |
96 | 157 | $('#limit-login-to-ip-list-spinner').addClass('hidden'); |
97 | 158 | } |
98 | 159 |
|
99 | 160 | $('#limit-login-to-ip-input-fields input').prop('disabled', !isEnabled); |
| 161 | + }, |
| 162 | + |
| 163 | + setUIDEnabledState: function(isEnabled) { |
| 164 | + if(isEnabled !== true) { |
| 165 | + $('#limit-login-to-ip-uidlist-spinner').removeClass('hidden'); |
| 166 | + } else { |
| 167 | + $('#limit-login-to-ip-uidlist-spinner').addClass('hidden'); |
| 168 | + } |
| 169 | + |
| 170 | + $('#limit-login-to-ip-uid-input-fields input').prop('disabled', !isEnabled); |
100 | 171 | } |
101 | 172 | }; |
102 | 173 |
|
|
108 | 179 | $('#limit-login-to-ip-submit').click(function() { |
109 | 180 | var ipAddress = $('#limit-login-to-ip-whitelist').val(); |
110 | 181 | var range = $('#limit-login-to-ip-whitelist_mask').val(); |
111 | | - |
| 182 | + |
112 | 183 | // ipAddress validation |
113 | 184 | // https://www.regexpal.com/?fam=104038 |
114 | 185 | var regexFilter = '((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))'; |
|
118 | 189 | if ( regexMatch == null ) { |
119 | 190 | return false; |
120 | 191 | } |
121 | | - |
122 | | - OCA.LimitLoginToIp.Settings.setEnabledState(false); |
| 192 | + |
| 193 | + OCA.LimitLoginToIp.Settings.setIPEnabledState(false); |
123 | 194 | OCA.LimitLoginToIp.Settings.addRange(ipAddress + '/' + range); |
124 | 195 | $('#limit-login-to-ip-whitelist').val(''); |
125 | 196 | $('#limit-login-to-ip-whitelist_mask').val(); |
126 | 197 | }); |
127 | 198 |
|
128 | 199 | $('#limit-login-to-ip-list').on('click', 'a', function() { |
129 | 200 | var rangeToRemove = $(this).attr('data'); |
130 | | - OCA.LimitLoginToIp.Settings.setEnabledState(false); |
| 201 | + OCA.LimitLoginToIp.Settings.setIPEnabledState(false); |
131 | 202 | OCA.LimitLoginToIp.Settings.removeRange(rangeToRemove); |
132 | 203 | }); |
| 204 | + |
| 205 | + $('#limit-login-to-ip-uid-submit').click(function() { |
| 206 | + var uid = $('#limit-login-to-ip-uid-whitelist').val(); |
| 207 | + |
| 208 | + OCA.LimitLoginToIp.Settings.setUIDEnabledState(false); |
| 209 | + OCA.LimitLoginToIp.Settings.addUID(uid); |
| 210 | + $('#limit-login-to-ip-uid-whitelist').val(''); |
| 211 | + }); |
| 212 | + |
| 213 | + $('#limit-login-to-ip-uidlist').on('click', 'a', function() { |
| 214 | + var uidToRemove = $(this).attr('data'); |
| 215 | + OCA.LimitLoginToIp.Settings.setUIDEnabledState(false); |
| 216 | + OCA.LimitLoginToIp.Settings.removeUID(uidToRemove); |
| 217 | + }); |
133 | 218 | })(); |
0 commit comments