-
-
Notifications
You must be signed in to change notification settings - Fork 250
/
MailChecker.tmpl.js
55 lines (46 loc) · 1.33 KB
/
MailChecker.tmpl.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
* MailChecker.isValid(String email);
* @return {Boolean} true is the specified email is valid, false otherwise
*
* Usage
*
* <script type="text/javascript" src="mailchecker/platform/javascript/mailchecker.js"></script>
* <script type="text/javascript">
* alert(MailChecker.isValid("plop@plop.33mail.com"));
* </script>
*/
(function(global){
var isValidEmail = /^{{& unanchoredRegexpString }}$/;
var blacklist = [{{& listSTR }}];
function mapRange(start, endExclusive, f) {
var arr = []
for (var i = start; i < endExclusive; i++) {
arr.push(f(i))
}
return arr;
}
function allDomainSuffixes(email) {
var domainComponents = email.split('@')[1].split('.');
return mapRange(0, domainComponents.length, function (n) {
return domainComponents.slice(n).join('.');
});
}
function isBlacklisted(email) {
return allDomainSuffixes(email).some(function (domainSuffix) {
return blacklist.indexOf(domainSuffix) >= 0;
});
};
global.MailChecker = {
isValid: function (email){
email = email.toLowerCase();
if(!isValidEmail.test(email)){return false;}
return !isBlacklisted(email);
},
blacklist: function () {
return blacklist;
},
addCustomDomains: function (domains = []) {
blacklist.push(...domains)
}
};
})(window);