- Installazione primo Sito Web del server

- Creazione prima pagina Home
This commit is contained in:
Surya Paolo
2023-12-09 00:19:48 +01:00
parent 7e17869d3e
commit 2b6411eb77
27 changed files with 152 additions and 50 deletions

View File

@@ -1,30 +1,26 @@
DATABASE=PiuCheBuono
UDB=paofreeplanet
PDB=suerteFreePlanet@1A
SEND_EMAIL=1
PORT=3000
appTelegram_TEST=["17"]
appTelegram=["17"]
ENABLE_PUSHNOTIFICATION=1
APP_VERSION="1.0.22"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=freeplanet_serverside
SERVERDIR_WEBSITE=www.freeplanet_server
PORT_APP1="0"
DOMAIN=mongodb://localhost:32001/
AUTH_MONGODB=1
MONGODB_USER=admin
MONGODB_PWD=mypwadminREAL@1A
SIGNCODE=SU2134hncaskjdbo231oihJSDNHEI$1@AB
DEBUG=0
LOCALE=0
DELAY_SENDEMAIL=1000
VAPI_KEY_SUBJECT="mailto:surya@riso.app"
PUBLIC_VAPI_KEY="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
PRIVATE_VAPI_KEY="LVpFDJuKscdHuQr5pe20dFuYuWX1-ZRb6x72PP-Pp4I"
GCM_API_KEY="AIzaSyD7w1jztfVV05mX1iyxoI-r1pZWxuxdUK8"
PATH_CERT_KEY=key.pem
PATH_SERVER_CRT=cert.pem
PATH_SSL_ROOT_PEM=root.pem
PATH_SSL_CHAIN_PEM=chain.pem
PROD=0
PROJECT_DESCR_MAIN='__PROJECTS'
SECRK=iUUb38v23jjDFaosWj92axkBOXCQ
SERVERDIR_WEBSITE="/var/customers/webs/paolouser/piuchebuono.app/"
APP_URL="https://piuchebuono.app"
URL_FACEBOOK=""
PROVA_PAOLO=""
LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://srv.piuchebuono.app:3000"
LOGO_REG='piuchebuono-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""
TEST_USERNAME=""
TEST_PASSWORD=""
TEST_APORTADOR="------"
PUBLICKEY_PUSH="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
DEBUG="1"
TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL=""
ISTEST=0

View File

@@ -11,7 +11,7 @@ LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://srv.piuchebuono.app:3001"
LOGO_REG='riso-logo-full.png'
LOGO_REG='piuchebuono-logo-full.png'
TEST_NAME=""
TEST_SURNAME=""
TEST_EMAIL=""

View File

@@ -3,7 +3,7 @@ SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=test.freeplanet_serverside
SERVERDIR_WEBSITE="/var/customers/webs/paolouser/testriso/"
SERVERDIR_WEBSITE="/var/customers/webs/paolouser/test.piuchebuono.app/"
APP_URL="https://testriso.piuchebuono.app"
URL_FACEBOOK=""
PROVA_PAOLO=""

15
.vscode/settings.json vendored
View File

