diff options
author | Tyler Ferrari <69283684+Sowgro@users.noreply.github.com> | 2025-03-27 18:50:33 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-27 18:50:33 -0400 |
commit | ddbd1cc688aa98fb275ad72a750fbaaf53e6c0ae (patch) | |
tree | 0a0f9669fb0f7cf2f2816b798269e50a8b26f125 /ufund-ui/src/app/services/auth.service.ts | |
parent | 35d7c971ed47718d4dc5738edb09d62cd780dac4 (diff) | |
parent | 4f5e9e9ecda282a98af5d70bd6cf0540973c7314 (diff) | |
download | JellySolutions-ddbd1cc688aa98fb275ad72a750fbaaf53e6c0ae.tar.gz JellySolutions-ddbd1cc688aa98fb275ad72a750fbaaf53e6c0ae.tar.bz2 JellySolutions-ddbd1cc688aa98fb275ad72a750fbaaf53e6c0ae.zip |
Merge pull request #17 from RIT-SWEN-261-02/api-cleanup
Merge api-cleanup into main
Diffstat (limited to 'ufund-ui/src/app/services/auth.service.ts')
-rw-r--r-- | ufund-ui/src/app/services/auth.service.ts | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/ufund-ui/src/app/services/auth.service.ts b/ufund-ui/src/app/services/auth.service.ts new file mode 100644 index 0000000..6bc7145 --- /dev/null +++ b/ufund-ui/src/app/services/auth.service.ts @@ -0,0 +1,57 @@ +import {Injectable} from '@angular/core'; +import {BehaviorSubject, firstValueFrom} from 'rxjs'; +import {User} from '../models/User'; +import {HttpClient, HttpHeaders} from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthService { + + private authUrl = "http://localhost:8080/auth" + private userUrl = "http://localhost:8080/users" + + private currentUser : BehaviorSubject<User | null> = new BehaviorSubject<User | null>(null); + private apiKey: string = ""; + + 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( + private http: HttpClient + ) {} + + 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.userUrl}/${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)) + } + + getCurrentUserSubject() { + return this.currentUser; + } + + getCurrentUser() { + return this.currentUser.getValue() + } + + getApiKey() { + return this.apiKey; + } + +} |