Aggiunta la Autenticazione con x-auth

This commit is contained in:
paolo
2018-10-20 18:56:31 +02:00
parent 907d47f33c
commit 7d61b947ba
12 changed files with 120 additions and 337 deletions

117
package-lock.json generated
View File

@@ -1230,7 +1230,8 @@
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"ansi-styles": {
"version": "3.2.1",
@@ -1454,6 +1455,17 @@
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
},
"dependencies": {
"strip-ansi": {
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
}
}
},
"supports-color": {
@@ -2011,9 +2023,9 @@
}
},
"chart.js": {
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.2.tgz",
"integrity": "sha512-90wl3V9xRZ8tnMvMlpcW+0Yg13BelsGS9P9t0ClaDxv/hdypHDr/YAGf+728m11P5ljwyB0ZHfPKCapZFqSqYA==",
"version": "2.7.3",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.3.tgz",
"integrity": "sha512-3+7k/DbR92m6BsMUYP6M0dMsMVZpMnwkUyNSAbqolHKsbIzH2Q4LWVEHHYq7v0fmEV8whXE0DrjANulw9j2K5g==",
"requires": {
"chartjs-color": "2.2.0",
"moment": "2.22.2"
@@ -3494,7 +3506,8 @@
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
"eslint-scope": {
"version": "4.0.0",
@@ -4061,6 +4074,17 @@
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
},
"dependencies": {
"strip-ansi": {
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
}
}
},
"supports-color": {
@@ -4765,6 +4789,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
@@ -5771,38 +5796,6 @@
"integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
"dev": true
},
"ladash": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/ladash/-/ladash-1.2.0.tgz",
"integrity": "sha1-wlWPJYd5hc5VWqbnByO0SnLAw2Y=",
"requires": {
"chalk": "1.1.3"
},
"dependencies": {
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"chalk": {
"version": "1.1.3",
"resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
}
}
},
"last-call-webpack-plugin": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
@@ -5852,8 +5845,7 @@
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
"dev": true
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
},
"lodash._reinterpolate": {
"version": "3.0.0",
@@ -7732,6 +7724,17 @@
"webpack-merge": "4.1.4",
"webpack-node-externals": "1.7.2",
"workbox-webpack-plugin": "3.5.0"
},
"dependencies": {
"strip-ansi": {
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
}
}
},
"quasar-extras": {
@@ -7991,6 +7994,15 @@
"dom-serializer": "0.1.0",
"domelementtype": "1.3.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
}
}
},
@@ -8869,6 +8881,7 @@
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
@@ -9634,9 +9647,9 @@
"dev": true
},
"vue-i18n": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.1.0.tgz",
"integrity": "sha512-Oj1FHLmLS/rGD6vhkB/JiRNLmOAG+ZSOqR9fjTy8fbKkTl+cdHCHOd+JDvPpR2aQufWA4+BDTnVavVAyQwWK4g=="
"version": "8.2.1",
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.2.1.tgz",
"integrity": "sha512-eiqkUBP9uoADmHa1vz0jLS/JNvR+dODjn2nz14/ZD14hTaWpbOXoUZ0C5Nd2vbP6vOaxXjmkvkzJn/VISvX1BQ=="
},
"vue-i18n-loader": {
"version": "1.0.0",
@@ -9695,6 +9708,17 @@
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
},
"dependencies": {
"strip-ansi": {
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
}
}
},
"source-map": {
@@ -9935,6 +9959,15 @@
"requires": {
"is-extglob": "2.1.1"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
}
}
}
},

View File

