added CryptoJS
This commit is contained in:
parent
0271ec8654
commit
ab0ba5225e
6 changed files with 39 additions and 9 deletions
13
package-lock.json
generated
13
package-lock.json
generated
|
|
@ -19,6 +19,7 @@
|
||||||
"@angular/router": "^17.2.0",
|
"@angular/router": "^17.2.0",
|
||||||
"@ngx-translate/core": "^15.0.0",
|
"@ngx-translate/core": "^15.0.0",
|
||||||
"@ngx-translate/http-loader": "^8.0.0",
|
"@ngx-translate/http-loader": "^8.0.0",
|
||||||
|
"crypto-js": "^4.2.0",
|
||||||
"ngx-color-picker": "^16.0.0",
|
"ngx-color-picker": "^16.0.0",
|
||||||
"rxjs": "~7.8.0",
|
"rxjs": "~7.8.0",
|
||||||
"tslib": "^2.3.0",
|
"tslib": "^2.3.0",
|
||||||
|
|
@ -28,6 +29,7 @@
|
||||||
"@angular-devkit/build-angular": "^17.2.1",
|
"@angular-devkit/build-angular": "^17.2.1",
|
||||||
"@angular/cli": "^17.2.1",
|
"@angular/cli": "^17.2.1",
|
||||||
"@angular/compiler-cli": "^17.2.0",
|
"@angular/compiler-cli": "^17.2.0",
|
||||||
|
"@types/crypto-js": "^4.2.2",
|
||||||
"@types/jasmine": "~5.1.0",
|
"@types/jasmine": "~5.1.0",
|
||||||
"jasmine-core": "~5.1.0",
|
"jasmine-core": "~5.1.0",
|
||||||
"karma": "~6.4.0",
|
"karma": "~6.4.0",
|
||||||
|
|
@ -4354,6 +4356,12 @@
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/crypto-js": {
|
||||||
|
"version": "4.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz",
|
||||||
|
"integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/@types/eslint": {
|
"node_modules/@types/eslint": {
|
||||||
"version": "8.56.6",
|
"version": "8.56.6",
|
||||||
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz",
|
||||||
|
|
@ -6076,6 +6084,11 @@
|
||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/crypto-js": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
||||||
|
},
|
||||||
"node_modules/css-loader": {
|
"node_modules/css-loader": {
|
||||||
"version": "6.10.0",
|
"version": "6.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz",
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
"@angular/router": "^17.2.0",
|
"@angular/router": "^17.2.0",
|
||||||
"@ngx-translate/core": "^15.0.0",
|
"@ngx-translate/core": "^15.0.0",
|
||||||
"@ngx-translate/http-loader": "^8.0.0",
|
"@ngx-translate/http-loader": "^8.0.0",
|
||||||
|
"crypto-js": "^4.2.0",
|
||||||
"ngx-color-picker": "^16.0.0",
|
"ngx-color-picker": "^16.0.0",
|
||||||
"rxjs": "~7.8.0",
|
"rxjs": "~7.8.0",
|
||||||
"tslib": "^2.3.0",
|
"tslib": "^2.3.0",
|
||||||
|
|
@ -30,6 +31,7 @@
|
||||||
"@angular-devkit/build-angular": "^17.2.1",
|
"@angular-devkit/build-angular": "^17.2.1",
|
||||||
"@angular/cli": "^17.2.1",
|
"@angular/cli": "^17.2.1",
|
||||||
"@angular/compiler-cli": "^17.2.0",
|
"@angular/compiler-cli": "^17.2.0",
|
||||||
|
"@types/crypto-js": "^4.2.2",
|
||||||
"@types/jasmine": "~5.1.0",
|
"@types/jasmine": "~5.1.0",
|
||||||
"jasmine-core": "~5.1.0",
|
"jasmine-core": "~5.1.0",
|
||||||
"karma": "~6.4.0",
|
"karma": "~6.4.0",
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
@if (this.isLoggedIn === undefined) {
|
@if (this.isLoggedIn === null) {
|
||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
<app-overlay></app-overlay>
|
<app-overlay></app-overlay>
|
||||||
} @else {
|
} @else {
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ export class AppComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
if (this.isLoggedIn === undefined) {
|
if (this.isLoggedIn === null) {
|
||||||
this.checkPwResetRoute();
|
this.checkPwResetRoute();
|
||||||
} else {
|
} else {
|
||||||
this.router.navigate(['/summary']);
|
this.router.navigate(['/summary']);
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,15 @@ import {
|
||||||
} from '@angular/fire/firestore';
|
} from '@angular/fire/firestore';
|
||||||
import { Task } from '../interfaces/task.interface';
|
import { Task } from '../interfaces/task.interface';
|
||||||
import { User } from '../interfaces/user.interface';
|
import { User } from '../interfaces/user.interface';
|
||||||
|
import * as CryptoJS from 'crypto-js';
|
||||||
|
import { CryptoJSSecretKey } from './../environments/config';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
export class FirebaseService implements OnDestroy {
|
export class FirebaseService implements OnDestroy {
|
||||||
firestore: Firestore = inject(Firestore);
|
firestore: Firestore = inject(Firestore);
|
||||||
|
private secretKey: string = CryptoJSSecretKey.secretKey;
|
||||||
|
|
||||||
allTasks: Task[] = [];
|
allTasks: Task[] = [];
|
||||||
filteredTasks: Task[] = [];
|
filteredTasks: Task[] = [];
|
||||||
|
|
@ -130,10 +133,13 @@ export class FirebaseService implements OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
getCurrentUserId() {
|
getCurrentUserId() {
|
||||||
let currentUser = localStorage.getItem('currentUserJOIN');
|
const encryptedValue = localStorage.getItem('currentUserJOIN');
|
||||||
if (currentUser !== null) {
|
if (encryptedValue) {
|
||||||
return JSON.parse(currentUser);
|
const bytes = CryptoJS.AES.decrypt(encryptedValue, this.secretKey);
|
||||||
|
const decryptedValue = bytes.toString(CryptoJS.enc.Utf8);
|
||||||
|
return JSON.parse(decryptedValue);
|
||||||
}
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
getUserDetails(userId: string, query: keyof User) {
|
getUserDetails(userId: string, query: keyof User) {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,9 @@ import {
|
||||||
import { SharedService } from './shared.service';
|
import { SharedService } from './shared.service';
|
||||||
import { User } from '../interfaces/user.interface';
|
import { User } from '../interfaces/user.interface';
|
||||||
import { Router } from '@angular/router';
|
import { Router } from '@angular/router';
|
||||||
|
import * as CryptoJS from 'crypto-js';
|
||||||
|
import { CryptoJSSecretKey } from './../environments/config';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root',
|
providedIn: 'root',
|
||||||
})
|
})
|
||||||
|
|
@ -31,6 +34,8 @@ export class LoginService {
|
||||||
passwordIcon: string = './../../../assets/img/login/close-eye.svg';
|
passwordIcon: string = './../../../assets/img/login/close-eye.svg';
|
||||||
errorCode: string = '';
|
errorCode: string = '';
|
||||||
|
|
||||||
|
private secretKey: string = CryptoJSSecretKey.secretKey;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private firebaseService: FirebaseService,
|
private firebaseService: FirebaseService,
|
||||||
public sharedService: SharedService,
|
public sharedService: SharedService,
|
||||||
|
|
@ -43,7 +48,7 @@ export class LoginService {
|
||||||
const user = userCredential.user;
|
const user = userCredential.user;
|
||||||
const userData = this.firebaseService.getUserDataFromUid(user.uid);
|
const userData = this.firebaseService.getUserDataFromUid(user.uid);
|
||||||
if (userData.length > 0 && userData[0].id) {
|
if (userData.length > 0 && userData[0].id) {
|
||||||
this.getUserIdInLocalStorage(userData[0].id);
|
this.getUserIdInLocalStorage(this.secretKey, userData[0].id);
|
||||||
this.updateUserOnlineStatus(userData[0].id, true);
|
this.updateUserOnlineStatus(userData[0].id, true);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
@ -156,7 +161,7 @@ export class LoginService {
|
||||||
ifExistUser(user: string) {
|
ifExistUser(user: string) {
|
||||||
const userData = this.firebaseService.getUserDataFromUid(user);
|
const userData = this.firebaseService.getUserDataFromUid(user);
|
||||||
if (userData.length > 0 && userData[0].id) {
|
if (userData.length > 0 && userData[0].id) {
|
||||||
this.getUserIdInLocalStorage(userData[0].id);
|
this.getUserIdInLocalStorage(this.secretKey, userData[0].id);
|
||||||
this.updateUserOnlineStatus(userData[0].id, true);
|
this.updateUserOnlineStatus(userData[0].id, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -182,8 +187,12 @@ export class LoginService {
|
||||||
: './../../../assets/img/login/close-eye.svg';
|
: './../../../assets/img/login/close-eye.svg';
|
||||||
}
|
}
|
||||||
|
|
||||||
getUserIdInLocalStorage(userId: string) {
|
getUserIdInLocalStorage(key: string, userId: string): void {
|
||||||
localStorage.setItem('currentUserJOIN', JSON.stringify(userId));
|
const encryptedValue = CryptoJS.AES.encrypt(
|
||||||
|
JSON.stringify(userId),
|
||||||
|
this.secretKey
|
||||||
|
).toString();
|
||||||
|
localStorage.setItem('currentUserJOIN', encryptedValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
// LOGOUT
|
// LOGOUT
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue