aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/api/api/Controllers/DatasetController.cs5
-rw-r--r--backend/api/api/Services/DatasetService.cs7
-rw-r--r--backend/api/api/Services/IDatasetService.cs1
-rw-r--r--frontend/src/app/_services/auth.service.ts39
-rw-r--r--frontend/src/app/app.component.ts7
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();
+ }
}
}