@@ -3,24 +3,24 @@
"version": "1.0.0",
"description": "MyApp Pao descrizione",
"productName": "MyApp Pao",
"cordovaId": "org.cordova.quasar.app",
"cordovaId": "",
"author": "paolo <paolo.arena77@gmail.com>",
"private": true,
"scripts": {
"dev": "quasar dev -m pwa",
"build": "quasar build -m pwa",
"test": "echo \"No test specified\" && exit 0"
"test": "quasar dev"
},
"dependencies": {
"axios": "^0.18.0",
"chart": "^0.1.2",
"chart.js": "^2.7.2",
"chart.js": "^2.7.3",
"countup.js": "^1.9.3",
"ladash": "^1.2.0",
"lodash": "^4.17.11",
"quasar-extras": "^2.0.8",
"roboto-font": "^0.1.0",
"vivus": "^0.4.4",
"vue-i18n": "^8.1.0",
"vue-i18n": "^8.2.1",
"vue-i18n-loader": "^1.0.0",
"vuelidate": "^0.7.4"
},
@@ -28,7 +28,7 @@
"dotenv": "^6.1.0",
"json-loader": "^0.5.7",
"quasar-cli": "^0.17.0",
"strip-ansi": "=3.0.1",
"strip-ansi": "^3.0.1",
"vue-cli-plugin-quasar": "^0.17.1"
},
"engines": {

View File

@@ -7,8 +7,7 @@ const envparser = require('./config/envparser');
module.exports = function (ctx) {
return {
// app plugins (/src/plugins)
plugins: ['i18n', 'axios', 'aggiuntivi', 'vuelidate'],
plugins: ['i18n', 'axios', 'vuelidate'],
css: [
'app.styl'
],
@@ -45,8 +44,9 @@ module.exports = function (ctx) {
},
devServer: {
// https: true,
// port: 8080,
open: false // opens browser window automatically
port: 8080,
host: 'localhost',
open: true // opens browser window automatically
},
framework: {
components: [
@@ -71,6 +71,7 @@ module.exports = function (ctx) {
'QCardSeparator',
'QCardActions',
'QField',
'QInput',
'QSelect',
'QPopover',
'QToggle',
@@ -79,7 +80,6 @@ module.exports = function (ctx) {
'QAjaxBar',
'QChip',
'QCollapsible',
'QInput',
'QCheckbox',
],

View File

@@ -54,13 +54,11 @@
import drawer from '../components/layout/drawer/drawer.vue'
import messagePopover from '../components/layout/toolbar/messagePopover.vue'
import signup from '../components/views/auth/old_signup';
export default {
components: {
drawer,
messagePopover,
appsignup: signup,
},
created() {
//this.$store.dispatch('initStocks');

View File

@@ -1,235 +0,0 @@
<template>
<div id="signup" class="modal is-active">
<div class="modal-background"></div>
<div class="modal-content">
<button class="modal-close is-large" aria-label="close" @click="$emit('close')"></button>
<transition name="signup">
<div class="signup-form">
<form @submit.prevent="validateBeforeSubmit">
<label class="title">Registrazione</label>
<div class="column is-12">
<label class="label">{{ $t("message.Email") }}</label>
<p class="control has-icon has-icon-right">
<input name="email" v-model="email" v-validate="'required|email'"
:class="{'input': true, 'is-danger': ('email') }" type="text"
placeholder="Email">
<i v-show="('email')" class="fa fa-warning"></i>
<span v-show="('email')"
class="help is-danger">{{ ('email') }}</span>
</p>
</div>
<div class="column is-12">
<label class="label">{{ $t("message.Name") }}</label>
<p class="control has-icon has-icon-right">
<input name="name" v-model="name" v-validate="{required: true, minLength: 5}"
:class="{'input': true, 'is-danger': ('name') }" type="text"
v-bind:placeholder="$t('message.Name')">
<i v-show="('name')" class="fa fa-warning"></i>
<span v-show="('name')"
class="help is-danger">{{ ('name') }}</span>
</p>
</div>
<div class="column is-12">
<label class="label">{{ $t("message.Surname") }}</label>
<p class="control has-icon has-icon-right">
<input name="surname" v-model="surname" v-validate="'required|alpha'"
:class="{'input': true, 'is-danger': ('surname') }" type="text"
v-bind:placeholder="$t('message.Surname')">
<i v-show="('surname')" class="fa fa-warning"></i>
<span v-show="('surname')"
class="help is-danger">{{ ('surname') }}</span>
</p>
</div>
<div class="column is-12">
<label class="label">{{ $t("message.username") }}</label>
<p class="control has-icon has-icon-right">
<input name="name" v-model="username" v-validate="'required|alpha'"
:class="{'input': true, 'is-danger': ('username') }" type="text"
v-bind:placeholder="$t('message.username')">
<i v-show="('surname')" class="fa fa-warning"></i>
<span v-show="('username')"
class="help is-danger">{{ ('username') }}</span>
</p>
</div>
<div class="column is-12">
<label class="label">{{ $t("message.password") }}</label>
<p class="control has-icon has-icon-right">
<input name="name" v-model="password" v-validate="'required|alpha'"
:class="{'input': true, 'is-danger': ('password') }" type="password"
v-bind:placeholder="$t('message.password')">
<i v-show="('password')" class="fa fa-warning"></i>
<span v-show="('password')"
class="help is-danger">{{ ('password') }}</span>
</p>
</div>
<div class="column is-12">
<label class="label">{{ $t("message.repeatpassword") }}</label>
<p class="control has-icon has-icon-right">
<input name="name" v-model="repeatpassword" v-validate="'required|confirmed:password'"
:class="{'input': true, 'is-danger': ('repeatpassword') }" type="password"
v-bind:placeholder="$t('message.repeatpassword')">
<i v-show="('repeatpassword')" class="fa fa-warning"></i>
<span v-show="('repeatpassword')"
class="help is-danger">{{ ('repeatpassword') }}</span>
</p>
</div>
<div class="column is-12">
<label class="label">{{ $t("message.Phone") }}</label>
<p class="control has-icon has-icon-right">
<input name="phone" v-model="phone" v-validate="'required|numeric'"
:class="{'input': true, 'is-danger': ('phone') }" type="text"
placeholder="Phone">
<i v-show="('phone')" class="fa fa-warning"></i>
<span v-show="('phone')"
class="help is-danger">{{ ('phone') }}</span>
</p>
</div>
<div class="column is-12">
<p class="control">
<button class="button is-primary submit" type="submit">Submit</button>
</p>
</div>
</form>
</div>
</transition>
</div>
</div>
</template>
<script>
//import axios from '../../axios-auth';
export default {
name: 'registrazione',
data() {
return {
email: '',
name: '',
surname: '',
username: '',
password: '',
repeatpassword: '',
phone: '',
url: '',
terms: false,
myshowModal: this.$store.state.myshowModal
}
},
methods: {
validateBeforeSubmit() {
this.$validator.validateAll().then((result) => {
if (result) {
// eslint-disable-next-line
alert('Form Submitted!');
return;
}
alert($t("message.CorrectErrors"));
});
},
onSubmit() {
const formData = {
email: this.email,
age: this.age,
password: this.password,
confirmPassword: this.confirmPassword,
country: this.country,
terms: this.terms
}
console.log(formData);
var miaurl = '/signupNewUser?key=AIzaSyCXlVPPWknVGhfc60mt7Jkv0Xzrho7_mwc';
miaurl = '/signupNewUser';
/*
axios.post(miaurl, {
email: formData.email,
password: formData.password,
returnSecureToken: true
})
.then(res => console.log(res))
.catch(error => console.log(error))
*/
}
}
}
</script>
<style scoped>
p{
margin-bottom: 5px;
}
.column{
padding : .25rem;
}
.title{
color:blue;
}
.signup-form{
margin-top: 5px;
margin-bottom: 5px;
padding: 10px;
}
.input label {
display: block;
color: #4e4e4e;
}
.input.inline label {
display: inline;
}
.input input {
font: inherit;
width: 100%;
padding: 6px 12px;
box-sizing: border-box;
border: 1px solid #ccc;
}
.input.inline input {
width: auto;
}
.input input:focus {
outline: none;
border: 1px solid #521751;
background-color: #eee;
}
.input select {
border: 1px solid #ccc;
font: inherit;
}
.submit{
font-size: 20px;
}
.submit button {
border: 1px solid #521751;
color: #521751;
padding: 10px 20px;
font: inherit;
cursor: pointer;
}
.submit button:hover,
.submit button:active {
background-color: #521751;
color: white;
}
.submit button[disabled],
.submit button[disabled]:hover,
.submit button[disabled]:active {
border: 1px solid #ccc;
background-color: transparent;
color: #ccc;
cursor: not-allowed;
}
</style>

View File

@@ -11,7 +11,6 @@
<!--Prova URL : {{env('PROVA_PAOLO')}}-->
<q-field
:helper=""
:error="$v.form.email.$error"
:error-label="`${errorMsg('email', $v.form.email)}`"
>
@@ -27,7 +26,6 @@
</q-field>
<q-field
:helper=""
:error="$v.form.username.$error"
:error-label="`${errorMsg('username', $v.form.username)}`"
>
@@ -42,7 +40,6 @@
</q-field>
<q-field
:helper=""
:error="$v.form.password.$error"
:error-label="`${errorMsg('password', $v.form.password)}`"
>
@@ -56,7 +53,6 @@
</q-field>
<q-field
:helper=""
:error="$v.form.repeatPassword.$error"
:error-label="`${errorMsg('repeatpassword', $v.form.repeatPassword)}`"
>
@@ -70,7 +66,6 @@
</q-field>
<q-field
:helper=""
:error="$v.form.terms.$error"
:error-label="`${errorMsg('terms', $v.form.terms)}`"
>
@@ -147,11 +142,9 @@
env() {
return env
},
userIsAuthenticated() {
return this.getUsername() !== null;
},
},
validations: {
isAsync: true,
form: {
email: {
required, email,

View File

@@ -6,7 +6,7 @@ const messages = {
myDescriz: 'La prima App Libera e per Tutti'
},
reg: {
richiesto: '* Richiesto',
richiesto: 'Campo Richiesto',
email: 'Email',
username : 'Nome Utente',
password: 'Password',
@@ -34,7 +34,7 @@ const messages = {
myDescriz: 'The first Free app for Everyone'
},
reg: {
richiesto: '* Required',
richiesto: 'Field Required',
email: 'Email',
username : 'Username',
password: 'Password',

View File

@@ -1,7 +0,0 @@
// import something here
import Vuelidate from 'vuelidate'
// leave the export, even if you don't use it
export default ({ app, router, Vue }) => {
Vue.use(Vuelidate);
}

View File

@@ -3,7 +3,7 @@ import VueRouter from 'vue-router'
import routes from './routes'
Vue.use(VueRouter);
Vue.use(VueRouter)
/*
* If not building with SSR mode, you can

View File

@@ -1,4 +1,3 @@
import VueI18n from 'vue-i18n';
import Vue from 'vue'
Vue.use(VueI18n);
@@ -10,9 +9,7 @@ function load (component) {
const routes = [
{ path: '/', component: () => import('pages/Index.vue') },
{ path: '/prec', component: load('views/dashboard/one/dashboard'), meta: { name: 'Dashboard One' } },
{ path: '/signup', component: load('views/login/signup'), meta: { name: 'Registration' } },
{ path: '/signin', component: load('views/login/signin'), meta: { name: 'Login' } },
{ path: '/login', component: load('views/login/login'), meta: { name: 'Login' } },
];

View File

@@ -4,7 +4,7 @@ import Vuex from 'vuex'
Vue.use(Vuex);
import * as types from '../mutation-types'
import tools from '../../../tools/tools'
//import tools from '../../../tools/tools'
export const Errori_MongoDb = {
CALLING: 10,
@@ -16,14 +16,17 @@ export const Errori_MongoDb = {
export const state = {
user: {
_id: '',
email: '',
username: null,
password: '',
ripetipassword: '',
dateofbirth: '',
idToken: '',
userId: 0,
tokens: [{
access: '',
token: ''
}]
},
userServer: null,
servercode: 0,
@@ -33,7 +36,7 @@ function sendRequest(url, method, mydata) {
const options = {
method: method,
//mode: 'no-cors',
headers: new Headers({'content-type': 'application/json'}),
headers: new Headers({'content-type': 'application/json', 'x-auth': ''}),
cache: "no-cache",
body: JSON.stringify(mydata),
};
@@ -72,11 +75,8 @@ export const mutations = {
state.user.dateOfBirth = payload;
},
authUser(state, userData) {
if (userData.email == state.user.email) {
state.user.idToken = userData.idToken;
state.user.userId = userData.email
}
authUser(state, email, mytoken) {
state.user.tokens.push({access: "auth", token: mytoken});
},
setUser(state, user) {
state.userServer = user
@@ -86,8 +86,7 @@ export const mutations = {
state.servercode = servercode;
},
clearAuthData(state) {
state.idToken = null
state.userId = null
state.tokens = [];
}
};
@@ -126,8 +125,17 @@ export const actions = {
commit('setServerCode', Errori_MongoDb.CALLING);
var x_auth_token = null;
return sendRequest(call, "POST", params)
.then((res) => {
console.log("HEADERS:");
for (let header of res.headers) {
console.log(header);
}
x_auth_token = res.headers.get('x-auth');
myres = res;
return res.json();
})
@@ -140,47 +148,43 @@ export const actions = {
}
commit('setServerCode', myres);
commit('setUser', body);
if (myres.status === 200) {
var idToken = body._id;
var iduser = body._id;
var email = body.email;
if (process.env.DEV) {
console.log("EMAIL = " + body.email);
console.log("ID= " + idToken);
console.log("IDUSER= " + iduser);
commit('authUser', email, x_auth_token);
}
commit('authUser', {
idToken: idToken,
email: email
});
const now = new Date();
//const expirationDate = new Date(now.getTime() + myres.data.expiresIn * 1000);
const expirationDate = new Date(now.getTime() + 1000);
localStorage.setItem('token', idToken);
//localStorage.setItem('userId', myres.data.localId)
localStorage.setItem('token', x_auth_token);
localStorage.setItem('userId', iduser);
localStorage.setItem('expirationDate', expirationDate);
//dispatch('storeUser', authData);
//dispatch('setLogoutTimer', myres.data.expiresIn);
console.log("2 - FINE SIGNUP....");
return Errori_MongoDb.OK;
} else if (myres.status === 404) {
if (process.env.DEV) {
console.log("CODE = " + body.code);
}
console.log("2 - FINE SIGNUP....");
return body.code;
} else {
if (process.env.DEV) {
console.log("CODE = " + body.code);
}
console.log("2 - FINE SIGNUP....");
return body.code;
}
})
.catch( (error) => {
console.log("ERROREEEEEEEEE");
console.log(error);
.catch((error) => {
if (process.env.DEV) {
console.log("ERROREEEEEEEEE");
console.log(error);
}
commit('setServerCode', Errori_MongoDb.ERR_GENERICO);
return Errori_MongoDb.ERR_GENERICO;
});

View File