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 | |
parent | 51f0322db803ed3baf1f24f18a6e7a83dab58a3b (diff) | |
download | JellySolutions-d97d4d430113088c4f52f53c040d8705c66b410e.tar.gz JellySolutions-d97d4d430113088c4f52f53c040d8705c66b410e.tar.bz2 JellySolutions-d97d4d430113088c4f52f53c040d8705c66b410e.zip |
Add support for account creation
-rw-r--r-- | ufund-ui/src/app/app.module.ts | 2 | ||||
-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 | ||||
-rw-r--r-- | ufund-ui/src/app/services/users.service.ts | 4 |
5 files changed, 82 insertions, 7 deletions
diff --git a/ufund-ui/src/app/app.module.ts b/ufund-ui/src/app/app.module.ts index 4b50580..9f525fe 100644 --- a/ufund-ui/src/app/app.module.ts +++ b/ufund-ui/src/app/app.module.ts @@ -24,7 +24,7 @@ import {LoginComponent} from './components/login/login.component'; CupboardComponent, NeedListComponent, DashboardComponent, - LoginComponent + LoginComponent, ], imports: [ BrowserModule, 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', +}; diff --git a/ufund-ui/src/app/services/users.service.ts b/ufund-ui/src/app/services/users.service.ts index b3bbbd4..c570ccf 100644 --- a/ufund-ui/src/app/services/users.service.ts +++ b/ufund-ui/src/app/services/users.service.ts @@ -32,8 +32,8 @@ export class UsersService { private http: HttpClient ) {} - createUser(data: User): Observable<User> { - return this.http.post<User>(this.url, data, this.httpOptions) + async createUser(username:string, password:string) { + await firstValueFrom(this.http.post<User>(this.url, {username: username, password: password}, this.httpOptions)) } getUser(id: string): Observable<User> { |