- VerifiedEmail OK
- Toolbar now save leftDrawerOpen state - Use LocalStorage to Autologin
This commit is contained in:
@@ -34,6 +34,9 @@ Thanks to the Quasar Framework and TypeScript !
|
||||
|
||||
[](https://github.com/standard/standard)
|
||||
|
||||
[](https://circleci.com/gh/paoloar77/freeplanet/tree/master)
|
||||
[](https://codecov.io/gh/paoloar77/freeplanet/branch/master)
|
||||
|
||||
</div>
|
||||
|
||||
## Features ⚡️
|
||||
|
||||
13
src/App.vue
13
src/App.vue
@@ -18,9 +18,9 @@
|
||||
<script lang="ts">
|
||||
import Vue from "vue"
|
||||
import { Component } from 'vue-property-decorator'
|
||||
import { UserStore } from '@store'
|
||||
import { EventBus, RootState, storeBuilder, DebugMode } from '@store'
|
||||
import router from "./router"
|
||||
import { UserStore } from '@store'
|
||||
|
||||
import $ from "jquery"
|
||||
|
||||
@@ -37,16 +37,21 @@
|
||||
|
||||
created() {
|
||||
//this.title = 'My Vue and CosmosDB Heroes App'
|
||||
if (process.env.DEV){
|
||||
if (process.env.DEV) {
|
||||
console.info("SESSIONE IN SVILUPPO ! (DEV)")
|
||||
console.info(process.env)
|
||||
}
|
||||
if (process.env.PROD){
|
||||
if (process.env.PROD) {
|
||||
console.info("SESSIONE IN PRODUZIONE!")
|
||||
console.info(process.env)
|
||||
}
|
||||
|
||||
UserStore.mutations.autologin()
|
||||
UserStore.actions.autologin()
|
||||
.then((loginEseguito) => {
|
||||
if (loginEseguito) {
|
||||
this.$router.replace('/')
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
<template lang="pug">
|
||||
q-layout(view="lHh Lpr lFf")
|
||||
q-layout-header
|
||||
q-toolbar.row(color="primary", glossy)
|
||||
q-toolbar-title.col
|
||||
span Quasar TypeScript
|
||||
div(slot="subtitle") Quasar v{{ $q.version }}
|
||||
|
||||
q-btn-dropdown(ref="selectLanguages", v-if="hasMultipleLanguages", icon="language", :label="currentLanguage.code", flat, dense)
|
||||
q-list(link)
|
||||
q-item(v-close-overlay, v-for="(language, index) in availableLanguages", :key="index", @click.native="setLanguage(language.code)")
|
||||
q-item-main
|
||||
q-item-tile(label) {{ language.name }}
|
||||
q-item-side(v-if="language.code === currentLanguage.code", right, icon="done", color="primary")
|
||||
q-page-container
|
||||
router-view
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { Vue, Component, Mixins } from 'vue-property-decorator'
|
||||
import { Mixin as i18nMixin } from '@/plugins/i18n'
|
||||
|
||||
@Component
|
||||
export default class MainLayout extends Mixins(i18nMixin) {}
|
||||
</script>
|
||||
@@ -7,8 +7,8 @@
|
||||
<span class="text-white"> {{ Username }} </span>
|
||||
<hr>
|
||||
<span class="text-white" v-if="Verificato"> {{$t('reg.verificato')}} </span>
|
||||
<span class="text-white" v-else> {{$t('reg.non_verificato')}} </span>
|
||||
<span class="text-white"> {{ Email }} </span>
|
||||
<span class="text-white background-red" v-else> {{$t('reg.non_verificato')}} </span>
|
||||
<!-- <span class="text-white"> {{ Email }} </span>-->
|
||||
</div>
|
||||
<div id="user-actions">
|
||||
<q-btn round color="primary" icon="person"></q-btn>
|
||||
@@ -92,6 +92,11 @@
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.background-red{
|
||||
background-color: red;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.fixed-bottom {
|
||||
margin-bottom: 1%;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ export interface IGlobalState {
|
||||
layoutNeeded: boolean
|
||||
mobileMode: boolean
|
||||
menuCollapse: boolean
|
||||
leftDrawerOpen: boolean
|
||||
posts: IPost[]
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
<template>
|
||||
<q-page>Prova pagina</q-page>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
export default {
|
||||
// name: 'PageName',
|
||||
}
|
||||
</script>
|
||||
@@ -8,6 +8,7 @@ const state: IGlobalState = {
|
||||
layoutNeeded: true,
|
||||
mobileMode: false,
|
||||
menuCollapse: true,
|
||||
leftDrawerOpen: true,
|
||||
posts: []
|
||||
}
|
||||
|
||||
@@ -31,8 +32,13 @@ namespace Mutations {
|
||||
state.conta = num
|
||||
}
|
||||
|
||||
function setleftDrawerOpen(state: IGlobalState, bool: boolean) {
|
||||
state.leftDrawerOpen = bool
|
||||
}
|
||||
|
||||
export const mutations = {
|
||||
setConta: b.commit(setConta)
|
||||
setConta: b.commit(setConta),
|
||||
setleftDrawerOpen: b.commit(setleftDrawerOpen)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import router from '@router'
|
||||
|
||||
import { serv_constants } from '../Modules/serv_constants'
|
||||
import { rescodes } from '../Modules/rescodes'
|
||||
import { UserStore } from "@store"
|
||||
import { GlobalStore, UserStore } from '@store'
|
||||
|
||||
const bcrypt = require('bcryptjs')
|
||||
|
||||
@@ -109,37 +109,6 @@ namespace Mutations {
|
||||
state.verifiedEmail = false
|
||||
}
|
||||
|
||||
function autologin (state: IUserState) {
|
||||
// INIT
|
||||
UserStore.mutations.setlang(process.env.LANG_DEFAULT)
|
||||
// ++Todo: Estrai la Lang dal Localstorage
|
||||
const lang = localStorage.getItem('lang')
|
||||
if (lang) {
|
||||
UserStore.mutations.setlang(lang)
|
||||
}
|
||||
|
||||
const token = localStorage.getItem('token')
|
||||
if (!token) {
|
||||
return
|
||||
}
|
||||
const expirationDateStr = localStorage.getItem('expirationDate')
|
||||
let expirationDate = new Date(String(expirationDateStr))
|
||||
const now = new Date()
|
||||
if (now >= expirationDate) {
|
||||
return
|
||||
}
|
||||
const userId = Number(localStorage.getItem('userId'))
|
||||
const username = String(localStorage.getItem('username'))
|
||||
const verifiedEmail = localStorage.getItem('verificato') === '1'
|
||||
|
||||
mutations.authUser({
|
||||
username: username,
|
||||
userId: userId,
|
||||
idToken: token,
|
||||
verifiedEmail: verifiedEmail
|
||||
})
|
||||
}
|
||||
|
||||
export const mutations = {
|
||||
authUser: b.commit(authUser),
|
||||
setpassword: b.commit(setpassword),
|
||||
@@ -147,8 +116,7 @@ namespace Mutations {
|
||||
setlang: b.commit(setlang),
|
||||
UpdatePwd: b.commit(UpdatePwd),
|
||||
setServerCode: b.commit(setServerCode),
|
||||
clearAuthData: b.commit(clearAuthData),
|
||||
autologin: b.commit(autologin)
|
||||
clearAuthData: b.commit(clearAuthData)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -278,7 +246,10 @@ namespace Actions {
|
||||
// console.log("RITORNO 2 ");
|
||||
// mutations.setServerCode(myres);
|
||||
if (body.code === serv_constants.RIS_CODE_EMAIL_VERIFIED) {
|
||||
console.log('VERIFICATO !!')
|
||||
localStorage.setItem('verificato', '1')
|
||||
} else {
|
||||
console.log('Risultato di vreg: ', body.code)
|
||||
}
|
||||
return { code: body.code, msg: body.msg }
|
||||
}).catch((err) => {
|
||||
@@ -353,7 +324,7 @@ namespace Actions {
|
||||
|
||||
const now = new Date()
|
||||
// const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000);
|
||||
const expirationDate = new Date(now.getTime() + 1000)
|
||||
const expirationDate = new Date(now.getTime() * 1000)
|
||||
localStorage.setItem('username', username)
|
||||
localStorage.setItem('token', x_auth_token)
|
||||
localStorage.setItem('userId', iduser)
|
||||
@@ -438,7 +409,7 @@ namespace Actions {
|
||||
if (myres.status === 200) {
|
||||
let iduser = body._id
|
||||
let username = authData.username
|
||||
let verifiedEmail = body.verifiedEmail === 'true' || body.verifiedEmail === true
|
||||
let verifiedEmail = body.verified_email === 'true' || body.verified_email === true
|
||||
if (process.env.DEV) {
|
||||
console.log('USERNAME = ' + username)
|
||||
console.log('IDUSER= ' + iduser)
|
||||
@@ -452,13 +423,14 @@ namespace Actions {
|
||||
|
||||
const now = new Date()
|
||||
// const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000);
|
||||
const expirationDate = new Date(now.getTime() + 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', String(verifiedEmail))
|
||||
localStorage.setItem('verificato', Number(verifiedEmail).toString())
|
||||
|
||||
|
||||
// dispatch('storeUser', authData);
|
||||
// dispatch('setLogoutTimer', myres.data.expiresIn);
|
||||
@@ -517,6 +489,50 @@ namespace Actions {
|
||||
router.push('/signin')
|
||||
}
|
||||
|
||||
function setGlobal() {
|
||||
GlobalStore.mutations.setleftDrawerOpen(localStorage.getItem('leftDrawerOpen') === 'true')
|
||||
|
||||
}
|
||||
|
||||
async function autologin (context) {
|
||||
try {
|
||||
// INIT
|
||||
UserStore.mutations.setlang(process.env.LANG_DEFAULT)
|
||||
// ++Todo: Estrai la Lang dal Localstorage
|
||||
const lang = localStorage.getItem('lang')
|
||||
if (lang) {
|
||||
UserStore.mutations.setlang(lang)
|
||||
}
|
||||
|
||||
const token = localStorage.getItem('token')
|
||||
if (!token) {
|
||||
return false
|
||||
}
|
||||
const expirationDateStr = localStorage.getItem('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'
|
||||
|
||||
setGlobal()
|
||||
|
||||
Mutations.mutations.authUser({
|
||||
username: username,
|
||||
userId: userId,
|
||||
idToken: token,
|
||||
verifiedEmail: verifiedEmail
|
||||
})
|
||||
return true
|
||||
} catch (e) {
|
||||
console.error('ERR autologin ', e.message)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const actions = {
|
||||
resetpwd: b.dispatch(resetpwd),
|
||||
@@ -524,7 +540,8 @@ namespace Actions {
|
||||
vreg: b.dispatch(vreg),
|
||||
signup: b.dispatch(signup),
|
||||
signin: b.dispatch(signin),
|
||||
logout: b.dispatch(logout)
|
||||
logout: b.dispatch(logout),
|
||||
autologin: b.dispatch(autologin)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
>
|
||||
<q-input
|
||||
v-model="signin.password"
|
||||
type="password"
|
||||
:before="[{icon: 'vpn_key', handler () {}}]"
|
||||
@blur="$v.signin.password.$touch"
|
||||
:error="$v.signin.password.$error"
|
||||
|
||||
@@ -51,7 +51,7 @@ export default class Vreg extends Vue {
|
||||
|
||||
if (this.verificatook) {
|
||||
setTimeout(() => {
|
||||
this.$router.replace('/')
|
||||
this.$router.replace('/signin')
|
||||
}, 3000)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user