diff options
Diffstat (limited to 'ufund-ui/src/app/services')
-rw-r--r-- | ufund-ui/src/app/services/cupboard.service.ts | 3 | ||||
-rw-r--r-- | ufund-ui/src/app/services/users.service.ts | 40 |
2 files changed, 35 insertions, 8 deletions
diff --git a/ufund-ui/src/app/services/cupboard.service.ts b/ufund-ui/src/app/services/cupboard.service.ts index c123841..4a2b4b0 100644 --- a/ufund-ui/src/app/services/cupboard.service.ts +++ b/ufund-ui/src/app/services/cupboard.service.ts @@ -18,8 +18,7 @@ export class CupboardService { ) {} createNeed(need: Need): Observable<boolean> { - return this.http.post<boolean>( - this.url, need, this.httpOptions) + return this.http.post<boolean>(this.url, need, this.httpOptions) } getNeeds(): Observable<Need[]> { diff --git a/ufund-ui/src/app/services/users.service.ts b/ufund-ui/src/app/services/users.service.ts index 571c004..28cc266 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 {Observable} from 'rxjs'; +import {firstValueFrom, Observable, of, Subject} from 'rxjs'; import {User} from '../models/User'; @Injectable({ @@ -8,11 +8,24 @@ import {User} from '../models/User'; }) export class UsersService { - private currentUserID? : number + private currentUser : Subject<User> = new Subject(); + private apiKey: string = ""; private url = "http://localhost:8080/users" + private authUrl = "http://localhost:8080/auth" private httpOptions = { - headers: new HttpHeaders({'Content-Type': 'application/json'}) + headers: new HttpHeaders({ + 'Content-Type': 'application/json', + "jelly-api-key": this.apiKey + }) + }; + private httpOptions2 = { + headers: new HttpHeaders({ + 'Content-Type': 'application/json', + "jelly-api-key": this.apiKey + }), + responseType: "text" as "json" // don't ask me how or why this works, bc i have no clue... + // see the relevant angular bug report https://github.com/angular/angular/issues/18586 }; constructor( @@ -23,7 +36,7 @@ export class UsersService { return this.http.post<User>(this.url, data, this.httpOptions) } - getUser(id: number): Observable<User> { + getUser(id: string): Observable<User> { return this.http.get<User>(`${this.url}/${id}`, this.httpOptions) } @@ -35,7 +48,22 @@ export class UsersService { return this.http.delete<boolean>(`${this.url}/${id}`, this.httpOptions) } - getCurrentUser(): Observable<User> | undefined { - return this.currentUserID ? this.getUser(this.currentUserID) : undefined + getCurrentUser() { + return this.currentUser; + } + + 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); + console.log("apikey: "+this.apiKey) + let res2 = this.http.get<User>(`${this.url}/${username}`, { + headers: new HttpHeaders({ + 'Content-Type': 'application/json', + "jelly-api-key": this.apiKey + }) + }) + let currentU = await firstValueFrom(res2); + this.currentUser.next(currentU); + // this.currentUser.subscribe(r => console.log("currentUser: "+r.username)) } } |