diff options
| author | sowgro <tpoke.ferrari@gmail.com> | 2025-03-15 18:34:58 -0400 | 
|---|---|---|
| committer | sowgro <tpoke.ferrari@gmail.com> | 2025-03-15 18:34:58 -0400 | 
| commit | d97d4d430113088c4f52f53c040d8705c66b410e (patch) | |
| tree | 7738f85333e1511d39b745c49b9ff70c4d8e3a27 /ufund-ui/src/app/components | |
| parent | 51f0322db803ed3baf1f24f18a6e7a83dab58a3b (diff) | |
| download | JellySolutions-d97d4d430113088c4f52f53c040d8705c66b410e.tar.gz JellySolutions-d97d4d430113088c4f52f53c040d8705c66b410e.tar.bz2 JellySolutions-d97d4d430113088c4f52f53c040d8705c66b410e.zip  | |
Add support for account creation
Diffstat (limited to 'ufund-ui/src/app/components')
| -rw-r--r-- | ufund-ui/src/app/components/login/login.component.css | 12 | ||||
| -rw-r--r-- | ufund-ui/src/app/components/login/login.component.html | 5 | ||||
| -rw-r--r-- | ufund-ui/src/app/components/login/login.component.ts | 66 | 
3 files changed, 79 insertions, 4 deletions
diff --git a/ufund-ui/src/app/components/login/login.component.css b/ufund-ui/src/app/components/login/login.component.css index afd4bf1..435cc87 100644 --- a/ufund-ui/src/app/components/login/login.component.css +++ b/ufund-ui/src/app/components/login/login.component.css @@ -1,6 +1,16 @@ -:host { +:host, .border {    display: flex;    flex-direction: column;      max-width: 300px;      gap: 5px  } + +.border { +    border-style: solid; +    border-width: 1px; +    padding: 10px; +    margin: 10px; +    position: absolute; +    background-color: white; +    box-shadow: 0 0 10px 10px black; +} diff --git a/ufund-ui/src/app/components/login/login.component.html b/ufund-ui/src/app/components/login/login.component.html index bfd7f5e..2cdb6d0 100644 --- a/ufund-ui/src/app/components/login/login.component.html +++ b/ufund-ui/src/app/components/login/login.component.html @@ -1,6 +1,7 @@ -<div *ngIf="next" style="color: red">You must be logged in to view this page</div> +<span *ngIf="next" style="color: red">You must be logged in to view this page</span>  <p>Login:</p>  <input placeholder="Username" type="text" #username>  <input placeholder="Password" type="password" #password>  <button type="button" (click)="login(username.value, password.value)">Login</button> -<button type="button">Create Account...</button> +<button type="button" (click)="signup(username.value, password.value)">Create Account</button> +<span *ngIf="statusText">{{statusText | async}}</span> diff --git a/ufund-ui/src/app/components/login/login.component.ts b/ufund-ui/src/app/components/login/login.component.ts index 7d90624..9d806f5 100644 --- a/ufund-ui/src/app/components/login/login.component.ts +++ b/ufund-ui/src/app/components/login/login.component.ts @@ -1,6 +1,7 @@  import {Component, OnInit} from '@angular/core'  import {UsersService} from '../../services/users.service';  import {ActivatedRoute, Router} from '@angular/router'; +import {BehaviorSubject} from 'rxjs';  @Component({    selector: 'app-login', @@ -11,10 +12,11 @@ import {ActivatedRoute, Router} from '@angular/router';  export class LoginComponent implements OnInit {      protected next?: string | null; +    protected statusText = new BehaviorSubject("")      constructor(          protected usersService: UsersService, -        private router: Router, +        protected router: Router,          private route: ActivatedRoute      ) {} @@ -31,6 +33,68 @@ export class LoginComponent implements OnInit {          this.usersService.login(username, password).then(() => {              this.router.navigate([next]); +        }).catch(ex => { +            this.statusText.next("Unable to login: " + friendlyHttpStatus[ex.status]) +            console.log(ex) +        }) +    } + +    signup(username: string | null, password: string | null) { +        console.log(`attempting to sign up with ${username} ${password}`) +        if (!username || !password) { +            return; +        } + +        this.usersService.createUser(username, password).then(() => { +             this.statusText.next("Account created, click login.") +        }).catch(ex => { +            this.statusText.next("Unable to create account: " + friendlyHttpStatus[ex.status]) +            console.log(ex)          })      }  } + +// temporary +let friendlyHttpStatus: {[key: number]: string} = { +    200: 'OK', +    201: 'Created', +    202: 'Accepted', +    203: 'Non-Authoritative Information', +    204: 'No Content', +    205: 'Reset Content', +    206: 'Partial Content', +    300: 'Multiple Choices', +    301: 'Moved Permanently', +    302: 'Found', +    303: 'See Other', +    304: 'Not Modified', +    305: 'Use Proxy', +    306: 'Unused', +    307: 'Temporary Redirect', +    400: 'Bad Request', +    401: 'Unauthorized', +    402: 'Payment Required', +    403: 'Forbidden', +    404: 'Not Found', +    405: 'Method Not Allowed', +    406: 'Not Acceptable', +    407: 'Proxy Authentication Required', +    408: 'Request Timeout', +    409: 'Conflict', +    410: 'Gone', +    411: 'Length Required', +    412: 'Precondition Required', +    413: 'Request Entry Too Large', +    414: 'Request-URI Too Long', +    415: 'Unsupported Media Type', +    416: 'Requested Range Not Satisfiable', +    417: 'Expectation Failed', +    418: 'I\'m a teapot', +    429: 'Too Many Requests', +    500: 'Internal Server Error', +    501: 'Not Implemented', +    502: 'Bad Gateway', +    503: 'Service Unavailable', +    504: 'Gateway Timeout', +    505: 'HTTP Version Not Supported', +};  | 
