diff options
author | Ognjen Cirkovic <ciraboxkg@gmail.com> | 2022-03-29 15:17:38 +0000 |
---|---|---|
committer | Ognjen Cirkovic <ciraboxkg@gmail.com> | 2022-03-29 15:17:38 +0000 |
commit | f3d5f6fa046912c996e2581d9082087ccf7919d6 (patch) | |
tree | a2d08f934062cb840d1c0b4379200201e6a38554 | |
parent | 28e3d25b5d4756361b464e8ca34fbc986fc0e75f (diff) | |
parent | 2ca55fc8c9879a2d06e364ee3c88a9cfffa6f299 (diff) |
Merge branch 'Guest-Front-Back' into 'dev'
Omoguceno da guest korisnik dobija Jwt token koji se takodje osvezava.I da...
See merge request igrannonica/neuronstellar!26
-rw-r--r-- | backend/api/api/Controllers/DatasetController.cs | 5 | ||||
-rw-r--r-- | backend/api/api/Services/DatasetService.cs | 7 | ||||
-rw-r--r-- | backend/api/api/Services/IDatasetService.cs | 1 | ||||
-rw-r--r-- | frontend/src/app/_services/auth.service.ts | 39 | ||||
-rw-r--r-- | frontend/src/app/app.component.ts | 7 |
5 files changed, 50 insertions, 9 deletions
diff --git a/backend/api/api/Controllers/DatasetController.cs b/backend/api/api/Controllers/DatasetController.cs index bae05ba9..d9803744 100644 --- a/backend/api/api/Controllers/DatasetController.cs +++ b/backend/api/api/Controllers/DatasetController.cs @@ -24,7 +24,7 @@ namespace api.Controllers // GET: api/<DatasetController>/mydatasets [HttpGet("mydatasets")] - [Authorize(Roles = "User")] + [Authorize(Roles = "User,Guest")] public ActionResult<List<Dataset>> Get() { string username; @@ -39,6 +39,9 @@ namespace api.Controllers } else return BadRequest(); + //U slucaju da je korisnik gost vrati dataSetove igrannonice + if (username == "") + return _datasetService.GetGuestDatasets(); //ako bude trebao ID, samo iz baze uzeti diff --git a/backend/api/api/Services/DatasetService.cs b/backend/api/api/Services/DatasetService.cs index 45ed18a9..2ff271f3 100644 --- a/backend/api/api/Services/DatasetService.cs +++ b/backend/api/api/Services/DatasetService.cs @@ -36,6 +36,13 @@ namespace api.Services { return _dataset.Find(dataset => dataset.username == username).ToList(); } + public List<Dataset> GetGuestDatasets() + { + //Join Igranonica public datasetove sa svim temp uploadanim datasetovima + List<Dataset> datasets= _dataset.Find(dataset => dataset.username == "Igrannonica" && dataset.isPublic == true).ToList(); + datasets.AddRange(_dataset.Find(dataset => dataset.username == "").ToList()); + return datasets; + } //poslednji datasetovi public List<Dataset> SortDatasets(string username, bool ascdsc, int latest) diff --git a/backend/api/api/Services/IDatasetService.cs b/backend/api/api/Services/IDatasetService.cs index dbe43321..8e62ba43 100644 --- a/backend/api/api/Services/IDatasetService.cs +++ b/backend/api/api/Services/IDatasetService.cs @@ -14,5 +14,6 @@ namespace api.Services Dataset Create(Dataset dataset); void Update(string username, string name, Dataset dataset); void Delete(string username, string name); + public List<Dataset> GetGuestDatasets(); } } diff --git a/frontend/src/app/_services/auth.service.ts b/frontend/src/app/_services/auth.service.ts index 449b8802..ccfbe15f 100644 --- a/frontend/src/app/_services/auth.service.ts +++ b/frontend/src/app/_services/auth.service.ts @@ -24,10 +24,16 @@ export class AuthService { return this.http.post(`${API_SETTINGS.apiURL}/auth/register`, { ...user }, { responseType: 'text' }); } + getGuestToken(){ + return this.http.post(`${API_SETTINGS.apiURL}/auth/guestToken`, {}, { responseType: 'text' }); + } + isAuthenticated(): boolean { if (this.cookie.check('token')) { var token = this.cookie.get('token'); - return !jwtHelper.isTokenExpired(token); + var property=jwtHelper.decodeToken(this.cookie.get('token')); + var username=property['name']; + return !jwtHelper.isTokenExpired(token) && username!=""; } return false; } @@ -41,12 +47,30 @@ export class AuthService { if (!exp) { exp = new Date(); } - 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() - 60000); + var property=jwtHelper.decodeToken(this.cookie.get('token')); + var username=property['name']; + if(username!=""){ + 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() - 60000); + } + else{ + this.refresher = setTimeout(() => { + console.log('refreshing token!'); + this.getGuestToken().subscribe((response) => { + this.authenticate(response); + }); + }, exp.getTime() - new Date().getTime() - 60000); + } + } + + addGuestToken(){ + this.getGuestToken().subscribe((token)=>{ + this.authenticate(token); + }); } authenticate(token: string) { @@ -74,6 +98,7 @@ export class AuthService { if (this.refresher) clearTimeout(this.refresher); this.shared.loggedIn = false; + this.addGuestToken(); } authHeader() { diff --git a/frontend/src/app/app.component.ts b/frontend/src/app/app.component.ts index f5ae5786..8c6f8452 100644 --- a/frontend/src/app/app.component.ts +++ b/frontend/src/app/app.component.ts @@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core'; import { Title } from '@angular/platform-browser'; import { Router, NavigationEnd, ActivatedRoute } from '@angular/router'; import { filter, map } from 'rxjs'; +import { AuthService } from './_services/auth.service'; @Component({ selector: 'app-root', @@ -10,7 +11,7 @@ import { filter, map } from 'rxjs'; }) export class AppComponent implements OnInit { - constructor(private router: Router, private titleService: Title) { } + constructor(private router: Router, private titleService: Title,private authService:AuthService) { } ngOnInit() { this.router.events @@ -33,5 +34,9 @@ export class AppComponent implements OnInit { this.titleService.setTitle(`${title} - Igrannonica`); } }); + if(!this.authService.isAuthenticated()) + { + this.authService.addGuestToken(); + } } } |