
Security News
Deno 2.4 Brings Back deno bundle, Improves Dependency Management and Observability
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.
@triangular/password-checker
Advanced tools
Protect your users from re-using a password known to be hacked with this simple Angular directive. Check out the [example page](https://password.akehir.com/) to see how it works. The passwords never leave the browser memory and are not transmitted over th
Protect your users from re-using a password known to be hacked with this simple Angular directive. Check out the example page to see how it works. The passwords never leave the browser memory and are not transmitted over the network.
If you just want to use the library to verify the passwords given by your users, follow the following 4 simple steps. For contributing, or building the library locally, see the section on building the library.
Supported Angular Versions
Angular Version | Password Checker Version |
---|---|
6.x | 1.0.0 |
7.x | 2.2.0 |
8.x | 3.0.0 |
9.x | 4.0.0 |
10.x | 5.0.0 |
11.x | 6.0.0 |
12.x | 7.0.0 |
13.x | 8.0.1 |
14.x | 9.0.0 |
15.x | 10.0.0 |
16.x | 11.0.0 |
17.x | 12.0.0 |
18.x | 13.0.0 - 13.2.0 |
19.x | 14.0.0 |
20.x | 20.0.0 |
Install the npm package.
npm i @triangular/password-checker
Then, add the PasswordCheckerModule to the imports of your app.
If you're using standalone components, you can skip this step.
import { NgModule } from '@angular/core';
import { PasswordCheckerModule } from '@triangular/password-checker';
@NgModule({
declarations: [
],
imports: [
PasswordCheckerModule,
],
providers: [],
bootstrap: [],
})
export class AppModule { }
Now you can use the provided directive pwnedPasswordValidator on your reactive forms, to trigger the validation with the pwned password database whenever the form is being validated.
<input
pwnedPasswordValidator
formControlName="password"
type="password"
>
You can configure the directive by providing additional input bindings. Currently the API endpoint, the input debounce time, as well as the minimum occurrence of a password to fail the validation are configurable:
<input
pwnedPasswordValidator
pwnedPasswordMinimumOccurrenceForError="1"
pwnedPasswordApi="https://api.pwnedpasswords.com/range/"
pwnedPasswordApiCallDebounceTime="400"
formControlName="password"
type="password"
>
Alternatively, you can configure your module by using the PasswordCheckerModule.forRoot()
method.
@NgModule({
declarations: [
AppComponent,
ExampleComponent,
],
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
PasswordCheckerModule.forRoot( {
pwnedPasswordApiCallDebounceTime: 1000,
pwnedPasswordMinimumOccurrenceForError: 4,
pwnedPasswordApi: 'https://api.pwnedpasswords.com/range/',
}),
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Don't forget to provide some feedback to your users:
<div
*ngIf="!form.get('password').pending && form.get('password').errors && form.get('password').errors.pwnedPasswordOccurrence"
class="invalid-feedback">
<h2>This password has been seen
<span class="invalid-feedback--highlight">
{{form.get('password').errors.pwnedPasswordOccurrence | number:'1.0-0' }}
</span>
times before</h2>
<p>This password has previously appeared in a data breach and should never be used.
If you've ever used it anywhere before, change it!
</p>
</div>
As a pre-requisite to build the library, you need to install all the dependencies via npm install
or yarn
.
Before the sample app can be run, you need to build the library itself.
npm run ng -- build password-checker-lib --progress=false
After building the library, it is either possible to build the sample app, via
npm run ng -- build example-app --prod --progress=false
,or to run the sample app with a local dev server:
npm run ng -- serve
There are not many tests, but those that are can be run with:
npm run test -- --no-watch --progress=false --code-coverage --browsers ChromeHeadless
The project follows the angular style guide and lints with the following command:
npm run lint
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
We use SemVer for versioning.
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE.md file for details
FAQs
Protect your users from re-using a password known to be hacked with this simple Angular directive. Check out the [example page](https://password.akehir.com/) to see how it works. The passwords never leave the browser memory and are not transmitted over th
The npm package @triangular/password-checker receives a total of 9 weekly downloads. As such, @triangular/password-checker popularity was classified as not popular.
We found that @triangular/password-checker demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.
Security News
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.