aboutsummaryrefslogtreecommitdiff
path: root/ufund-ui/src/app
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-03-15 17:28:01 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-03-15 17:28:01 -0400
commit51f0322db803ed3baf1f24f18a6e7a83dab58a3b (patch)
treef252383812cf1131199fa147feb0eca7639b520a /ufund-ui/src/app
parent4f2f1d0944b15ced834255cd2934516a953b97a5 (diff)
downloadJellySolutions-51f0322db803ed3baf1f24f18a6e7a83dab58a3b.tar.gz
JellySolutions-51f0322db803ed3baf1f24f18a6e7a83dab58a3b.tar.bz2
JellySolutions-51f0322db803ed3baf1f24f18a6e7a83dab58a3b.zip
Add login redirection
Diffstat (limited to 'ufund-ui/src/app')
-rw-r--r--ufund-ui/src/app/app.component.ts10
-rw-r--r--ufund-ui/src/app/app.module.ts6
-rw-r--r--ufund-ui/src/app/components/dashboard/dashboard.component.html6
-rw-r--r--ufund-ui/src/app/components/funding-basket/funding-basket.component.ts16
-rw-r--r--ufund-ui/src/app/components/login/login.component.html1
-rw-r--r--ufund-ui/src/app/components/login/login.component.ts19
-rw-r--r--ufund-ui/src/app/services/users.service.ts10
7 files changed, 51 insertions, 17 deletions
diff --git a/ufund-ui/src/app/app.component.ts b/ufund-ui/src/app/app.component.ts
index a85d04b..6f4e1f5 100644
--- a/ufund-ui/src/app/app.component.ts
+++ b/ufund-ui/src/app/app.component.ts
@@ -1,7 +1,6 @@
import {Component, OnInit} from '@angular/core';
import {UsersService} from './services/users.service';
-import {BehaviorSubject, Observable, Subject} from 'rxjs';
-import {User} from './models/User';
+import {BehaviorSubject} from 'rxjs';
@Component({
selector: 'app-root',
@@ -18,8 +17,11 @@ export class AppComponent implements OnInit {
) {}
ngOnInit() {
- this.userService.getCurrentUser().subscribe(r => {
- this.currentUser$?.next("Logged in as " + r.username)
+ this.userService.getCurrentUserSubject().subscribe(r => {
+ this.currentUser$?.next(r
+ ? "Logged in as " + r.username
+ : "Logged out."
+ )
})
}
diff --git a/ufund-ui/src/app/app.module.ts b/ufund-ui/src/app/app.module.ts
index fa54c58..4b50580 100644
--- a/ufund-ui/src/app/app.module.ts
+++ b/ufund-ui/src/app/app.module.ts
@@ -12,6 +12,8 @@ import {HttpClientModule} from '@angular/common/http';
import {FormsModule} from '@angular/forms';
import {RouterLink, RouterLinkActive, RouterOutlet} from '@angular/router';
import {DashboardComponent} from './components/dashboard/dashboard.component';
+import {CommonModule} from '@angular/common';
+import {LoginComponent} from './components/login/login.component';
@NgModule({
declarations: [
@@ -21,7 +23,8 @@ import {DashboardComponent} from './components/dashboard/dashboard.component';
FundingBasketComponent,
CupboardComponent,
NeedListComponent,
- DashboardComponent
+ DashboardComponent,
+ LoginComponent
],
imports: [
BrowserModule,
@@ -30,6 +33,7 @@ import {DashboardComponent} from './components/dashboard/dashboard.component';
RouterLink,
RouterLinkActive,
RouterOutlet,
+ CommonModule,
HttpClientModule,
],
providers: [],
diff --git a/ufund-ui/src/app/components/dashboard/dashboard.component.html b/ufund-ui/src/app/components/dashboard/dashboard.component.html
index f41ccef..c73849f 100644
--- a/ufund-ui/src/app/components/dashboard/dashboard.component.html
+++ b/ufund-ui/src/app/components/dashboard/dashboard.component.html
@@ -1,3 +1,5 @@
<p>dashboard works!</p>
-<a routerLink="/cupboard">Go to the Cupboard</a>
-<a routerLink="/basket">Go to my basket</a>
+<ul>
+ <li><a routerLink="/cupboard">Go to the Cupboard</a></li>
+ <li><a routerLink="/basket">Go to my basket</a></li>
+</ul>
diff --git a/ufund-ui/src/app/components/funding-basket/funding-basket.component.ts b/ufund-ui/src/app/components/funding-basket/funding-basket.component.ts
index 8b12306..c44aa27 100644
--- a/ufund-ui/src/app/components/funding-basket/funding-basket.component.ts
+++ b/ufund-ui/src/app/components/funding-basket/funding-basket.component.ts
@@ -1,4 +1,6 @@
-import { Component } from '@angular/core';
+import {Component, OnInit} from '@angular/core';
+import {Router} from '@angular/router';
+import {UsersService} from '../../services/users.service';
@Component({
selector: 'app-funding-basket',
@@ -6,6 +8,16 @@ import { Component } from '@angular/core';
templateUrl: './funding-basket.component.html',
styleUrl: './funding-basket.component.css'
})
-export class FundingBasketComponent {
+export class FundingBasketComponent implements OnInit{
+ constructor(
+ private router: Router,
+ private userService: UsersService
+ ) {}
+
+ ngOnInit() {
+ if (!this.userService.getCurrentUser()) {
+ this.router.navigate(['/login'], {queryParams: {redir: this.router.url}})
+ }
+ }
}
diff --git a/ufund-ui/src/app/components/login/login.component.html b/ufund-ui/src/app/components/login/login.component.html
index 178ddbf..bfd7f5e 100644
--- a/ufund-ui/src/app/components/login/login.component.html
+++ b/ufund-ui/src/app/components/login/login.component.html
@@ -1,3 +1,4 @@
+<div *ngIf="next" style="color: red">You must be logged in to view this page</div>
<p>Login:</p>
<input placeholder="Username" type="text" #username>
<input placeholder="Password" type="password" #password>
diff --git a/ufund-ui/src/app/components/login/login.component.ts b/ufund-ui/src/app/components/login/login.component.ts
index 50dd018..7d90624 100644
--- a/ufund-ui/src/app/components/login/login.component.ts
+++ b/ufund-ui/src/app/components/login/login.component.ts
@@ -1,6 +1,6 @@
-import { Component } from '@angular/core'
+import {Component, OnInit} from '@angular/core'
import {UsersService} from '../../services/users.service';
-import {Router} from '@angular/router';
+import {ActivatedRoute, Router} from '@angular/router';
@Component({
selector: 'app-login',
@@ -8,20 +8,29 @@ import {Router} from '@angular/router';
templateUrl: './login.component.html',
styleUrl: './login.component.css'
})
-export class LoginComponent {
+export class LoginComponent implements OnInit {
+
+ protected next?: string | null;
+
constructor(
protected usersService: UsersService,
- private router: Router
+ private router: Router,
+ private route: ActivatedRoute
) {}
+ ngOnInit() {
+ this.next = this.route.snapshot.queryParamMap.get('redir')
+ }
+
login(username: string | null, password: string | null) {
+ let next = this.next || '/dashboard'
console.log(`attempting to log in with ${username} ${password}`)
if (!username || !password) {
return;
}
this.usersService.login(username, password).then(() => {
- this.router.navigate(['/dashboard']);
+ this.router.navigate([next]);
})
}
}
diff --git a/ufund-ui/src/app/services/users.service.ts b/ufund-ui/src/app/services/users.service.ts
index 28cc266..b3bbbd4 100644
--- a/ufund-ui/src/app/services/users.service.ts
+++ b/ufund-ui/src/app/services/users.service.ts
@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';
-import {firstValueFrom, Observable, of, Subject} from 'rxjs';
+import {BehaviorSubject, firstValueFrom, Observable} from 'rxjs';
import {User} from '../models/User';
@Injectable({
@@ -8,7 +8,7 @@ import {User} from '../models/User';
})
export class UsersService {
- private currentUser : Subject<User> = new Subject();
+ private currentUser : BehaviorSubject<User | null> = new BehaviorSubject<User | null>(null);
private apiKey: string = "";
private url = "http://localhost:8080/users"
@@ -48,10 +48,14 @@ export class UsersService {
return this.http.delete<boolean>(`${this.url}/${id}`, this.httpOptions)
}
- getCurrentUser() {
+ getCurrentUserSubject() {
return this.currentUser;
}
+ getCurrentUser() {
+ return this.currentUser.getValue()
+ }
+
async login(username: string, password: string) {
let res = this.http.post<string>(this.authUrl, {username: username, password: password}, this.httpOptions2);
this.apiKey = await firstValueFrom(res);