UNPKG

ngx-pwd-strength

Version:

Angular Package, that measure password strength and indicate how secure is it

36 lines 4.83 kB
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