diff --git a/Backend/src/models/contact_persons/contact_persons.router.ts b/Backend/src/models/contact_persons/contact_persons.router.ts
index b06f62d..071482b 100644
--- a/Backend/src/models/contact_persons/contact_persons.router.ts
+++ b/Backend/src/models/contact_persons/contact_persons.router.ts
@@ -76,7 +76,9 @@ contactpersonsRouter.post('/', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
// Get required parameters
const vendor_id = req.body.vendor_id;
@@ -104,7 +106,9 @@ contactpersonsRouter.put('/:id', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
// Get required parameters
const contact_person_id = parseInt(req.params.id, 10);
diff --git a/Backend/src/models/crawling_status/crawling_status.router.ts b/Backend/src/models/crawling_status/crawling_status.router.ts
index 4ca0b89..3d215bd 100644
--- a/Backend/src/models/crawling_status/crawling_status.router.ts
+++ b/Backend/src/models/crawling_status/crawling_status.router.ts
@@ -25,7 +25,9 @@ crawlingstatusRouter.get('/', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
if (!user.is_admin) {
res.status(403).send({});
diff --git a/Backend/src/models/favorite_shops/favoriteshops.router.ts b/Backend/src/models/favorite_shops/favoriteshops.router.ts
index 0c0d033..4cb0266 100644
--- a/Backend/src/models/favorite_shops/favoriteshops.router.ts
+++ b/Backend/src/models/favorite_shops/favoriteshops.router.ts
@@ -24,7 +24,9 @@ favoriteshopsRouter.get('/', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.params.session_id;
+ const session_key = req.params.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
const priceAlarms = await FavoriteShopsService.getFavoriteShops(user.user_id);
@@ -40,7 +42,9 @@ favoriteshopsRouter.post('/', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
// Get info for price alarm creation
const vendor_id = req.body.vendor_id;
@@ -72,7 +76,9 @@ favoriteshopsRouter.delete('/:id', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.params.session_id;
+ const session_key = req.params.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
// Get info for price alarm creation
const favorite_id = parseInt(req.params.id, 10);
diff --git a/Backend/src/models/pricealarms/pricealarms.router.ts b/Backend/src/models/pricealarms/pricealarms.router.ts
index fcd4939..a5d01c5 100644
--- a/Backend/src/models/pricealarms/pricealarms.router.ts
+++ b/Backend/src/models/pricealarms/pricealarms.router.ts
@@ -24,7 +24,9 @@ pricealarmsRouter.get('/', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.params.session_id;
+ const session_key = req.params.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
const priceAlarms = await PriceAlarmsService.getPriceAlarms(user.user_id);
@@ -40,7 +42,9 @@ pricealarmsRouter.post('/', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
// Get info for price alarm creation
const product_id = req.body.product_id;
@@ -73,7 +77,9 @@ pricealarmsRouter.put('/', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
// Get info for price alarm creation
const alarm_id = req.body.alarm_id;
diff --git a/Backend/src/models/prices/prices.router.ts b/Backend/src/models/prices/prices.router.ts
index 16bc5ba..61ed812 100644
--- a/Backend/src/models/prices/prices.router.ts
+++ b/Backend/src/models/prices/prices.router.ts
@@ -107,7 +107,9 @@ pricesRouter.post('/', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
// Get required parameters
const vendor_id = req.body.vendor_id;
diff --git a/Backend/src/models/users/users.router.ts b/Backend/src/models/users/users.router.ts
index d1ca782..7851ef7 100644
--- a/Backend/src/models/users/users.router.ts
+++ b/Backend/src/models/users/users.router.ts
@@ -47,10 +47,10 @@ usersRouter.post('/register', async (req: Request, res: Response) => {
const session: Session = await UserService.createUser(username, password, email, ip);
// Send the session details back to the user
- res.cookie('betterauth', JSON.stringify({
- id: session.session_id,
- key: session.session_key
- }), {expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 30)}).status(201).send({});
+ res.status(201).send({
+ session_id: session.session_id,
+ session_key: session.session_key
+ });
} catch (e) {
console.log('Error handling a request: ' + e.message);
res.status(500).send(JSON.stringify({'message': 'Internal Server Error. Try again later.'}));
@@ -80,10 +80,10 @@ usersRouter.post('/login', async (req: Request, res: Response) => {
}
// Send the session details back to the user
- res.cookie('betterauth', JSON.stringify({
- id: session.session_id,
- key: session.session_key
- }), {expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 30)}).status(200).send({});
+ res.status(200).send({
+ session_id: session.session_id,
+ session_key: session.session_key
+ });
} catch (e) {
console.log('Error handling a request: ' + e.message);
res.status(500).send(JSON.stringify({'message': 'Internal Server Error. Try again later.'}));
@@ -94,15 +94,17 @@ usersRouter.post('/login', async (req: Request, res: Response) => {
usersRouter.post('/checkSessionValid', async (req: Request, res: Response) => {
try {
const ip: string = req.connection.remoteAddress ?? '';
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
- if(!req.cookies.betterauth) {
+ if(!session_id || !session_key) {
// Error logging in, probably wrong username / password
res.status(401).send(JSON.stringify({messages: ['No session detected'], codes: [5]}));
return;
}
// Update the user entry and create a session
- const user: User = await UserService.checkSessionWithCookie(req.cookies.betterauth, ip);
+ const user: User = await UserService.checkSession(session_id, session_key, ip);
if (!user.user_id) {
// Error logging in, probably wrong username / password
diff --git a/Backend/src/models/users/users.service.ts b/Backend/src/models/users/users.service.ts
index 639ca5b..77a9785 100644
--- a/Backend/src/models/users/users.service.ts
+++ b/Backend/src/models/users/users.service.ts
@@ -115,8 +115,8 @@ export const login = async (username: string, password: string, ip: string): Pro
const sessionKeyHash = bcrypt.hashSync(sessionKey, 10);
// Update user entry in SQL
- const userQuery = 'UPDATE users SET last_login_date = NOW()';
- const userIdRes = await conn.query(userQuery);
+ const userQuery = 'UPDATE users SET last_login_date = NOW() WHERE user_id = ?';
+ const userIdRes = await conn.query(userQuery, userId);
await conn.commit();
// Create session
diff --git a/Backend/src/models/vendors/vendors.router.ts b/Backend/src/models/vendors/vendors.router.ts
index 7888cae..75ccc35 100644
--- a/Backend/src/models/vendors/vendors.router.ts
+++ b/Backend/src/models/vendors/vendors.router.ts
@@ -37,7 +37,9 @@ vendorsRouter.get('/managed', async (req: Request, res: Response) => {
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.params.session_id;
+ const session_key = req.params.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
const vendors = await VendorService.getManagedShops(user.user_id);
@@ -91,7 +93,9 @@ vendorsRouter.put('/manage/deactivatelisting', async (req: Request, res: Respons
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
// Get required parameters
const vendor_id = req.body.vendor_id;
@@ -115,7 +119,9 @@ vendorsRouter.put('/manage/shop/deactivate/:id', async (req: Request, res: Respo
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
// Get required parameters
const vendor_id = parseInt(req.params.id, 10);
@@ -138,7 +144,9 @@ vendorsRouter.put('/manage/shop/activate/:id', async (req: Request, res: Respons
try {
// Authenticate user
const user_ip = req.connection.remoteAddress ?? '';
- const user = await UserService.checkSessionWithCookie(req.cookies.betterauth, user_ip);
+ const session_id = req.body.session_id;
+ const session_key = req.body.session_key;
+ const user = await UserService.checkSession(session_id, session_key, user_ip);
// Get required parameters
const vendor_id = parseInt(req.params.id, 10);
diff --git a/Frontend/src/app/components/auth/registration/registration.component.css b/Frontend/src/app/components/auth/registration/registration.component.css
index 08f1877..6de2e1b 100644
--- a/Frontend/src/app/components/auth/registration/registration.component.css
+++ b/Frontend/src/app/components/auth/registration/registration.component.css
@@ -61,7 +61,7 @@ form{
}
.btn_signin{
transition: all .5s ease;
- width: 70%;
+ width: 100%;
border-radius: 30px;
color:#008080;
font-weight: 600;
diff --git a/Frontend/src/app/components/auth/registration/registration.component.html b/Frontend/src/app/components/auth/registration/registration.component.html
index b752579..c18e6e0 100644
--- a/Frontend/src/app/components/auth/registration/registration.component.html
+++ b/Frontend/src/app/components/auth/registration/registration.component.html
@@ -9,27 +9,30 @@
Konto erstellen
+ -->
diff --git a/Frontend/src/app/components/auth/registration/registration.component.ts b/Frontend/src/app/components/auth/registration/registration.component.ts
index 2c5f5a5..ff8c904 100644
--- a/Frontend/src/app/components/auth/registration/registration.component.ts
+++ b/Frontend/src/app/components/auth/registration/registration.component.ts
@@ -1,4 +1,7 @@
import { Component, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import {ApiService} from "../../../services/api.service";
+
@Component({
selector: 'app-registration',
@@ -6,10 +9,29 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./registration.component.css']
})
export class RegistrationComponent implements OnInit {
+ form: any;
+ loading = false;
+ submitted = false;
- constructor() { }
+ constructor(
+ private formBuilder: FormBuilder,
+ private api : ApiService
+ ) { }
ngOnInit(): void {
+ this.form = this.formBuilder.group({
+ username: ['', Validators.required],
+ email: ['', Validators.required],
+ password: ['', [
+ Validators.required,
+ Validators.minLength(8)]
+ ],
+ });
}
+ get me() { return this.form.controls; }
+
+ onSubmit() {
+ this.api.registerUser(this.form.value.username, this.form.value.password, this.form.value.email).subscribe(res=>console.log(res));
+ }
}
diff --git a/Frontend/src/app/components/auth/signin/signin.component.css b/Frontend/src/app/components/auth/signin/signin.component.css
index 08f1877..6de2e1b 100644
--- a/Frontend/src/app/components/auth/signin/signin.component.css
+++ b/Frontend/src/app/components/auth/signin/signin.component.css
@@ -61,7 +61,7 @@ form{
}
.btn_signin{
transition: all .5s ease;
- width: 70%;
+ width: 100%;
border-radius: 30px;
color:#008080;
font-weight: 600;
diff --git a/Frontend/src/app/components/auth/signin/signin.component.html b/Frontend/src/app/components/auth/signin/signin.component.html
index 0a415c6..358f183 100644
--- a/Frontend/src/app/components/auth/signin/signin.component.html
+++ b/Frontend/src/app/components/auth/signin/signin.component.html
@@ -9,13 +9,13 @@
Anmelden
diff --git a/Frontend/src/app/components/auth/signin/signin.component.ts b/Frontend/src/app/components/auth/signin/signin.component.ts
index e497f15..e39ac56 100644
--- a/Frontend/src/app/components/auth/signin/signin.component.ts
+++ b/Frontend/src/app/components/auth/signin/signin.component.ts
@@ -1,4 +1,7 @@
-import { Component, OnInit } from '@angular/core';
+import {Component, OnInit} from '@angular/core';
+import {FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {ApiService} from '../../../services/api.service';
+import {Router} from '@angular/router';
@Component({
selector: 'app-signin',
@@ -8,12 +11,46 @@ import { Component, OnInit } from '@angular/core';
export class SigninComponent implements OnInit {
- constructor() { }
+ loginForm: FormGroup;
+ loading = false;
+ submitted = false;
+ private isSuccessful: boolean;
+ private isSignUpFailed: boolean;
+ private errorMessage: '';
- ngOnInit(): void {
- }
- onSubmit() {
+ constructor(
+ private formBuilder: FormBuilder,
+ private api: ApiService,
+ private router: Router
+ ) {
+ }
+ ngOnInit(): void {
+ this.loginForm = this.formBuilder.group({
+ username: ['', Validators.required],
+ password: ['', [Validators.required, Validators.minLength(8)]]
+ });
+ }
+
+ onSubmit(): void {
+ this.submitted = true;
+
+ if (this.loginForm.invalid) {
+ return;
+ }
+
+ this.api.loginUser(this.loginForm.value.username, this.loginForm.value.password)
+ .subscribe(
+ data => {
+ this.router.navigate(['']);
+ this.isSuccessful = true;
+ this.isSignUpFailed = false;
+ this.api.saveSessionInfoToLocalStorage(data);
+ },
+ err => {
+ this.errorMessage = err.error.message;
+ this.isSignUpFailed = true;
+ });
}
}
diff --git a/Frontend/src/app/components/hot-deals-widget/hot-deals-widget.component.html b/Frontend/src/app/components/hot-deals-widget/hot-deals-widget.component.html
index 36ea156..a77fc6f 100644
--- a/Frontend/src/app/components/hot-deals-widget/hot-deals-widget.component.html
+++ b/Frontend/src/app/components/hot-deals-widget/hot-deals-widget.component.html
@@ -9,7 +9,7 @@
-
+
@@ -17,7 +17,7 @@
{{product.name}}
-
Amazon: 699.00$
+
Amazon: {{product.price}}$
Plantshub: 599,00$
diff --git a/Frontend/src/app/components/top-bar/top-bar.component.ts b/Frontend/src/app/components/top-bar/top-bar.component.ts
index 15aa721..f2e667b 100644
--- a/Frontend/src/app/components/top-bar/top-bar.component.ts
+++ b/Frontend/src/app/components/top-bar/top-bar.component.ts
@@ -1,4 +1,6 @@
import { Component, OnInit } from '@angular/core';
+import {ApiService} from "../../services/api.service";
+
@Component({
selector: 'app-top-bar',
@@ -9,9 +11,12 @@ export class TopBarComponent implements OnInit {
sidenav: any;
- constructor() { }
+ constructor(
+ private api: ApiService
+ ) { }
ngOnInit() {
- }
+ this.api.getUserInfo().subscribe(data=>{console.log(data)});
+ }
}
diff --git a/Frontend/src/app/models/product.ts b/Frontend/src/app/models/product.ts
index 8c51860..a73850e 100644
--- a/Frontend/src/app/models/product.ts
+++ b/Frontend/src/app/models/product.ts
@@ -11,4 +11,5 @@ export interface Product {
manufacturer_id: number;
selling_rank: string;
category_id: number;
+ price: number;
}
diff --git a/Frontend/src/app/pages/product-detail-page/product-detail-page.component.html b/Frontend/src/app/pages/product-detail-page/product-detail-page.component.html
index bf2d7cc..a75e4d4 100644
--- a/Frontend/src/app/pages/product-detail-page/product-detail-page.component.html
+++ b/Frontend/src/app/pages/product-detail-page/product-detail-page.component.html
@@ -1,7 +1,7 @@
-
+
diff --git a/Frontend/src/app/services/api.service.ts b/Frontend/src/app/services/api.service.ts
index 5482ed0..953c229 100644
--- a/Frontend/src/app/services/api.service.ts
+++ b/Frontend/src/app/services/api.service.ts
@@ -11,6 +11,7 @@ import {ContactPerson} from '../models/contactperson';
import {Category} from '../models/category';
import {Manufacturer} from '../models/manufacturer';
import {CrawlingStatus} from '../models/crawlingstatus';
+import {log} from 'util';
@Injectable({
providedIn: 'root'
@@ -242,7 +243,11 @@ export class ApiService {
*/
addNewPrice(vendorId: number, productId: number, price: number): Observable
{
try {
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
return this.http.post((this.apiUrl + '/prices'), JSON.stringify({
+ session_id: sessionInfo.session_id,
+ session_key: sessionInfo.session_key,
vendor_id: vendorId,
product_id: productId,
price_in_cents: price
@@ -277,7 +282,13 @@ export class ApiService {
*/
getManagedVendors(): Observable {
try {
- return this.http.get((this.apiUrl + '/vendors/managed'));
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ let params = new HttpParams();
+ params = params.append('session_id', sessionInfo.session_id);
+ params = params.append('session_key', sessionInfo.session_key);
+
+ return this.http.get((this.apiUrl + '/vendors/managed'), {params});
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -317,10 +328,14 @@ export class ApiService {
*/
deactivateSingleVendorListing(vendorId: number, productId: number): Observable {
try {
- return this.http.put((this.apiUrl + '/vendors/manage/deactivatelisting'), JSON.stringify({
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ return this.http.put((this.apiUrl + '/vendors/manage/deactivatelisting'), {
+ session_id: sessionInfo.session_id,
+ session_key: sessionInfo.session_key,
vendor_id: vendorId,
product_id: productId
- }));
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -333,7 +348,12 @@ export class ApiService {
*/
deactivateVendor(vendorId: number): Observable {
try {
- return this.http.put((this.apiUrl + '/vendors/manage/shop/deactivate/' + vendorId), JSON.stringify({}));
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ return this.http.put((this.apiUrl + '/vendors/manage/shop/deactivate/' + vendorId), {
+ session_id: sessionInfo.session_id,
+ session_key: sessionInfo.session_key,
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -346,7 +366,12 @@ export class ApiService {
*/
activateVendor(vendorId: number): Observable {
try {
- return this.http.put((this.apiUrl + '/vendors/manage/shop/activate/' + vendorId), JSON.stringify({}));
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ return this.http.put((this.apiUrl + '/vendors/manage/shop/activate/' + vendorId), {
+ session_id: sessionInfo.session_id,
+ session_key: sessionInfo.session_key,
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -366,7 +391,13 @@ export class ApiService {
*/
getPriceAlarms(): Observable {
try {
- return this.http.get((this.apiUrl + '/pricealarms'));
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ let params = new HttpParams();
+ params = params.append('session_id', sessionInfo.session_id);
+ params = params.append('session_key', sessionInfo.session_key);
+
+ return this.http.get((this.apiUrl + '/pricealarms'), {params});
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -380,10 +411,14 @@ export class ApiService {
*/
createPriceAlarms(productId: number, definedPrice: number): Observable {
try {
- return this.http.post((this.apiUrl + '/pricealarms'), JSON.stringify({
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ return this.http.post((this.apiUrl + '/pricealarms'), {
+ session_id: sessionInfo.session_id,
+ session_key: sessionInfo.session_key,
product_id: productId,
defined_price: definedPrice
- }));
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -397,10 +432,14 @@ export class ApiService {
*/
updatePriceAlarms(alarmId: number, definedPrice: number): Observable {
try {
- return this.http.put((this.apiUrl + '/pricealarms'), JSON.stringify({
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ return this.http.put((this.apiUrl + '/pricealarms'), {
+ session_id: sessionInfo.session_id,
+ session_key: sessionInfo.session_key,
alarm_id: alarmId,
defined_price: definedPrice
- }));
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -423,11 +462,11 @@ export class ApiService {
*/
registerUser(username: string, password: string, email: string): Observable {
try {
- return this.http.post((this.apiUrl + '/users/register'), JSON.stringify({
+ return this.http.post((this.apiUrl + '/users/register'), {
username,
password,
email
- }));
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -441,10 +480,10 @@ export class ApiService {
*/
loginUser(username: string, password: string): Observable {
try {
- return this.http.post((this.apiUrl + '/users/login'), JSON.stringify({
+ return this.http.post((this.apiUrl + '/users/login'), {
username,
password
- }));
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -457,12 +496,36 @@ export class ApiService {
*/
getUserInfo(): Observable {
try {
- return this.http.post((this.apiUrl + '/users/checkSessionValid'), {});
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+ return this.http.post((this.apiUrl + '/users/checkSessionValid'), {
+ session_id: sessionInfo.session_id,
+ session_key: sessionInfo.session_key
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
}
+ /**
+ * Gets session id and session key from local storage
+ * @return any {session_id: '', session_key: ''}
+ */
+ getSessionInfoFromLocalStorage(): any {
+ const session_id = localStorage.getItem('session_id') ?? '';
+ const session_key = localStorage.getItem('session_key') ?? '';
+ return {session_id, session_key};
+ }
+
+ /**
+ * Extracts and saves the session data from an api response
+ * @param data The api response
+ */
+ saveSessionInfoToLocalStorage(data: any): boolean {
+ localStorage.setItem('session_id', data.session_id);
+ localStorage.setItem('session_key', data.session_key);
+ return true;
+ }
+
/* ______ _ __ __
/ ____/___ __ ______ _____(_) /____ _____/ /_ ____ ____ _____
/ /_ / __ `/ | / / __ \/ ___/ / __/ _ \ / ___/ __ \/ __ \/ __ \/ ___/
@@ -477,7 +540,13 @@ export class ApiService {
*/
getFavoriteShops(): Observable {
try {
- return this.http.get((this.apiUrl + '/favoriteshops'));
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ let params = new HttpParams();
+ params = params.append('session_id', sessionInfo.session_id);
+ params = params.append('session_key', sessionInfo.session_key);
+
+ return this.http.get((this.apiUrl + '/favoriteshops'), {params});
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -490,9 +559,13 @@ export class ApiService {
*/
addFavoriteShop(vendorId: number): Observable {
try {
- return this.http.post((this.apiUrl + '/favoriteshops'), JSON.stringify({
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ return this.http.post((this.apiUrl + '/favoriteshops'), {
+ session_id: sessionInfo.session_id,
+ session_key: sessionInfo.session_key,
vendor_id: vendorId
- }));
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -505,7 +578,13 @@ export class ApiService {
*/
deleteFavoriteShop(vendorId: number): Observable {
try {
- return this.http.delete((this.apiUrl + '/favoriteshops/' + vendorId));
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ let params = new HttpParams();
+ params = params.append('session_id', sessionInfo.session_id);
+ params = params.append('session_key', sessionInfo.session_key);
+
+ return this.http.delete((this.apiUrl + '/favoriteshops/' + vendorId), {params});
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -569,14 +648,18 @@ export class ApiService {
*/
addContactPerson(vendorId: number, firstName: string, lastName: string, gender: string, email: string, phone: string): Observable {
try {
- return this.http.post((this.apiUrl + '/contactpersons'), JSON.stringify({
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ return this.http.post((this.apiUrl + '/contactpersons'), {
+ session_id: sessionInfo.session_id,
+ session_key: sessionInfo.session_key,
vendor_id: vendorId,
first_name: firstName,
last_name: lastName,
gender,
email,
phone
- }));
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -595,14 +678,18 @@ export class ApiService {
*/
updateContactPerson(contactId: number, vendorId: number, firstName: string, lastName: string, gender: string, email: string, phone: string): Observable {
try {
- return this.http.put((this.apiUrl + '/contactpersons/' + contactId), JSON.stringify({
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ return this.http.put((this.apiUrl + '/contactpersons/' + contactId), {
+ session_id: sessionInfo.session_id,
+ session_key: sessionInfo.session_key,
vendor_id: vendorId,
first_name: firstName,
last_name: lastName,
gender,
email,
phone
- }));
+ });
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}
@@ -717,7 +804,13 @@ export class ApiService {
*/
getCurrentCrawlingStatus(): Observable {
try {
- return this.http.get((this.apiUrl + '/crawlingstatus'));
+ const sessionInfo = this.getSessionInfoFromLocalStorage();
+
+ let params = new HttpParams();
+ params = params.append('session_id', sessionInfo.session_id);
+ params = params.append('session_key', sessionInfo.session_key);
+
+ return this.http.get((this.apiUrl + '/crawlingstatus'), {params});
} catch (exception) {
process.stderr.write(`ERROR received from ${this.apiUrl}: ${exception}\n`);
}