From a9287af015228a73b5053acdef421d9d63ba766b Mon Sep 17 00:00:00 2001 From: Danijel Andjelkovic Date: Tue, 15 Mar 2022 16:06:09 +0100 Subject: Dodao automatsko osvezavanja JWT tokena, automatsko ucitavanje ulogovanog korisnika. Prosirio modele Dataset, Model, Predictor tako da se moze definisati da li su javna ili da li bilo ko sa linkom moze da ih vidi, dodao lastUpdated datum. Login dugme u navbar-u radi funkcionalno. Login/logout ne moraju da osveze stranicu vise. --- frontend/src/app/_services/auth.service.ts | 46 ++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'frontend/src/app/_services/auth.service.ts') diff --git a/frontend/src/app/_services/auth.service.ts b/frontend/src/app/_services/auth.service.ts index c96c2dae..e6611880 100644 --- a/frontend/src/app/_services/auth.service.ts +++ b/frontend/src/app/_services/auth.service.ts @@ -3,6 +3,7 @@ import { HttpClient, HttpHeaders } from '@angular/common/http'; import { JwtHelperService } from '@auth0/angular-jwt'; import { CookieService } from 'ngx-cookie-service'; import { API_SETTINGS } from 'src/config'; +import shared from '../Shared'; const jwtHelper = new JwtHelperService(); @@ -11,6 +12,8 @@ const jwtHelper = new JwtHelperService(); }) export class AuthService { + shared = shared; + constructor(private http: HttpClient, private cookie: CookieService) { } login(username: string, password: string) { @@ -28,4 +31,47 @@ export class AuthService { } return false; } + + lastToken?: string; + refresher: any; + + enableAutoRefresh() { + this.lastToken = this.cookie.get('token'); + let exp = jwtHelper.getTokenExpirationDate(this.lastToken); + if (!exp) { + exp = new Date(); + } + console.log(exp, exp?.getTime()); + this.refresher = setTimeout(() => { + console.log('refreshing token!'); + this.http.post(`${API_SETTINGS.apiURL}/auth/renewJwt`, {}, { headers: this.authHeader(), responseType: 'text' }).subscribe((response) => { + this.authenticate(response); + }); + }, exp.getTime() - new Date().getTime()); + } + + authenticate(token: string) { + const user = jwtHelper.decodeToken(token); + this.cookie.set('token', token, user.exp); + this.updateUser(); + } + + updateUser() { + if (this.cookie.check('token')) { + const token = this.cookie.get('token'); + this.shared.loggedIn = this.isAuthenticated(); + this.enableAutoRefresh(); + } + } + + logOut() { + this.cookie.delete('token'); + if (this.refresher) + clearTimeout(this.refresher); + this.shared.loggedIn = false; + } + + authHeader() { + return new HttpHeaders().set("Authorization", "Bearer " + this.cookie.get('token')); + } } -- cgit v1.2.3 From dd5834672ba1cc54362425462bfebd31959f693a Mon Sep 17 00:00:00 2001 From: Danijel Andjelkovic Date: Tue, 15 Mar 2022 16:32:35 +0100 Subject: Dodate stranice za sve linkove. --- .../src/app/_elements/navbar/navbar.component.html | 12 +++++------ .../browse-datasets/browse-datasets.component.css | 0 .../browse-datasets/browse-datasets.component.html | 1 + .../browse-datasets.component.spec.ts | 25 ++++++++++++++++++++++ .../browse-datasets/browse-datasets.component.ts | 15 +++++++++++++ .../browse-predictors.component.css | 0 .../browse-predictors.component.html | 1 + .../browse-predictors.component.spec.ts | 25 ++++++++++++++++++++++ .../browse-predictors.component.ts | 15 +++++++++++++ frontend/src/app/_pages/home/home.component.html | 8 +++---- .../app/_pages/login-page/login-page.component.css | 0 .../_pages/login-page/login-page.component.html | 9 -------- .../_pages/login-page/login-page.component.spec.ts | 25 ---------------------- .../app/_pages/login-page/login-page.component.ts | 15 ------------- .../_pages/my-datasets/my-datasets.component.css | 0 .../_pages/my-datasets/my-datasets.component.html | 1 + .../my-datasets/my-datasets.component.spec.ts | 25 ++++++++++++++++++++++ .../_pages/my-datasets/my-datasets.component.ts | 15 +++++++++++++ .../app/_pages/my-models/my-models.component.css | 0 .../app/_pages/my-models/my-models.component.html | 1 + .../_pages/my-models/my-models.component.spec.ts | 25 ++++++++++++++++++++++ .../app/_pages/my-models/my-models.component.ts | 15 +++++++++++++ .../my-predictors/my-predictors.component.css | 0 .../my-predictors/my-predictors.component.html | 1 + .../my-predictors/my-predictors.component.spec.ts | 25 ++++++++++++++++++++++ .../my-predictors/my-predictors.component.ts | 15 +++++++++++++ .../only-authorized/only-authorized.component.css | 0 .../only-authorized/only-authorized.component.html | 1 - .../only-authorized.component.spec.ts | 25 ---------------------- .../only-authorized/only-authorized.component.ts | 15 ------------- .../src/app/_pages/predict/predict.component.css | 0 .../src/app/_pages/predict/predict.component.html | 1 + .../app/_pages/predict/predict.component.spec.ts | 25 ++++++++++++++++++++++ .../src/app/_pages/predict/predict.component.ts | 15 +++++++++++++ .../src/app/_pages/profile/profile.component.css | 0 .../src/app/_pages/profile/profile.component.html | 1 + .../app/_pages/profile/profile.component.spec.ts | 25 ++++++++++++++++++++++ .../src/app/_pages/profile/profile.component.ts | 15 +++++++++++++ .../register-page/register-page.component.css | 0 .../register-page/register-page.component.html | 0 .../register-page/register-page.component.spec.ts | 25 ---------------------- .../register-page/register-page.component.ts | 14 ------------ .../src/app/_pages/settings/settings.component.css | 0 .../app/_pages/settings/settings.component.html | 1 + .../app/_pages/settings/settings.component.spec.ts | 25 ++++++++++++++++++++++ .../src/app/_pages/settings/settings.component.ts | 15 +++++++++++++ frontend/src/app/_services/auth.service.ts | 8 ++++--- frontend/src/app/app-routing.module.ts | 24 ++++++++++++--------- frontend/src/app/app.module.ts | 22 ++++++++++++++----- 49 files changed, 374 insertions(+), 157 deletions(-) create mode 100644 frontend/src/app/_pages/browse-datasets/browse-datasets.component.css create mode 100644 frontend/src/app/_pages/browse-datasets/browse-datasets.component.html create mode 100644 frontend/src/app/_pages/browse-datasets/browse-datasets.component.spec.ts create mode 100644 frontend/src/app/_pages/browse-datasets/browse-datasets.component.ts create mode 100644 frontend/src/app/_pages/browse-predictors/browse-predictors.component.css create mode 100644 frontend/src/app/_pages/browse-predictors/browse-predictors.component.html create mode 100644 frontend/src/app/_pages/browse-predictors/browse-predictors.component.spec.ts create mode 100644 frontend/src/app/_pages/browse-predictors/browse-predictors.component.ts delete mode 100644 frontend/src/app/_pages/login-page/login-page.component.css delete mode 100644 frontend/src/app/_pages/login-page/login-page.component.html delete mode 100644 frontend/src/app/_pages/login-page/login-page.component.spec.ts delete mode 100644 frontend/src/app/_pages/login-page/login-page.component.ts create mode 100644 frontend/src/app/_pages/my-datasets/my-datasets.component.css create mode 100644 frontend/src/app/_pages/my-datasets/my-datasets.component.html create mode 100644 frontend/src/app/_pages/my-datasets/my-datasets.component.spec.ts create mode 100644 frontend/src/app/_pages/my-datasets/my-datasets.component.ts create mode 100644 frontend/src/app/_pages/my-models/my-models.component.css create mode 100644 frontend/src/app/_pages/my-models/my-models.component.html create mode 100644 frontend/src/app/_pages/my-models/my-models.component.spec.ts create mode 100644 frontend/src/app/_pages/my-models/my-models.component.ts create mode 100644 frontend/src/app/_pages/my-predictors/my-predictors.component.css create mode 100644 frontend/src/app/_pages/my-predictors/my-predictors.component.html create mode 100644 frontend/src/app/_pages/my-predictors/my-predictors.component.spec.ts create mode 100644 frontend/src/app/_pages/my-predictors/my-predictors.component.ts delete mode 100644 frontend/src/app/_pages/only-authorized/only-authorized.component.css delete mode 100644 frontend/src/app/_pages/only-authorized/only-authorized.component.html delete mode 100644 frontend/src/app/_pages/only-authorized/only-authorized.component.spec.ts delete mode 100644 frontend/src/app/_pages/only-authorized/only-authorized.component.ts create mode 100644 frontend/src/app/_pages/predict/predict.component.css create mode 100644 frontend/src/app/_pages/predict/predict.component.html create mode 100644 frontend/src/app/_pages/predict/predict.component.spec.ts create mode 100644 frontend/src/app/_pages/predict/predict.component.ts create mode 100644 frontend/src/app/_pages/profile/profile.component.css create mode 100644 frontend/src/app/_pages/profile/profile.component.html create mode 100644 frontend/src/app/_pages/profile/profile.component.spec.ts create mode 100644 frontend/src/app/_pages/profile/profile.component.ts delete mode 100644 frontend/src/app/_pages/register-page/register-page.component.css delete mode 100644 frontend/src/app/_pages/register-page/register-page.component.html delete mode 100644 frontend/src/app/_pages/register-page/register-page.component.spec.ts delete mode 100644 frontend/src/app/_pages/register-page/register-page.component.ts create mode 100644 frontend/src/app/_pages/settings/settings.component.css create mode 100644 frontend/src/app/_pages/settings/settings.component.html create mode 100644 frontend/src/app/_pages/settings/settings.component.spec.ts create mode 100644 frontend/src/app/_pages/settings/settings.component.ts (limited to 'frontend/src/app/_services/auth.service.ts') diff --git a/frontend/src/app/_elements/navbar/navbar.component.html b/frontend/src/app/_elements/navbar/navbar.component.html index cea41e5a..116694b4 100644 --- a/frontend/src/app/_elements/navbar/navbar.component.html +++ b/frontend/src/app/_elements/navbar/navbar.component.html @@ -12,8 +12,8 @@ [class]="(currentUrl === '') ? 'text-secondary' : 'text-white'">Početna
  • Dodaj model
  • -
  • Predvidi
  • +
  • Predvidi