diff options
| author | Gunther6070 <haydenhartman10@yahoo.com> | 2025-03-27 18:47:07 -0400 | 
|---|---|---|
| committer | Gunther6070 <haydenhartman10@yahoo.com> | 2025-03-27 18:47:07 -0400 | 
| commit | 7ccbfb414de47941c8acb2e6f9c2cc7a01cd819c (patch) | |
| tree | 8f12b6e3117c8877eaf581478c1654faf15fcccb /ufund-ui/src/app | |
| parent | 959b5bbaaa370542b75d804cedbbbecea881df0f (diff) | |
| download | JellySolutions-7ccbfb414de47941c8acb2e6f9c2cc7a01cd819c.tar.gz JellySolutions-7ccbfb414de47941c8acb2e6f9c2cc7a01cd819c.tar.bz2 JellySolutions-7ccbfb414de47941c8acb2e6f9c2cc7a01cd819c.zip  | |
Added requirements list, updated bar, and disabling of creation with weak passwords.
Diffstat (limited to 'ufund-ui/src/app')
3 files changed, 39 insertions, 13 deletions
diff --git a/ufund-ui/src/app/components/signup/signup.component.css b/ufund-ui/src/app/components/signup/signup.component.css index d4ea97b..799cbd2 100644 --- a/ufund-ui/src/app/components/signup/signup.component.css +++ b/ufund-ui/src/app/components/signup/signup.component.css @@ -17,8 +17,15 @@  #bar {      width: 100%; -    height: 10px; -    padding: 0; -    margin: 0; +    height: 20px; +    -webkit-appearance: none; +    appearance: none; +    border: none; +    border-radius: 10px; +    overflow: hidden; +    background-color: red;  } +#requirement2 { +    color: red; +} diff --git a/ufund-ui/src/app/components/signup/signup.component.html b/ufund-ui/src/app/components/signup/signup.component.html index 5b1b4f7..1b50d39 100644 --- a/ufund-ui/src/app/components/signup/signup.component.html +++ b/ufund-ui/src/app/components/signup/signup.component.html @@ -1,8 +1,16 @@  <p>Signup:</p>  <input placeholder="Username" type="text" #username>  <input placeholder="Password" type="password" (input)="checkPasswordStrength(password.value)" #password> -<button type="button" (click)="signup(username.value, password.value)">Create Account</button> +<button type="button" [disabled]="passwordStrongEnough | async" (click)="signup(username.value, password.value)">Create Account</button> + +<div id="requirement2" *ngIf="test"> {{test | async}} </div> +  <progress id="bar" [value]="strength | async" max="6">  </progress> + +<span *ngFor="let requirement of passwordRequirements"> +    <span id="requirement" *ngIf="passwordRequirements" [style.color]="color | async"> {{requirement}} </span> +</span> +  <span *ngIf="statusText">{{statusText | async}}</span>  <span *ngIf="strength">{{strength | async}}</span>  <span *ngIf="showSuccessMessage | async">Account created <a routerLink="/login">Proceed to login</a></span> diff --git a/ufund-ui/src/app/components/signup/signup.component.ts b/ufund-ui/src/app/components/signup/signup.component.ts index 48c6387..10fbce5 100644 --- a/ufund-ui/src/app/components/signup/signup.component.ts +++ b/ufund-ui/src/app/components/signup/signup.component.ts @@ -2,6 +2,7 @@ import { Component } from '@angular/core';  import {UsersService} from '../../services/users.service';  import {Router} from '@angular/router';  import {BehaviorSubject} from 'rxjs'; +import {Need} from '../../models/Need';  @Component({    selector: 'app-signup', @@ -13,8 +14,11 @@ export class SignupComponent {      protected statusText = new BehaviorSubject("")      protected showSuccessMessage = new BehaviorSubject(false) -    protected passwordStrength = new BehaviorSubject("") +    protected passwordStrongEnough = new BehaviorSubject(true) +    passwordRequirements: String[] = [("❌ Password length"), ("❌ Lowercase letters")];      protected strength = new BehaviorSubject(0) +    protected color = new BehaviorSubject("red") +    protected test = new BehaviorSubject("Password does not meet requirements")      constructor(          protected usersService: UsersService, @@ -36,7 +40,12 @@ export class SignupComponent {      }      checkPasswordStrength(password: string) { +        this.passwordRequirements = [("❌ Password length"), ("❌ Lowercase letters")]; +        this.test.next("Password does not meet requirements")          this.statusText.next("") +        this.passwordStrongEnough.next(true) +        this.color.next("red") +          if (password.match(/[^!-~]/g)) {              this.statusText.next("Invalid characters")              return @@ -45,32 +54,34 @@ export class SignupComponent {          let strength = 0;          if (password.length > 6) {              strength++ -            console.log("Long") +            this.passwordRequirements[0] = "✅ Password length" +            this.color.next("green")          }          if (password.length > 12) {              strength++ -            console.log("Longer")          }          if (password.match(/[a-z]/g)) {              strength++ -            console.log("a")          } -        if (password.match(/[0-9]/g)) { +        if (password.match(/[A-Z]/g)) {              strength++ -            console.log("0")          } -        if (password.match(/[A-Z]/g)) { +        if (password.match(/[0-9]/g)) {              strength++ -            console.log("A")          }          if (password.match(/[!-/]/g)) {              strength++ -            console.log("!") +        } + +        if (strength >= 5) { +            this.passwordStrongEnough.next(false) +            this.test.next("")          }          this.strength.next(strength)      } +    protected readonly length = length;  }  let friendlyHttpStatus: {[key: number]: string} = {  | 