@@ -1,7 +1,16 @@
{
"vetur.validation.template": false,
"vetur.format.enable": false,
"eslint.validate": ["javascript", "javascriptreact", "typescript", "vue"],
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"vue"
],
"typescript.tsdk": "node_modules/typescript/lib",
"vetur.experimental.templateInterpolationService": true
}
"vetur.experimental.templateInterpolationService": true,
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/node_modules/**": true
},
}

26
deploy_on_prod_pcb.sh Executable file
View File

@@ -0,0 +1,26 @@
#!/bin/bash
source ./.env.prod.pcb
cp .env.prod.pcb .env.production
msg="*** IN PRODUZIONE !!!!! SEI SICURO DI INVIARE GLI AGGIORNAMENTI SUL SERVER DI PRODUZIONE ?? $SERVERDIR_WEBSITE (Y/N) ? "
if [ "$1" = "" ]; then
read -p "$msg" risposta
else
echo $msg
risposta=$1
fi
if [[ $risposta == "Y" || $risposta == "y" ]]; then
npm run buildpwa
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
rsync -e 'ssh -p 8822' -a dist/pwa/ pcbuser@pcb:$SERVERDIR_WEBSITE
echo "Finito $SERVERDIR_WEBSITE "
fi

View File

@@ -3,7 +3,7 @@ import { useQuasar } from 'quasar'
import { useI18n } from '@src/boot/i18n'
import { useUserStore } from '@store/UserStore'
import { useGlobalStore } from '@store/globalStore'
import { defineComponent, PropType, ref } from 'vue'
import { defineComponent, computed, PropType, ref } from 'vue'
import { IUserFields } from 'model'
import { shared_consts } from '@/common/shared_vuejs'
import { CLabel } from '@/components/CLabel'
@@ -35,6 +35,8 @@ export default defineComponent({
const showsendCoinTo = ref(false)
const showingtooltip = ref(false)
const site = computed(() => globalStore.site)
function myusername() {
return userStore.my.username
}
@@ -84,6 +86,7 @@ export default defineComponent({
myusername,
showingtooltip,
clickOpenSendCoin,
site,
}
},
})

View File

@@ -22,6 +22,7 @@
>
<q-btn
v-if="site.confpages && site.confpages.showCompetenze"
icon="fas fa-house-user"
size="md"
color="orange"

View File

@@ -5,6 +5,7 @@ import { CImgText } from '@/components/CImgText'
import { CCard } from '@/components/CCard'
import { CMyPage } from '@/components/CMyPage'
import { CTitleBanner } from '@/components/CTitleBanner'
import { useRouter } from 'vue-router'
export default defineComponent({
name: 'CMyInnerPage',
@@ -21,10 +22,13 @@ export default defineComponent({
const rec = ref(<IMyPage | undefined>{})
const globalStore = useGlobalStore()
const $router = useRouter()
function mounted() {
// console.log('$route.path', $route.path)
rec.value = globalStore.getPage(props.path)
console.log(rec)
console.log('rec', rec)
}
onMounted(mounted)

View File

@@ -8,6 +8,7 @@ import { LandingFooter } from '@/components/LandingFooter'
import { CImgTitle } from '../CImgTitle/index'
import { CTitle } from '../CTitle/index'
import { useRouter } from 'vue-router'
export default defineComponent({
name: 'CMyPage',
@@ -51,10 +52,12 @@ export default defineComponent({
const mypath = toRef(props, 'mypath')
const globalStore = useGlobalStore()
const $router = useRouter()
const load = async (): Promise<void> => {
// console.log('load', mypath.value)
if (mypath.value !== '') rec.value = await globalStore.loadPage('/' + mypath.value, 'cmypage')
}
watch(() => props.mypath, async (to: string, from: string) => {

View File

@@ -17,6 +17,7 @@ import { useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import { shared_consts } from '@/common/shared_vuejs'
import objectId from '@src/js/objectId'
import { useRouter } from 'vue-router'
export default defineComponent({
name: 'CMyPageElem',
@@ -62,6 +63,7 @@ export default defineComponent({
const { t } = useI18n()
const globalStore = useGlobalStore()
const $router = useRouter()
const editOn = computed({
get (): boolean {
@@ -96,6 +98,10 @@ export default defineComponent({
})
}
if (mypathin.value === 'home_logout' && globalStore.site.name === 'local' && !rec.value) {
$router.replace('/install_site')
}
if (tools.isManager()) {
// console.log('getcookie: ', editOn.value, mypathin.value)
}

View File

@@ -17,6 +17,8 @@ import { useI18n } from '@/boot/i18n'
import { shared_consts } from '@/common/shared_vuejs'
import objectId from '@src/js/objectId'
import { useRouter } from 'vue-router'
export default defineComponent({
name: 'CMyPageElem2',
components: { LandingFooter, CImgTitle, CTitle, CMyElem, CMyEditElem },
@@ -61,6 +63,7 @@ export default defineComponent({
const { t } = useI18n()
const globalStore = useGlobalStore()
const $router = useRouter()
const visuEditor = ref(false)
const addOn = ref(false)

View File

@@ -21,8 +21,8 @@
:rules="[
(val) => !!val || $t('reg.err.required'),
(val) =>
val.length >= 6 ||
$t('reg.err.atleast') + ' 6 ' + $t('reg.err.char'),
val.length >= 5 ||
$t('reg.err.atleast') + ' 5 ' + $t('reg.err.char'),
]"
>
<template v-slot:prepend>

View File

@@ -8,6 +8,7 @@ const msg_website_enUs = {
products: {
quantity: 'Quantità',
quantityAvailable: 'Disponibili',
stockQty: 'In Magazzino',
weight: 'Peso',
stars: 'Voto',
color: 'Colore',

View File

@@ -8,6 +8,7 @@ const msg_website_es = {
products: {
quantity: 'Quantità',
quantityAvailable: 'Disponibili',
stockQty: 'In Magazzino',
weight: 'Peso',
stars: 'Voto',
color: 'Colore',

View File

@@ -45,7 +45,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: true,
},*/
{
active: true,
active: site.confpages && site.confpages.showProfile,
order: 120,
path: '/myprofile',
materialIcon: 'fas fa-user',
@@ -67,7 +67,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: false,
},
{
active: true,
active: site.confpages && site.confpages.showProfile,
order: 120,
path: '/editprofile',
materialIcon: 'fas fa-user',
@@ -78,7 +78,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
infooter: false,
},
{
active: true,
active: site.confpages && site.confpages.showiscrittiMenu,
order: 130,
path: '/friends',
materialIcon: 'fas fa-user-friends',

View File

@@ -225,9 +225,11 @@ export interface IConfPages {
showButtHome: boolean
showProfile: boolean
showUserMenu: boolean
showiscrittiMenu: boolean
showRegButton: boolean
enableReg: boolean
showNL: boolean
sendNewsletter: boolean
showMsgs: boolean
showNotif: boolean
showCoins: boolean

View File

@@ -15,6 +15,7 @@ export interface IProduct {
color?: string,
size?: string,
quantityAvailable?: number,
stockQty?: number,
canBeShipped?: boolean,
canBeBuyOnline?: boolean,
weight?: number,

View File

@@ -413,6 +413,16 @@
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showiscrittiMenu')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="showiscrittiMenu"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showRegButton')"
@@ -443,6 +453,16 @@
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.sendNewsletter')"
:id="mysite._id"
:rec="mysite"
mykey="confpages"
mysubkey="sendNewsletter"
:type="costanti.FieldType.boolean"
>
</CMyFieldDb>
<CMyFieldDb
table="sites"
:title="$t('confpages.showMsgs')"

View File

@@ -227,7 +227,7 @@ function getRoutesAd(site: ISites) {
*/
{
active: true,
active: site.confpages.showCoins,
path: '/admin/ris',
order: 60,
faIcon: 'fa fa-list-alt',
@@ -325,7 +325,7 @@ function getRoutesAd(site: ISites) {
onlyEditor: true
},
{
active: true,
active: site.confpages && site.confpages.sendNewsletter,
path: '/admin/newsletter',
order: 60,
faIcon: 'fa fa-list-alt',

View File

@@ -61,6 +61,7 @@ const msg_it = {
date: 'Data',
quantity: 'Quantità',
quantityAvailable: 'Disponibili',
stockQty: 'In Magazzino',
weight: 'Peso',
unit: 'Unità di Misura',
stars: 'Voto',
@@ -73,6 +74,8 @@ const msg_it = {
ingredienti: 'ingredienti',
valori_nutrizionali: 'Valori Nutrizionali',
note: 'Note',
codice_EAN: 'EAN',
barcode: 'BarCode',
},
storehouses: {
name: 'Magazzino',
@@ -1262,7 +1265,7 @@ const msg_it = {
circuit: {
apri: 'Entra !',
invia_msg_dest: 'Invia la richiesta a {name}',
non_hai_circuito_nazionale: 'Per poter inviare dei RIS ad una persona di un altro territorio, è necessario entrare sul "Circuito RIS Italia"',
non_hai_circuito_nazionale: 'Per poter inviare dei RIS ad una persona di un altro territorio, è necessario che entriate entrambi sul "Circuito RIS Italia"',
destin_non_ha_circuito_naz: 'Il tuo Destinatario non è ancora dentro al Circuito RIS Italia',
beforeentertolocalcircuit: 'Prima di entrare nel Circuito Nazionale occorre accedere in quello della tua Provincia',
@@ -1505,9 +1508,11 @@ const msg_it = {
showButtHome: 'Bottone Home',
showProfile: 'Profilo',
showUserMenu: 'Menu Utente',
showiscrittiMenu: 'Menu Iscritti',
showRegButton: 'Bottone Registrazione',
enableReg: 'Attiva Registrazione',
showNL: 'Newsletter',
sendNewsletter: 'Menu Invia Newsletter',
showMsgs: 'Messaggi',
showNotif: 'Notifiche',
showCoins: 'RIS',

View File

@@ -1953,6 +1953,11 @@ export const colTableProducts = [
label_trans: 'products.quantityAvailable',
fieldtype: costanti.FieldType.number
}),
AddCol({
name: 'stockQty',
label_trans: 'products.stockQty',
fieldtype: costanti.FieldType.number
}),
AddCol({ name: 'canBeShipped', label_trans: 'products.canBeShipped', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'canBeBuyOnline', label_trans: 'products.canBeBuyOnline', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'weight', label_trans: 'products.weight', fieldtype: costanti.FieldType.number }),

View File

@@ -5588,11 +5588,11 @@ export const tools = {
.then((res: any) => {
if (res) {
userStore.my.profile.userstoverify = userStore.my.profile.userstoverify.filter((rec: any) => rec.username !== usernameDest)
if (value)
tools.showPositiveNotif($q, t('db.enabled_to_app', {username: usernameDest}))
tools.showPositiveNotif($q, t('db.enabled_to_app', { username: usernameDest }))
else
tools.showNegativeNotif($q, t('db.rejected_to_app', {username: usernameDest}))
tools.showNegativeNotif($q, t('db.rejected_to_app', { username: usernameDest }))
}
})
})
@@ -8254,6 +8254,7 @@ export const tools = {
return 0
},
// FINE !
// getLocale() {

View File

@@ -76,6 +76,7 @@ export const useProducts = defineStore('Products', {
color: '',
size: '',
quantityAvailable: 0,
stockQty: 0,
canBeShipped: false,
canBeBuyOnline: false,
weight: 0,

View File

@@ -641,7 +641,12 @@ export const useUserStore = defineStore('UserStore', {
if (globalStore.site.confpages && globalStore.site.confpages.enableRegMultiChoice) {
return ((this.isTelegIdOk() && this.isUsernameTelegOk()) || this.my.verified_email!) && this.my.verified_by_aportador!
} else {
return this.isTelegIdOk() && this.my.verified_by_aportador! && this.isUsernameTelegOk()
//if (tools.getAskToVerifyReg()) {
if (globalStore.site.confpages && globalStore.site.confpages.enabledRegNeedTelegram) {
return this.isTelegIdOk() && this.my.verified_by_aportador! && this.isUsernameTelegOk()
} else {
return this.my.verified_email!
}
}
// return this.my.verified_email! && this.isTelegIdOk() && this.my.verified_by_aportador!
},
@@ -1393,7 +1398,7 @@ export const useUserStore = defineStore('UserStore', {
// console.log('this.isLogged', this.isLogged, 'isok', isok, 'isLogged', isLogged)
if (globalStore.site.confpages.enableTodos)
if (globalStore.site.confpages && globalStore.site.confpages.enableTodos)
await todos.dbLoad({ checkPending: true })
if (globalStore.site.confpages.enableProj)
@@ -1909,6 +1914,12 @@ export const useUserStore = defineStore('UserStore', {
showButtonSendCoin(myuser: IUserFields) {
const oldway = false
const globalStore = useGlobalStore()
if (globalStore.site && !globalStore.site.confpages.showCoins) {
return false
}
if (oldway)
return this.getMyCircuitsInCommonByUser(myuser).length > 0

View File

@@ -150,9 +150,11 @@ export const useGlobalStore = defineStore('GlobalStore', {
show_darkopt: true,
showProfile: false,
showUserMenu: true,
showiscrittiMenu: false,
showRegButton: false,
enableReg: false,
showNL: false,
sendNewsletter: false,
showMsgs: false,
showNotif: false,
showCoins: false,

View File

@@ -24,7 +24,7 @@ export const validations = {
},
username: {
required,
minLength: minLength(8),
minLength: minLength(5),
complexityUser,
},
}

View File

@@ -58,6 +58,7 @@ export default defineComponent({
emailsent.value = true
idapp.value = ris.idapp
tools.showPositiveNotif($q, t('install.created', {idapp: ris.idapp}))
$router.replace('/signin')
form.password = ''
} else
tools.showNegativeNotif($q, t('reg.err.site_not_created'))