ngx-pwd-strength
Version:
Angular Package, that measure password strength and indicate how secure is it
36 lines • 4.83 kB
JavaScript
import { Injectable } from '@angular/core';
import { BehaviorSubject } from "rxjs";
import { zxcvbn } from "zxcvbn3";
import * as i0 from "@angular/core";
export class NgxPwdStrengthService {
constructor() {
this._options = { enableFeedback: true };
this.score = new BehaviorSubject(null);
this.updatedScore$ = this.score.asObservable();
}
updateScore(data) {
this.score.next(data);
}
init(options) {
this._options = options;
}
/**
* Score:
* 0 # too guessable: risky password. (guesses < 10^3)
* 1 # very guessable: protection from throttled online attacks. (guesses < 10^6)
* 2 # somewhat guessable: protection from unthrottled online attacks. (guesses < 10^8)
* 3 # safely unguessable: moderate protection from offline slow-hash scenario. (guesses < 10^10)
* 4 # very unguessable: strong protection from offline slow-hash scenario. (guesses >= 10^10)
* @param password
*/
getScore(password) {
const result = zxcvbn(password);
return this._options.enableFeedback ? { score: result.score, feedback: result.feedback } : { score: result.score };
}
}
NgxPwdStrengthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NgxPwdStrengthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
NgxPwdStrengthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NgxPwdStrengthService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NgxPwdStrengthService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXB3ZC1zdHJlbmd0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXB3ZC1zdHJlbmd0aC9zcmMvbGliL25neC1wd2Qtc3RyZW5ndGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFNBQVMsQ0FBQzs7QUFJL0IsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUdVLGFBQVEsR0FBcUIsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFdEQsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQXVCbEQ7SUFyQkMsV0FBVyxDQUFDLElBQVM7UUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksQ0FBRSxPQUF5QjtRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3BILENBQUM7O2tIQTNCVSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7enhjdmJufSBmcm9tIFwienhjdmJuM1wiO1xyXG5pbXBvcnQge3B3ZENvbmZpZ3VyYXRpb24sIFB3ZFNjb3JlfSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTmd4UHdkU3RyZW5ndGhTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBfb3B0aW9uczogcHdkQ29uZmlndXJhdGlvbiA9IHsgZW5hYmxlRmVlZGJhY2s6IHRydWUgfTtcclxuXHJcbiAgcHJpdmF0ZSBzY29yZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICBwdWJsaWMgdXBkYXRlZFNjb3JlJCA9IHRoaXMuc2NvcmUuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHVwZGF0ZVNjb3JlKGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zY29yZS5uZXh0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCAob3B0aW9uczogcHdkQ29uZmlndXJhdGlvbikge1xyXG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTY29yZTpcclxuICAgKiAwICMgdG9vIGd1ZXNzYWJsZTogcmlza3kgcGFzc3dvcmQuIChndWVzc2VzIDwgMTBeMylcclxuICAgKiAxICMgdmVyeSBndWVzc2FibGU6IHByb3RlY3Rpb24gZnJvbSB0aHJvdHRsZWQgb25saW5lIGF0dGFja3MuIChndWVzc2VzIDwgMTBeNilcclxuICAgKiAyICMgc29tZXdoYXQgZ3Vlc3NhYmxlOiBwcm90ZWN0aW9uIGZyb20gdW50aHJvdHRsZWQgb25saW5lIGF0dGFja3MuIChndWVzc2VzIDwgMTBeOClcclxuICAgKiAzICMgc2FmZWx5IHVuZ3Vlc3NhYmxlOiBtb2RlcmF0ZSBwcm90ZWN0aW9uIGZyb20gb2ZmbGluZSBzbG93LWhhc2ggc2NlbmFyaW8uIChndWVzc2VzIDwgMTBeMTApXHJcbiAgICogNCAjIHZlcnkgdW5ndWVzc2FibGU6IHN0cm9uZyBwcm90ZWN0aW9uIGZyb20gb2ZmbGluZSBzbG93LWhhc2ggc2NlbmFyaW8uIChndWVzc2VzID49IDEwXjEwKVxyXG4gICAqIEBwYXJhbSBwYXNzd29yZFxyXG4gICAqL1xyXG4gIGdldFNjb3JlKHBhc3N3b3JkOiBzdHJpbmcpOiBQd2RTY29yZXtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHp4Y3ZibihwYXNzd29yZCk7XHJcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucy5lbmFibGVGZWVkYmFjayA/IHsgc2NvcmU6IHJlc3VsdC5zY29yZSwgZmVlZGJhY2s6IHJlc3VsdC5mZWVkYmFjayB9IDogeyBzY29yZTogcmVzdWx0LnNjb3JlIH1cclxuICB9XHJcbn1cclxuIl19