2017-12-19 17:00:31 +00:00
|
|
|
/*
|
2018-10-19 14:38:50 +00:00
|
|
|
Copyright 2016-2017 Balena
|
2016-01-04 03:58:51 +00:00
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
2017-12-19 17:00:31 +00:00
|
|
|
*/
|
2016-01-04 03:58:51 +00:00
|
|
|
|
2017-12-19 17:00:31 +00:00
|
|
|
import validEmail = require('@resin.io/valid-email');
|
2015-10-21 13:37:25 +00:00
|
|
|
|
2019-04-24 09:06:53 +00:00
|
|
|
const APPNAME_REGEX = new RegExp(/^[a-zA-Z0-9_-]+$/);
|
|
|
|
// An regex to detect an IP address, from https://www.regular-expressions.info/ip.html
|
|
|
|
const IP_REGEX = new RegExp(
|
|
|
|
/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/,
|
|
|
|
);
|
2019-05-01 07:50:27 +00:00
|
|
|
const DOTLOCAL_REGEX = new RegExp(/^([a-zA-Z0-9-]+\.)+local$/);
|
2019-04-24 17:45:19 +00:00
|
|
|
const UUID_REGEX = new RegExp(/^[0-9a-f]+$/);
|
2019-04-24 09:06:53 +00:00
|
|
|
|
2017-12-20 21:46:01 +00:00
|
|
|
export function validateEmail(input: string) {
|
2017-12-19 17:00:31 +00:00
|
|
|
if (!validEmail(input)) {
|
|
|
|
return 'Email is not valid';
|
|
|
|
}
|
2015-10-21 13:37:25 +00:00
|
|
|
|
2017-12-19 17:00:31 +00:00
|
|
|
return true;
|
2018-01-04 14:07:55 +00:00
|
|
|
}
|
2015-10-21 13:37:25 +00:00
|
|
|
|
2017-12-20 21:46:01 +00:00
|
|
|
export function validatePassword(input: string) {
|
2017-12-19 17:00:31 +00:00
|
|
|
if (input.length < 8) {
|
|
|
|
return 'Password should be 8 characters long';
|
|
|
|
}
|
2015-10-21 13:37:25 +00:00
|
|
|
|
2017-12-19 17:00:31 +00:00
|
|
|
return true;
|
2018-01-04 14:07:55 +00:00
|
|
|
}
|
2015-10-21 13:37:25 +00:00
|
|
|
|
2017-12-20 21:46:01 +00:00
|
|
|
export function validateApplicationName(input: string) {
|
2017-12-19 17:00:31 +00:00
|
|
|
if (input.length < 4) {
|
|
|
|
return 'The application name should be at least 4 characters';
|
|
|
|
}
|
2015-10-21 13:37:25 +00:00
|
|
|
|
2019-04-24 09:06:53 +00:00
|
|
|
return APPNAME_REGEX.test(input);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function validateIPAddress(input: string): boolean {
|
|
|
|
return IP_REGEX.test(input);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function validateDotLocalUrl(input: string): boolean {
|
|
|
|
return DOTLOCAL_REGEX.test(input);
|
2018-01-04 14:07:55 +00:00
|
|
|
}
|
2019-04-24 17:45:19 +00:00
|
|
|
|
|
|
|
export function validateLongUuid(input: string): boolean {
|
|
|
|
if (input.length !== 32 && input.length !== 64) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return UUID_REGEX.test(input);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function validateShortUuid(input: string): boolean {
|
|
|
|
if (input.length !== 7) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return UUID_REGEX.test(input);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function validateUuid(input: string): boolean {
|
|
|
|
return validateLongUuid(input) || validateShortUuid(input);
|
|
|
|
}
|