aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-03-15 18:34:58 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-03-15 18:34:58 -0400
commitd97d4d430113088c4f52f53c040d8705c66b410e (patch)
tree7738f85333e1511d39b745c49b9ff70c4d8e3a27
parent51f0322db803ed3baf1f24f18a6e7a83dab58a3b (diff)
downloadJellySolutions-d97d4d430113088c4f52f53c040d8705c66b410e.tar.gz
JellySolutions-d97d4d430113088c4f52f53c040d8705c66b410e.tar.bz2
JellySolutions-d97d4d430113088c4f52f53c040d8705c66b410e.zip
Add support for account creation
-rw-r--r--ufund-ui/src/app/app.module.ts2
-rw-r--r--ufund-ui/src/app/components/login/login.component.css12
-rw-r--r--ufund-ui/src/app/components/login/login.component.html5
-rw-r--r--ufund-ui/src/app/components/login/login.component.ts66
-rw-r--r--ufund-ui/src/app/services/users.service.ts4
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> {