feathers-authentication-management
Version:
Adds sign up verification, forgotten password reset, and other capabilities to local feathers-authentication
46 lines (45 loc) • 2.08 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getShortToken = exports.getLongToken = exports.randomBytes = exports.randomDigits = void 0;
const crypto_1 = require("crypto");
function randomDigits(len) {
let str = '';
while (str.length < len) {
str += parseInt('0x' + (0, crypto_1.randomBytes)(4).toString('hex')).toString();
}
return str.substr(0, len);
}
exports.randomDigits = randomDigits;
function randomBytes(len) {
return __awaiter(this, void 0, void 0, function* () {
return yield new Promise((resolve, reject) => {
(0, crypto_1.randomBytes)(len, (err, buf) => err ? reject(err) : resolve(buf.toString('hex')));
});
});
}
exports.randomBytes = randomBytes;
const getLongToken = (len) => __awaiter(void 0, void 0, void 0, function* () { return yield randomBytes(len); });
exports.getLongToken = getLongToken;
function getShortToken(len, ifDigits) {
return __awaiter(this, void 0, void 0, function* () {
if (ifDigits) {
return randomDigits(len);
}
const str1 = yield randomBytes(Math.floor(len / 2) + 1);
let str = str1.substr(0, len);
if (str.match(/^[0-9]+$/)) { // tests will fail on all digits
str = `q${str.substr(1)}`; // shhhh, secret.
}
return str;
});
}
exports.getShortToken = getShortToken;