Compare commits
10 Commits
718bcabea3
...
c390228ed9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c390228ed9 | ||
|
|
9c924071f4 | ||
|
|
2d1ed43312 | ||
|
|
11cf961ed8 | ||
|
|
cd9e645941 | ||
|
|
7bd236aa82 | ||
|
|
f96e0a1f22 | ||
|
|
45190ed7a5 | ||
|
|
79f2ca8382 | ||
|
|
550ed97a11 |
@@ -2,4 +2,4 @@ module.exports = {
|
|||||||
presets: [
|
presets: [
|
||||||
'@vue/cli-plugin-babel/preset'
|
'@vue/cli-plugin-babel/preset'
|
||||||
]
|
]
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
{
|
{
|
||||||
"development": {
|
"development": {
|
||||||
"username": "miriam_user",
|
"username": "miriamgemeinde",
|
||||||
"password": "qTCTTWwpEwy3vPDU",
|
"password": "hitomisan",
|
||||||
"database": "miriamgemeinde",
|
"database": "miriamgemeinde",
|
||||||
"host": "tsschulz.de",
|
"host": "localhost",
|
||||||
"dialect": "mysql"
|
"dialect": "mysql"
|
||||||
},
|
},
|
||||||
"test": {
|
"test": {
|
||||||
"username": "miriam_user",
|
"username": "miriam_user",
|
||||||
"password": "qTCTTWwpEwy3vPDU",
|
"password": "hitomisan",
|
||||||
"database": "miriamgemeinde",
|
"database": "miriamgemeinde",
|
||||||
"host": "tsschulz.de",
|
"host": "tsschulz.de",
|
||||||
"dialect": "mysql"
|
"dialect": "mysql"
|
||||||
},
|
},
|
||||||
"production": {
|
"production": {
|
||||||
"username": "miriam_user",
|
"username": "miriam_user",
|
||||||
"password": "qTCTTWwpEwy3vPDU",
|
"password": "hitomisan",
|
||||||
"database": "miriamgemeinde",
|
"database": "miriamgemeinde",
|
||||||
"host": "tsschulz.de",
|
"host": "tsschulz.de",
|
||||||
"dialect": "mysql"
|
"dialect": "mysql"
|
||||||
|
|||||||
25914
package-lock.json
generated
25914
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -26,7 +26,7 @@
|
|||||||
"@tiptap/extension-underline": "^2.4.0",
|
"@tiptap/extension-underline": "^2.4.0",
|
||||||
"@tiptap/starter-kit": "^2.4.0",
|
"@tiptap/starter-kit": "^2.4.0",
|
||||||
"@tiptap/vue-3": "^2.4.0",
|
"@tiptap/vue-3": "^2.4.0",
|
||||||
"@vue/cli": "^5.0.8",
|
"@vue/cli": "^4.2.2",
|
||||||
"axios": "^1.7.2",
|
"axios": "^1.7.2",
|
||||||
"bcryptjs": "^2.4.3",
|
"bcryptjs": "^2.4.3",
|
||||||
"body-parser": "^1.20.2",
|
"body-parser": "^1.20.2",
|
||||||
|
|||||||
19
src/axios.js
19
src/axios.js
@@ -2,20 +2,11 @@ import axios from 'axios';
|
|||||||
import store from './store';
|
import store from './store';
|
||||||
import router from './router';
|
import router from './router';
|
||||||
|
|
||||||
// Basis-URL für das Backend ermitteln
|
// Einheitliche Basis-URL:
|
||||||
let baseURL = process.env.VUE_APP_BACKEND_URL || '/api';
|
// - immer relativ zur aktuellen Origin
|
||||||
|
// - kein absoluter http/https-Host → verhindert Mixed-Content-Probleme
|
||||||
// Mixed-Content vermeiden: wenn die Seite über HTTPS läuft,
|
axios.defaults.baseURL = '/api';
|
||||||
// aber die Konfiguration "http://" verwendet, auf "https://" umschalten.
|
console.log('Axios baseURL:', axios.defaults.baseURL);
|
||||||
if (typeof window !== 'undefined') {
|
|
||||||
const isHttps = window.location.protocol === 'https:';
|
|
||||||
if (isHttps && baseURL.startsWith('http://')) {
|
|
||||||
baseURL = baseURL.replace(/^http:/, 'https:');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
axios.defaults.baseURL = baseURL;
|
|
||||||
console.log('Axios baseURL:', baseURL);
|
|
||||||
|
|
||||||
axios.interceptors.request.use(
|
axios.interceptors.request.use(
|
||||||
config => {
|
config => {
|
||||||
|
|||||||
@@ -11,22 +11,35 @@
|
|||||||
<div v-if="worship.neighborInvitation" class="neighborhood-invitation">Einladung zum Gottesdienst im
|
<div v-if="worship.neighborInvitation" class="neighborhood-invitation">Einladung zum Gottesdienst im
|
||||||
Nachbarschaftsraum:</div>
|
Nachbarschaftsraum:</div>
|
||||||
<h3>
|
<h3>
|
||||||
<span :class="worship.highlightTime ? 'highlight-time' : ''">{{ formatTime(worship.time)
|
<span
|
||||||
}}</span> -
|
:class="worship.highlightTime ? 'highlight-time' : ''"
|
||||||
{{ worship.title ? worship.title : `Gottesdienst in ${worship.eventPlace.name}` }}
|
>{{ formatTime(worship.time) }}</span> -
|
||||||
|
{{
|
||||||
|
worship.title
|
||||||
|
? worship.title
|
||||||
|
: (worship.eventPlace && worship.eventPlace.name
|
||||||
|
? `Gottesdienst in ${worship.eventPlace.name}`
|
||||||
|
: 'Gottesdienst')
|
||||||
|
}}
|
||||||
</h3>
|
</h3>
|
||||||
<div v-if="worship.organizer">Gestaltung: {{ worship.organizer }}</div>
|
<div v-if="worship.organizer">Gestaltung: {{ worship.organizer }}</div>
|
||||||
<div v-if="worship.sacristanService" class="internal-information">Küsterdienst: {{ worship.sacristanService }}</div>
|
<div v-if="worship.sacristanService" class="internal-information">Küsterdienst: {{ worship.sacristanService }}</div>
|
||||||
<div v-if="worship.collection">Kollekte: {{ worship.collection }}</div>
|
<div v-if="worship.collection">Kollekte: {{ worship.collection }}</div>
|
||||||
<div v-if="worship.organPlaying" class="internal-information">Orgelspiel: {{ worship.organPlaying }}</div>
|
<div v-if="worship.organPlaying" class="internal-information">Orgelspiel: {{ worship.organPlaying }}</div>
|
||||||
<div v-if="worship.address">{{ worship.address }}</div>
|
<div v-if="worship.address">{{ worship.address }}</div>
|
||||||
<div v-if="!worship.address && worship.eventPlace.id && worship.eventPlace.id">
|
<div
|
||||||
Adresse: {{ worship.eventPlace.name }}, {{ worship.eventPlace.street }}, {{
|
v-if="!worship.address && worship.eventPlace && worship.eventPlace.id"
|
||||||
worship.eventPlace.city }}
|
>
|
||||||
|
Adresse: {{ worship.eventPlace.name }}, {{ worship.eventPlace.street }}, {{ worship.eventPlace.city }}
|
||||||
</div>
|
</div>
|
||||||
<div v-if="worship.selfInformation" class="selfinformation">Bitte informieren Sie sich auch auf den
|
<div v-if="worship.selfInformation" class="selfinformation">
|
||||||
<a v-if="worship.eventPlace.website" :href="worship.eventPlace.website" target="_blank">Internetseiten dieser Gemeinde!</a><span
|
Bitte informieren Sie sich auch auf den
|
||||||
v-else>Internetseiten dieser Gemeinde!</span>
|
<a
|
||||||
|
v-if="worship.eventPlace && worship.eventPlace.website"
|
||||||
|
:href="worship.eventPlace.website"
|
||||||
|
target="_blank"
|
||||||
|
>Internetseiten dieser Gemeinde!</a>
|
||||||
|
<span v-else>Internetseiten dieser Gemeinde!</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -45,8 +45,13 @@ const router = createRouter({
|
|||||||
routes: []
|
routes: []
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Verhindert endlose Wiederholungen von fehlgeschlagenen Menü-Ladeversuchen
|
||||||
|
let menuDataInitialized = false;
|
||||||
|
|
||||||
router.beforeEach(async (to, from, next) => {
|
router.beforeEach(async (to, from, next) => {
|
||||||
if (!store.state.menuData.length) {
|
if (!menuDataInitialized) {
|
||||||
|
menuDataInitialized = true;
|
||||||
|
|
||||||
await store.dispatch('loadMenuData');
|
await store.dispatch('loadMenuData');
|
||||||
const routes = generateRoutesFromMenu(store.state.menuData);
|
const routes = generateRoutesFromMenu(store.state.menuData);
|
||||||
routes.forEach(route => router.addRoute(route));
|
routes.forEach(route => router.addRoute(route));
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { createStore } from 'vuex';
|
import { createStore } from 'vuex';
|
||||||
import axios from 'axios';
|
import axios from '../axios';
|
||||||
import router from '../router';
|
import router from '../router';
|
||||||
|
|
||||||
let user = [];
|
let user = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user