From f01a3445f7ebdf1e65ae29b5e7b045a4306a1c86 Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Wed, 2 Jan 2019 18:01:36 +0100 Subject: [PATCH 1/3] - VerifiedEmail OK - Toolbar now save leftDrawerOpen state - Use LocalStorage to Autologin --- README.md | 3 + src/App.vue | 13 +++-- src/components/Header.vue | 10 +++- src/layouts/MainLayout.vue | 25 -------- src/layouts/drawer/drawer.vue | 9 ++- src/model/GlobalStore.ts | 1 + src/pages/dashboard/home.vue | 10 ---- src/store/Modules/GlobalStore.ts | 8 ++- src/store/Modules/UserStore.ts | 95 ++++++++++++++++++------------- src/views/login/signin/signin.vue | 1 + src/views/login/vreg/vreg.ts | 2 +- 11 files changed, 94 insertions(+), 83 deletions(-) delete mode 100644 src/layouts/MainLayout.vue delete mode 100644 src/pages/dashboard/home.vue diff --git a/README.md b/README.md index e417f82..c55fead 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,9 @@ Thanks to the Quasar Framework and TypeScript ! [![js-standard-style](https://cdn.rawgit.com/standard/standard/master/badge.svg)](https://github.com/standard/standard) +[![Build](https://img.shields.io/circleci/project/github/paoloar77/freeplanet/master.svg?style=for-the-badge)](https://circleci.com/gh/paoloar77/freeplanet/tree/master) +[![Coverage](https://img.shields.io/codecov/c/github/paoloar77/freeplanet/master.svg?style=for-the-badge)](https://codecov.io/gh/paoloar77/freeplanet/branch/master) + ## Features ⚡️ diff --git a/src/App.vue b/src/App.vue index d21866d..2a5c73a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -18,9 +18,9 @@ diff --git a/src/components/Header.vue b/src/components/Header.vue index b35c475..ce10265 100644 --- a/src/components/Header.vue +++ b/src/components/Header.vue @@ -59,6 +59,8 @@ import drawer from '../layouts/drawer/drawer.vue' import messagePopover from '../layouts/toolbar/messagePopover/messagePopover.vue' + import { GlobalStore } from '@modules' + @Component({ components: { drawer, @@ -76,7 +78,13 @@ { label: 'Spanish', icon: 'fa-flag-es', value: 'es' }, { label: 'Italian', icon: 'fa-facebook', value: 'it' } ] - public leftDrawerOpen = false; + get leftDrawerOpen () { + return GlobalStore.state.leftDrawerOpen + } + set leftDrawerOpen (value) { + GlobalStore.state.leftDrawerOpen = value + localStorage.setItem('leftDrawerOpen', value.toString()) + } get lang() { return this.$q.i18n.lang diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue deleted file mode 100644 index 1ed9632..0000000 --- a/src/layouts/MainLayout.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/src/layouts/drawer/drawer.vue b/src/layouts/drawer/drawer.vue index fcfb5af..0c4ef6e 100644 --- a/src/layouts/drawer/drawer.vue +++ b/src/layouts/drawer/drawer.vue @@ -7,8 +7,8 @@ {{ Username }}
{{$t('reg.verificato')}} - {{$t('reg.non_verificato')}} - {{ Email }} + {{$t('reg.non_verificato')}} +
@@ -92,6 +92,11 @@ } + diff --git a/src/components/categories/category/category.scss b/src/components/categories/category/category.scss new file mode 100644 index 0000000..6580a26 --- /dev/null +++ b/src/components/categories/category/category.scss @@ -0,0 +1,3 @@ +.mycard { + visibility: hidden; +} diff --git a/src/components/categories/category/category.ts b/src/components/categories/category/category.ts new file mode 100644 index 0000000..74a0a34 --- /dev/null +++ b/src/components/categories/category/category.ts @@ -0,0 +1,62 @@ +import Vue from 'vue' +import { Component } from 'vue-property-decorator' +import { GlobalStore } from '@store' + +import VueIdb from 'vue-idb' + +Vue.use(VueIdb) + +require('./category.scss') + +@Component({}) +export default class Category extends Vue { + idb = null + category: string = '' + $t: any + + created() { + this.createdb() + + this.caricaCat() + } + + createdb() { + // Inserisci la Categoria nel DB + this.idb = new VueIdb({ + version: 1, + database: 'test', + schemas: [ + { categories: '++id, sub_categ_id, descr_it' } + ] + }) + + } + + + caricaCat() { + let mythis = this + this.idb.open().then(function () { + + return mythis.idb.categories + .toArray() + + }).then(function () { + + console.log('FINE LOAD') + }) + } + + insertCategory(): any { + let mythis = this + + this.idb.open().then(function () { + console.log('Inserisci Cat: ', mythis.category) + return mythis.idb.categories.add({ descr_it: mythis.category }) + + }).then(function () { + + console.log('FINE') + }) + } + +} diff --git a/src/components/categories/category/category.vue b/src/components/categories/category/category.vue new file mode 100644 index 0000000..3009cc3 --- /dev/null +++ b/src/components/categories/category/category.vue @@ -0,0 +1,16 @@ + + diff --git a/src/css/app.styl b/src/css/app.styl index e3e5a1e..167e673 100644 --- a/src/css/app.styl +++ b/src/css/app.styl @@ -1 +1,4 @@ // app global css +/*------------------------------------------------------------------ +[Table of contents] +# overwrite some style of stylus diff --git a/src/i18n.js b/src/i18n.js index c7fb400..a26446d 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -14,6 +14,7 @@ const messages = { SignIn: 'Login', vreg: 'Verifica Reg', Test: 'Test', + Category: 'Categorie', }, components: { authentication:{ @@ -98,6 +99,7 @@ const messages = { SignIn: 'SignIn', vreg: 'Verify Reg', Test: 'Test', + Category: 'Category', }, components: { authentication:{ diff --git a/src/index.template.html b/src/index.template.html index 29168b8..a31bd4b 100644 --- a/src/index.template.html +++ b/src/index.template.html @@ -8,7 +8,7 @@ + content="user-scalable=no, initial-scale=1, minimum-scale=1, width=device-width<% if (htmlWebpackPlugin.options.ctx.mode.cordova) { %>, viewport-fit=cover<% } %>"> @@ -16,6 +16,8 @@ + + diff --git a/src/layouts/drawer/drawer.vue b/src/layouts/drawer/drawer.vue index 0c4ef6e..4845368 100644 --- a/src/layouts/drawer/drawer.vue +++ b/src/layouts/drawer/drawer.vue @@ -19,6 +19,10 @@ + +
Powered by Perseo
@@ -31,8 +35,8 @@ import Vue from 'vue' import { Component, Watch, Prop } from 'vue-property-decorator' - import {Store} from 'vuex' - import { UserStore } from '@modules'; + import { Store } from 'vuex' + import { UserStore } from '@modules' import { GlobalStore } from '@modules' @@ -43,9 +47,9 @@ }) export default class Drawer extends Vue { public $q - $t: any; + $t: any - created () { + created() { console.log('Drawer created...') } @@ -54,34 +58,36 @@ links = { Dashboard: { routes: [ - {route: '/', faIcon: 'fa fa-home', materialIcon: 'home', name: 'pages.home'}, - {route: '/signup', faIcon: 'fa fa-signup', materialIcon: 'login', name: 'pages.SignUp'}, - {route: '/signin', faIcon: 'fa fa-login', materialIcon: 'login', name: 'pages.SignIn'}, + { route: '/', faIcon: 'fa fa-home', materialIcon: 'home', name: 'pages.home' }, + { route: '/category', faIcon: 'fa fa-list-alt', materialIcon: 'category', name: 'pages.Category' }, + { route: '/signup', faIcon: 'fa fa-registered', materialIcon: 'home', name: 'pages.SignUp' }, + { route: '/signin', faIcon: 'fa fa-anchor', materialIcon: 'home', name: 'pages.SignIn' }, /* {route: '/vreg?idlink=aaa', faIcon: 'fa fa-login', materialIcon: 'login', name: 'pages.vreg'},*/ - ], + ], show: true }, Forms: { routes: [ - {route: '/prec', faIcon: 'fa fa-search', materialIcon: 'search', name: 'pages.Test'}, - ], + { route: '/prec', faIcon: 'fa fa-search', materialIcon: 'search', name: 'pages.Test' }, + ], show: false }, } - get MenuCollapse () { + get MenuCollapse() { return GlobalStore.state.menuCollapse // return true } - get Username () { + + get Username() { return UserStore.state.username } - get Verificato () { + get Verificato() { return UserStore.state.verifiedEmail } - get Email () { + get Email() { return UserStore.state.email } @@ -91,8 +97,8 @@ } } - diff --git a/src/layouts/drawer/menuOne.vue b/src/layouts/drawer/menuOne.vue index 9f5d6d9..08fd065 100644 --- a/src/layouts/drawer/menuOne.vue +++ b/src/layouts/drawer/menuOne.vue @@ -1,23 +1,24 @@ @@ -60,6 +61,11 @@ diff --git a/src/plugins/indexdb.js b/src/plugins/indexdb.js new file mode 100644 index 0000000..9f322d5 --- /dev/null +++ b/src/plugins/indexdb.js @@ -0,0 +1,5 @@ +import VueIdb from 'vue-idb' + +export default ({ Vue }) => { + Vue.use(VueIdb) +} diff --git a/src/router/route-config.ts b/src/router/route-config.ts index 18d9383..2c91947 100644 --- a/src/router/route-config.ts +++ b/src/router/route-config.ts @@ -28,6 +28,11 @@ export const RouteConfig: VueRouteConfig[] = [ path: '/vreg', component: () => import('@/views/login/vreg/vreg.vue'), meta: { name: 'Verify Reg' } + }, + { + path: '/category', + component: () => import('@/components/categories/category/category.vue'), + meta: { name: 'Categories' } } /* { diff --git a/src/store/Modules/UserStore.ts b/src/store/Modules/UserStore.ts index 2d323c2..a57d7a1 100644 --- a/src/store/Modules/UserStore.ts +++ b/src/store/Modules/UserStore.ts @@ -168,7 +168,7 @@ namespace Actions { }) .then((body) => { Mutations.mutations.UpdatePwd({ idToken: x_auth_token }) - localStorage.setItem('token', x_auth_token) + localStorage.setItem(rescodes.localStorage.token, x_auth_token) return { code: body.code, msg: body.msg } }).catch((err) => { @@ -247,7 +247,7 @@ namespace Actions { // mutations.setServerCode(myres); if (body.code === serv_constants.RIS_CODE_EMAIL_VERIFIED) { console.log('VERIFICATO !!') - localStorage.setItem('verificato', '1') + localStorage.setItem(rescodes.localStorage.verifiedEmail, '1') } else { console.log('Risultato di vreg: ', body.code) } @@ -325,11 +325,11 @@ namespace Actions { const now = new Date() // const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000); const expirationDate = new Date(now.getTime() * 1000) - localStorage.setItem('username', username) - localStorage.setItem('token', x_auth_token) - localStorage.setItem('userId', iduser) - localStorage.setItem('expirationDate', expirationDate.toString()) - localStorage.setItem('verificato', '0') + localStorage.setItem(rescodes.localStorage.username, username) + localStorage.setItem(rescodes.localStorage.token, x_auth_token) + localStorage.setItem(rescodes.localStorage.userId, iduser) + localStorage.setItem(rescodes.localStorage.expirationDate, expirationDate.toString()) + localStorage.setItem(rescodes.localStorage.verifiedEmail, '0') // dispatch('storeUser', authData); // dispatch('setLogoutTimer', myres.data.expiresIn); @@ -424,13 +424,12 @@ namespace Actions { const now = new Date() // const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000); const expirationDate = new Date(now.getTime() * 1000) - localStorage.setItem('username', username) - localStorage.setItem('token', x_auth_token) - localStorage.setItem('userId', iduser) - localStorage.setItem('expirationDate', expirationDate.toString()) - localStorage.setItem('isLoggedin', String(true)) - localStorage.setItem('verificato', Number(verifiedEmail).toString()) - + localStorage.setItem(rescodes.localStorage.username, username) + localStorage.setItem(rescodes.localStorage.token, x_auth_token) + localStorage.setItem(rescodes.localStorage.userId, iduser) + localStorage.setItem(rescodes.localStorage.expirationDate, expirationDate.toString()) + localStorage.setItem(rescodes.localStorage.isLogged, String(true)) + localStorage.setItem(rescodes.localStorage.verifiedEmail, Number(verifiedEmail).toString()) // dispatch('storeUser', authData); // dispatch('setLogoutTimer', myres.data.expiresIn); @@ -479,19 +478,19 @@ namespace Actions { Mutations.mutations.clearAuthData() }) - localStorage.removeItem('expirationDate') - localStorage.removeItem('token') - localStorage.removeItem('userId') - localStorage.removeItem('username') - localStorage.removeItem('isLoggedin') - localStorage.removeItem('verifiedEmail') + localStorage.removeItem(rescodes.localStorage.expirationDate) + localStorage.removeItem(rescodes.localStorage.token) + localStorage.removeItem(rescodes.localStorage.userId) + localStorage.removeItem(rescodes.localStorage.username) + localStorage.removeItem(rescodes.localStorage.isLogged) + // localStorage.removeItem(rescodes.localStorage.leftDrawerOpen) + localStorage.removeItem(rescodes.localStorage.verifiedEmail) router.push('/signin') } function setGlobal() { - GlobalStore.mutations.setleftDrawerOpen(localStorage.getItem('leftDrawerOpen') === 'true') - + GlobalStore.mutations.setleftDrawerOpen(localStorage.getItem(rescodes.localStorage.leftDrawerOpen) === 'true') } async function autologin (context) { @@ -504,19 +503,19 @@ namespace Actions { UserStore.mutations.setlang(lang) } - const token = localStorage.getItem('token') + const token = localStorage.getItem(rescodes.localStorage.token) if (!token) { return false } - const expirationDateStr = localStorage.getItem('expirationDate') + const expirationDateStr = localStorage.getItem(rescodes.localStorage.expirationDate) let expirationDate = new Date(String(expirationDateStr)) const now = new Date() if (now >= expirationDate) { return false } - const userId = Number(localStorage.getItem('userId')) - const username = String(localStorage.getItem('username')) - const verifiedEmail = localStorage.getItem('verificato') === '1' + const userId = Number(localStorage.getItem(rescodes.localStorage.userId)) + const username = String(localStorage.getItem(rescodes.localStorage.username)) + const verifiedEmail = localStorage.getItem(rescodes.localStorage.verifiedEmail) === '1' setGlobal() diff --git a/src/store/Modules/rescodes.ts b/src/store/Modules/rescodes.ts index 930ca9b..8b0afe2 100644 --- a/src/store/Modules/rescodes.ts +++ b/src/store/Modules/rescodes.ts @@ -3,5 +3,15 @@ export const rescodes = { OK: 20, ERR_GENERICO: -1, DUPLICATE_EMAIL_ID: 11000, - DUPLICATE_USERNAME_ID: 11100 + DUPLICATE_USERNAME_ID: 11100, + + localStorage: { + verifiedEmail: 'vf', + isLogged: 'ilog', + expirationDate: 'expdate', + leftDrawerOpen: 'ldo', + userId: 'uid', + token: 'tk', + username: 'uname' + } } diff --git a/src/views/form/simpleForm/simpleForm.vue b/src/views/form/simpleForm/simpleForm.vue index 438e412..72665e6 100644 --- a/src/views/form/simpleForm/simpleForm.vue +++ b/src/views/form/simpleForm/simpleForm.vue @@ -85,7 +85,7 @@ } } -