From f6f61a11ca28a6354cc6e6848293560363873d83 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Mon, 10 Jul 2023 12:32:01 +0100 Subject: [PATCH] new session service --- .gitignore | 6 ++- src/app/models/beast-orm-function.ts | 56 +++++++++++++++++++++ src/app/models/beast-orm.ts | 7 +-- src/app/models/envarioment.ts | 1 + src/app/pages/login/login.page.ts | 7 ++- src/app/services/auth.service.ts | 10 ++-- src/app/services/chat/room.service.ts | 4 +- src/app/services/processes.service.ts | 6 ++- src/app/store/documentManagement.ts | 70 +++++++++++---------------- src/environments/suport/dev.ts | 2 + src/environments/suport/doneIt.ts | 2 + src/environments/suport/oapr.ts | 4 +- version/git-version.ts | 12 ++--- 13 files changed, 116 insertions(+), 71 deletions(-) create mode 100644 src/app/models/beast-orm-function.ts diff --git a/.gitignore b/.gitignore index e8ea8cb22..275cf91ad 100644 --- a/.gitignore +++ b/.gitignore @@ -77,7 +77,7 @@ _www/ www2020 android copy/ report.* -src/plugin/src/ +src/plugin/ _node_modules/ migrat/ @@ -88,4 +88,6 @@ src/app/models/beast-orm-pro.ts src/app/pipes/process.service.spec.ts -src/app/pipes/process.service.ts \ No newline at end of file +src/app/pipes/process.service.ts + +/.angular \ No newline at end of file diff --git a/src/app/models/beast-orm-function.ts b/src/app/models/beast-orm-function.ts new file mode 100644 index 000000000..d50e4fddd --- /dev/null +++ b/src/app/models/beast-orm-function.ts @@ -0,0 +1,56 @@ +import { AES, SHA1, enc } from "crypto-js"; +import { environment } from 'src/environments/environment' + + +function prefix() { + return environment.version.lastCommitNumber + environment.id+"-"; +} + +export function GET({key, localStorage, instance}) { + if(environment.storageProduction) { + + try { + const newKey = prefix() + SHA1(key).toString() + const cipherText = localStorage.getItem(newKey) + const bytes = AES.decrypt(cipherText, newKey) + var decryptedData = bytes.toString(enc.Utf8); + const restoredData = JSON.parse(decryptedData) + + Object.assign(instance, restoredData); + + return restoredData + + } catch(error) { + console.log(error) + return {} + } + + } else { + return JSON.parse(localStorage.getItem(prefix() + key)) + } + +} + +export function SAVE({key, localStorage, instance, dataToSave}) { + if(environment.storageProduction) { + const newKey = prefix() + SHA1(key).toString() + const stringifyData = JSON.stringify(dataToSave) + + const cipherText = AES.encrypt(stringifyData, newKey).toString(); + + localStorage.setItem(newKey, cipherText) + + } else { + localStorage.setItem(prefix() + key, dataToSave) + } +} + +export function DELETE({key, localStorage, instance}) { + if(environment.storageProduction) { + const newKey = prefix() + SHA1(key).toString() + localStorage.removeItem(newKey) + + } else { + localStorage.removeItem(prefix() + key) + } +} \ No newline at end of file diff --git a/src/app/models/beast-orm.ts b/src/app/models/beast-orm.ts index d9cec8e66..cf1d30fb5 100644 --- a/src/app/models/beast-orm.ts +++ b/src/app/models/beast-orm.ts @@ -1,5 +1,6 @@ -import { models } from 'beast-orm' +//import { models } from 'beast-orm' import { environment } from 'src/environments/environment' +import { models } from 'src/plugin/src' const { ArrayField, JsonField} = models.indexedDB.fields export class MessageModel extends models.Model { @@ -80,9 +81,6 @@ models.register({ models: [PublicationModel, ActionModel] }) - - - export class WebtrixUserModel extends models.Model { FullName = models.CharField() Role = models.CharField() @@ -102,4 +100,3 @@ models.register({ version: 14, models: [PublicationModel, ActionModel] }) - diff --git a/src/app/models/envarioment.ts b/src/app/models/envarioment.ts index 889d32a02..760187d8b 100644 --- a/src/app/models/envarioment.ts +++ b/src/app/models/envarioment.ts @@ -20,6 +20,7 @@ export interface Environment { PR: string VP: string dispatchPR: string + storageProduction: boolean } diff --git a/src/app/pages/login/login.page.ts b/src/app/pages/login/login.page.ts index ff446513e..26cfcf967 100644 --- a/src/app/pages/login/login.page.ts +++ b/src/app/pages/login/login.page.ts @@ -19,7 +19,7 @@ import { Platform } from '@ionic/angular'; import { FirstEnterService } from '../../services/first-enter.service'; import { Storage } from '@ionic/storage'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; -import { DocumentManagementStore } from 'src/app/store/documentManagement'; +import { CPSession } from 'src/app/store/documentManagement'; @Component({ selector: 'app-login', templateUrl: './login.page.html', @@ -39,7 +39,6 @@ export class LoginPage implements OnInit { sessionStore = SessionStore; showPassword = false; passwordIcon = "eye"; - DocumentManagementStore = DocumentManagementStore constructor( private notificatinsservice: NotificationsService, @@ -119,7 +118,7 @@ export class LoginPage implements OnInit { const loader = this.toastService.loading() let attempt = await this.authService.login(this.userattempt, {saveSession: false}) - await this.authService.loginContenteProduction(this.userattempt, {saveSession: false}) + await this.authService.loginContenteProduction(this.userattempt, {saveSession: true}) loader.remove() @@ -154,7 +153,7 @@ export class LoginPage implements OnInit { window.localStorage.clear(); await MessageModel.deleteAll(); await DeleteMessageModel.deleteAll(); - this.DocumentManagementStore.clear(); + CPSession.clear(); this.storage.clear(); await this.authService.SetSession(attempt, this.userattempt); diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index e5f98d630..b456e4b9b 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -19,7 +19,7 @@ import { InitialsService } from './functions/initials.service'; import { PermissionService } from './permission.service'; import { ChatSystemService } from 'src/app/services/chat/chat-system.service'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; -import { DocumentManagementStore } from '../store/documentManagement'; +import { CPSession } from '../store/documentManagement'; @Injectable({ providedIn: 'root' }) @@ -32,8 +32,6 @@ export class AuthService { opts:any; tabIsActive = true - - DocumentManagementStore = DocumentManagementStore constructor( private http: HttpClient, @@ -78,9 +76,6 @@ export class AuthService { async login(user: UserForm, {saveSession = true}): Promise { user.BasicAuthKey = 'Basic ' + btoa(user.username + ':' + this.aesencrypt.encrypt(user.password,user.username )); - // Basic peter.maquiran@equilibrium.co.ao:senha123456 - // console.log(user.BasicAuthKey) - this.headers = this.headers.set('Authorization', user.BasicAuthKey); this.opts = { headers: this.headers, @@ -119,7 +114,8 @@ export class AuthService { if(saveSession) { /* this.SetSession(response, user) */ - this.DocumentManagementStore.setData(response) + console.log('teste', response); + CPSession.save(response) } } catch (error) { diff --git a/src/app/services/chat/room.service.ts b/src/app/services/chat/room.service.ts index c5bc66032..7398111a8 100644 --- a/src/app/services/chat/room.service.ts +++ b/src/app/services/chat/room.service.ts @@ -882,13 +882,13 @@ export class RoomService { private async findMessageInDBByData({localReference, _id}) { - const a = await MessageModel.filter({localReference: localReference}) + const a = await MessageModel.filter({localReference: localReference}).execute() if(a.length >= 1) { return true } - const c = await MessageModel.filter({_id: _id}) + const c = await MessageModel.filter({_id: _id}).execute() if(c.length >= 1) { return true diff --git a/src/app/services/processes.service.ts b/src/app/services/processes.service.ts index 97e1c59aa..58a770fe1 100644 --- a/src/app/services/processes.service.ts +++ b/src/app/services/processes.service.ts @@ -11,6 +11,7 @@ import { fullTaskList } from '../models/dailyworktask.model'; import { ChangeProfileService } from './change-profile.service'; import { SessionStore } from '../store/session.service'; import { StorageService } from './storage.service'; +import { CPSession } from '../store/documentManagement'; @Injectable({ providedIn: 'root' }) @@ -42,14 +43,15 @@ export class ProcessesService { setHeader() { + + console.log('CPSession.AuthorizationJwt', CPSession.AuthorizationJwt); this.headers = new HttpHeaders(); this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); this.headers2 = new HttpHeaders(); - this.headers2 = this.headers2.set('Authorization',"bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiIyNjIiLCJ1bmlxdWVfbmFtZSI6IkdpbHNvbiBNYW51ZWwiLCJlbWFpbCI6ImdpbHNvbi5tYW51ZWxAZ2FiaW5ldGVkaWdpdGFsLmxvY2FsIiwicm9sZSI6IlNlY3JldMOhcmlvIEdlcmFsIiwiZ3JvdXBzaWQiOiJHYWJpbmV0ZSBkZSBUZWNub2xvZ2lhcyBkZSBJbmZvcm1hw6fDo28iLCJvcmdhbmljZW50aXR5aWREIjoiMTA2IiwibmJmIjoxNjg4NTg0NTYzLCJleHAiOjE3MjAxMjA1NjMsImlhdCI6MTY4ODU4NDU2MywiaXNzIjoiOGIxMzBhN2YwLWM3YjctNDdzMjMtOWE4ZC1kNTlhMDE5YWY3NDkiLCJhdWQiOiJkMjh3dzE0NTMtM2M2OC00MWFkLThiNmMtYTUzNDUzODNlMGMyIn0.QDCrQsCH59GQMoudZTHyCMwwHYVwz1mZkLTzvzAwh64" + this.headers2 = this.headers2.set('Authorization',"bearer "+ CPSession.AuthorizationJwt); - ); } uploadFile(formData:any){ diff --git a/src/app/store/documentManagement.ts b/src/app/store/documentManagement.ts index 8148ab65b..3d42ec48a 100644 --- a/src/app/store/documentManagement.ts +++ b/src/app/store/documentManagement.ts @@ -1,45 +1,31 @@ -import { SHA1 } from 'crypto-js' -import { localstoreService } from './localstore.service' - -class _DocumentManagementStore { - - - session: { - UserId: number, - Email: string, - UserName: string - FullName: string - RoleID: number - RoleDescription: string - OrganicEntityID: number - OrganicEntityName: string - Status: string - Authorization: string - AuthorizationJwt: string - } - - - constructor() { - const restore = localstoreService.get(this.keyName, {}) - this.session = restore.session - } - - get keyName() { - return SHA1("documentManagement").toString() - } - - setData(data) { - this.session = data - localstoreService.set(this.keyName, { - session: this.session - }) - } - - clear() { - delete this.session - localstoreService.delete(this.keyName) - } +import { models } from 'src/plugin/src/' +import { DELETE, GET, SAVE } from '../models/beast-orm-function'; +const { rewriteSave, rewriteGet, rewriteDelete } = models.core.localStorage.rewrite +export class CPSession extends models.LocalStorage { + static UserId: number = models.preset() + static Email: string = models.preset() + static UserName: string = models.preset() + static FullName: string = models.preset() + static RoleID: number = models.preset() + static RoleDescription: string = models.preset() + static OrganicEntityID: number = models.preset() + static OrganicEntityName: string = models.preset() + static Status: string = models.preset() + static Authorization: string = models.preset() + static AuthorizationJwt: string = models.preset() } -export const DocumentManagementStore = new _DocumentManagementStore() +// content production +models.migrate({ + databaseName:'content-production', + type: 'localStorage', + version: 1, + models: [CPSession], +}) + + +rewriteGet.connect(GET, [CPSession]) +rewriteSave.connect(SAVE, [CPSession]) +rewriteDelete.connect(DELETE, [CPSession]) +CPSession.get() \ No newline at end of file diff --git a/src/environments/suport/dev.ts b/src/environments/suport/dev.ts index 1351d586b..d6061aec1 100644 --- a/src/environments/suport/dev.ts +++ b/src/environments/suport/dev.ts @@ -23,6 +23,7 @@ export const DevProd: Environment = { PR: 'Titular', VP: '', dispatchPR: 'Despachos Titular', + storageProduction: true }; @@ -48,4 +49,5 @@ export const DevDev: Environment = { PR: 'Titular', VP: '', dispatchPR: 'Despachos Titular', + storageProduction: false, }; \ No newline at end of file diff --git a/src/environments/suport/doneIt.ts b/src/environments/suport/doneIt.ts index ac25d7c56..88bf24fe9 100644 --- a/src/environments/suport/doneIt.ts +++ b/src/environments/suport/doneIt.ts @@ -23,6 +23,7 @@ export const doneITProd: Environment = { PR: 'Titular', VP: '', dispatchPR: 'Despachos Titular', + storageProduction: true }; export const doneITDev: Environment = { @@ -47,4 +48,5 @@ export const doneITDev: Environment = { PR: 'Titular', VP: '', dispatchPR: 'Despachos Titular', + storageProduction: false }; \ No newline at end of file diff --git a/src/environments/suport/oapr.ts b/src/environments/suport/oapr.ts index 470d3eb6b..e68f2dd63 100644 --- a/src/environments/suport/oapr.ts +++ b/src/environments/suport/oapr.ts @@ -23,7 +23,8 @@ export const oaprProd: Environment = { PR: 'PR', VP: '', dispatchPR: 'Despachos PresidĂȘnciais', - sentryUrl: 'https://9920cc36f1d740b987426ee8d80cf588@o4504340905525248.ingest.sentry.io/4504340946419712' + sentryUrl: 'https://9920cc36f1d740b987426ee8d80cf588@o4504340905525248.ingest.sentry.io/4504340946419712', + storageProduction: true }; export const oaprDev: Environment = { @@ -48,4 +49,5 @@ export const oaprDev: Environment = { VP: '', dispatchPR: 'Despachos PresidĂȘnciais', sentryUrl: 'https://9920cc36f1d740b987426ee8d80cf588@o4504340905525248.ingest.sentry.io/4504340946419712', + storageProduction: false }; \ No newline at end of file diff --git a/version/git-version.ts b/version/git-version.ts index 888cf850d..6c3eab63b 100644 --- a/version/git-version.ts +++ b/version/git-version.ts @@ -1,12 +1,12 @@ export let versionData = { - "shortSHA": "10eaf2964", - "SHA": "10eaf29645ac3edb6e68e136c35178b087aa321e", + "shortSHA": "9676bab7e", + "SHA": "9676bab7eb0427cf26a4970ce8bd7d96deaf504b", "branch": "feature/gabinete-search", "lastCommitAuthor": "'Peter Maquiran'", - "lastCommitTime": "'Thu Jul 6 13:17:36 2023 +0100'", - "lastCommitMessage": "change class", - "lastCommitNumber": "5039", + "lastCommitTime": "'Thu Jul 6 13:35:11 2023 +0100'", + "lastCommitMessage": "main data of refresh", + "lastCommitNumber": "5040", "change": "", - "changeStatus": "On branch feature/gabinete-search\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: src/app/store/documentManagement.ts", + "changeStatus": "On branch feature/gabinete-search\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: .gitignore\n\tnew file: src/app/models/beast-orm-function.ts\n\tmodified: src/app/models/beast-orm.ts\n\tmodified: src/app/models/envarioment.ts\n\tmodified: src/app/pages/login/login.page.ts\n\tmodified: src/app/services/auth.service.ts\n\tmodified: src/app/services/chat/room.service.ts\n\tmodified: src/app/services/processes.service.ts\n\tmodified: src/app/store/documentManagement.ts\n\tmodified: src/environments/suport/dev.ts\n\tmodified: src/environments/suport/doneIt.ts\n\tmodified: src/environments/suport/oapr.ts", "changeAuthor": "peter.maquiran" } \ No newline at end of file