Compare commits

...

18 Commits

Author SHA1 Message Date
240f44df60 🚀Bumped version to v0.11.3
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-07 15:17:49 +02:00
677e65f44a chore(deps): pnpm@8.1.1 2023-04-07 15:17:27 +02:00
772eca64bb fix(Footer): darkmode colors in lightmode
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-07 15:15:26 +02:00
25d25401df fix: registration code white bg
close #50
2023-04-07 15:13:44 +02:00
cac5103d52 switched drone to kaniko with cache
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-29 20:20:06 +02:00
6aca13f0cb Pinned pnpm and lockfile 2023-03-29 20:17:33 +02:00
78fea1ea04 Switched dockerfile to pnpm with cache 2023-03-29 20:17:18 +02:00
fa51b31fe4 🚀Bumped version to v0.11.2
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-15 19:27:59 +01:00
b9624aa5ad Added footer to every page 2023-03-15 19:27:40 +01:00
09e48e771f Accept tos to accept privacy_policy 2023-03-15 19:22:35 +01:00
8364321a7c 🚀Bumped version to v0.11.1
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-18 17:27:22 +01:00
659fa77dca Profile: add "---" if no data set
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-18 17:26:54 +01:00
10c9127256 🚀Bumped version to v0.11.0
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-03 17:24:42 +01:00
a3a1e89aa1 pnpm migration
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-03 17:24:25 +01:00
5587175534 🚀Bumped version to v0.10.0
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-03 17:19:08 +01:00
8e2b355466 updated nginx config for cache busting
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-03 17:18:57 +01:00
eccce0795b text cleanups + footer
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-03 17:14:01 +01:00
54540be6e1 improved profile page padding + full width registration code for easier scanning
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-03 17:04:25 +01:00
14 changed files with 664 additions and 581 deletions

View File

@@ -14,10 +14,10 @@ get:
--- ---
kind: secret kind: secret
name: git_ssh name: npm_url
get: get:
path: odit-git-bot path: odit-npm-cache
name: sshkey name: url
--- ---
kind: pipeline kind: pipeline
@@ -25,69 +25,50 @@ type: kubernetes
name: build:dev name: build:dev
steps: steps:
- name: build dev - name: docker dev
image: plugins/docker image: registry.odit.services/library/drone-kaniko
depends_on: [clone] depends_on: [clone]
settings: settings:
username: username:
from_secret: docker_username from_secret: docker_username
password: password:
from_secret: docker_password from_secret: docker_password
repo: registry.odit.services/lfk/selfservice build_args:
- NPM_REGISTRY_URL:
from_secret: npm_url
repo: lfk/selfservice
tags: tags:
- dev - dev
cache: true
registry: registry.odit.services registry: registry.odit.services
mtu: 1000
trigger: trigger:
branch: branch:
- dev - dev
event: event:
- push - push
---
kind: pipeline
type: kubernetes
name: build:testing
steps:
- name: build testing
image: plugins/docker
depends_on: [clone]
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: registry.odit.services/lfk/selfservice
tags:
- testing
registry: registry.odit.services
mtu: 1000
trigger:
branch:
- bugfix/31-env_linking
event:
- push
--- ---
kind: pipeline kind: pipeline
type: kubernetes type: kubernetes
name: build:latest name: build:latest
steps: steps:
- name: build latest - name: docker latest
image: plugins/docker image: registry.odit.services/library/drone-kaniko
depends_on: [clone] depends_on: [clone]
settings: settings:
username: username:
from_secret: docker_username from_secret: docker_username
password: password:
from_secret: docker_password from_secret: docker_password
repo: registry.odit.services/lfk/selfservice build_args:
- NPM_REGISTRY_URL:
from_secret: npm_url
repo: lfk/selfservice
tags: tags:
- latest - latest
cache: true
registry: registry.odit.services registry: registry.odit.services
mtu: 1000
trigger: trigger:
branch: branch:
- main - main
@@ -99,19 +80,22 @@ kind: pipeline
type: kubernetes type: kubernetes
name: build:tags name: build:tags
steps: steps:
- name: build $DRONE_TAG - name: docker release
image: plugins/docker image: registry.odit.services/library/drone-kaniko
depends_on: [clone] depends_on: [clone]
settings: settings:
username: username:
from_secret: docker_username from_secret: docker_username
password: password:
from_secret: docker_password from_secret: docker_password
repo: registry.odit.services/lfk/selfservice build_args:
- NPM_REGISTRY_URL:
from_secret: npm_url
repo: lfk/selfservice
tags: tags:
- '${DRONE_TAG}' - "${DRONE_TAG}"
cache: true
registry: registry.odit.services registry: registry.odit.services
mtu: 1000
trigger: trigger:
event: event:
- tag - tag

View File

@@ -2,10 +2,53 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC. All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [0.11.3](https://git.odit.services/lfk/selfservice/compare/0.11.2...0.11.3)
- fix: registration code white bg [`#50`](https://git.odit.services/lfk/selfservice/issues/50)
- Pinned pnpm and lockfile [`6aca13f`](https://git.odit.services/lfk/selfservice/commit/6aca13f0cb1bc8fa43f0f09c554cec0758acd7a1)
- switched drone to kaniko with cache [`cac5103`](https://git.odit.services/lfk/selfservice/commit/cac5103d52427e777e4c3624ebb253ad7bd393d6)
- Switched dockerfile to pnpm with cache [`78fea1e`](https://git.odit.services/lfk/selfservice/commit/78fea1ea045a7281fe0a2841fc4d5f1505dcb3cf)
- chore(deps): pnpm@8.1.1 [`677e65f`](https://git.odit.services/lfk/selfservice/commit/677e65f44ae4bcc6f9af4732d813f337da0c51d2)
- fix(Footer): darkmode colors in lightmode [`772eca6`](https://git.odit.services/lfk/selfservice/commit/772eca64bb38ce1cf1ea1b58859dd744588a88e1)
#### [0.11.2](https://git.odit.services/lfk/selfservice/compare/0.11.1...0.11.2)
> 15 March 2023
- Added footer to every page [`b9624aa`](https://git.odit.services/lfk/selfservice/commit/b9624aa5ad57002852c84081fc710c2e977251bd)
- 🚀Bumped version to v0.11.2 [`fa51b31`](https://git.odit.services/lfk/selfservice/commit/fa51b31fe41d41b3ec9becad07ddab4cf73be051)
- Accept tos to accept privacy_policy [`09e48e7`](https://git.odit.services/lfk/selfservice/commit/09e48e771f4c0db4a7dbb898b05b347f1aad2292)
#### [0.11.1](https://git.odit.services/lfk/selfservice/compare/0.11.0...0.11.1)
> 18 February 2023
- Profile: add "---" if no data set [`659fa77`](https://git.odit.services/lfk/selfservice/commit/659fa77dca3b527d896d752386e91a167a1b8f4f)
- 🚀Bumped version to v0.11.1 [`8364321`](https://git.odit.services/lfk/selfservice/commit/8364321a7cb6a0037ee0c5055b028c4cf883fb10)
#### [0.11.0](https://git.odit.services/lfk/selfservice/compare/0.10.0...0.11.0)
> 3 February 2023
- pnpm migration [`a3a1e89`](https://git.odit.services/lfk/selfservice/commit/a3a1e89aa14798e1d180697f91809e282a229f23)
- 🚀Bumped version to v0.11.0 [`10c9127`](https://git.odit.services/lfk/selfservice/commit/10c9127256edf2cbad1dc6690d5f4e87c32f6396)
#### [0.10.0](https://git.odit.services/lfk/selfservice/compare/0.9.0...0.10.0)
> 3 February 2023
- text cleanups + footer [`eccce07`](https://git.odit.services/lfk/selfservice/commit/eccce0795b6960aa3a2e9368de5ae4bdf80997d7)
- updated nginx config for cache busting [`8e2b355`](https://git.odit.services/lfk/selfservice/commit/8e2b355466e9a37510be8bf03311d6b28e1a0d9f)
- improved profile page padding + full width registration code for easier scanning [`54540be`](https://git.odit.services/lfk/selfservice/commit/54540be6e12ed85afc96061b8548cd4ec6700eec)
- 🚀Bumped version to v0.10.0 [`5587175`](https://git.odit.services/lfk/selfservice/commit/5587175534188e05ab43d0eed9745484e01edb63)
#### [0.9.0](https://git.odit.services/lfk/selfservice/compare/0.8.3...0.9.0) #### [0.9.0](https://git.odit.services/lfk/selfservice/compare/0.8.3...0.9.0)
> 3 February 2023
- wip: error registration ui feedback [`9ac14e8`](https://git.odit.services/lfk/selfservice/commit/9ac14e8a5d740fb4cd87645e69b2cfde73e4acc7) - wip: error registration ui feedback [`9ac14e8`](https://git.odit.services/lfk/selfservice/commit/9ac14e8a5d740fb4cd87645e69b2cfde73e4acc7)
- wip: registration confirmation ui [`8928f84`](https://git.odit.services/lfk/selfservice/commit/8928f841dcd370daf28416adbf1adbe16fa4d76f) - wip: registration confirmation ui [`8928f84`](https://git.odit.services/lfk/selfservice/commit/8928f841dcd370daf28416adbf1adbe16fa4d76f)
- 🚀Bumped version to v0.9.0 [`3392a2e`](https://git.odit.services/lfk/selfservice/commit/3392a2e68edb8fcf2aa6dd4b962abbf6ac27a414)
#### [0.8.3](https://git.odit.services/lfk/selfservice/compare/0.8.2...0.8.3) #### [0.8.3](https://git.odit.services/lfk/selfservice/compare/0.8.2...0.8.3)

View File

@@ -1,10 +1,12 @@
FROM registry.odit.services/hub/library/node:15.9.0-alpine3.13 FROM registry.odit.services/hub/library/node:19.5.0-alpine3.17 as build
ARG NPM_REGISTRY_URL=https://registry.npmjs.org
WORKDIR /app WORKDIR /app
COPY . . COPY . .
RUN yarn RUN npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@8
RUN yarn build RUN pnpm i && pnpm build && pnpm postbuild
RUN yarn postbuild
# final image # final image
FROM registry.odit.services/library/nginx-brotli:3.15 FROM registry.odit.services/library/nginx-brotli:3.15 as final
COPY --from=0 /app/dist /usr/share/nginx/html COPY --from=build /app/dist /usr/share/nginx/html
COPY ./nginx.conf /etc/nginx/nginx.conf COPY ./nginx.conf /etc/nginx/nginx.conf

View File

@@ -7,15 +7,21 @@ http {
error_page 404 /index.html; error_page 404 /index.html;
root /usr/share/nginx/html; root /usr/share/nginx/html;
location / { location / {
rewrite /register/(.*) /$1 break; rewrite /register/(.*) /$1 break;
rewrite /profile/(.*) /$1 break; rewrite /profile/(.*) /$1 break;
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
add_header Last-Modified $date_gmt;
add_header Cache-Control 'private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
if_modified_since off;
expires off;
etag off;
} }
location ~* \.(?:ico|css|gif|jpe?g|png)$ { location ~* \.(?:ico|css|gif|jpe?g|png)$ {
rewrite /register/(.*) /$1 break; rewrite /register/(.*) /$1 break;
rewrite /profile/(.*) /$1 break; rewrite /profile/(.*) /$1 break;
expires 1y; expires 1y;
add_header Pragma public; add_header Pragma public;
@@ -35,24 +41,24 @@ http {
gzip_buffers 16 8k; gzip_buffers 16 8k;
gzip_http_version 1.1; gzip_http_version 1.1;
gzip_types application/javascript gzip_types application/javascript
application/rss+xml application/rss+xml
application/vnd.ms-fontobject application/vnd.ms-fontobject
application/x-font application/x-font
application/x-font-opentype application/x-font-opentype
application/x-font-otf application/x-font-otf
application/x-font-truetype application/x-font-truetype
application/x-font-ttf application/x-font-ttf
application/x-javascript application/x-javascript
application/xhtml+xml application/xhtml+xml
application/xml application/xml
font/opentype font/opentype
font/otf font/otf
font/ttf font/ttf
image/svg+xml image/svg+xml
image/x-icon image/x-icon
text/css text/css
text/javascript text/javascript
text/plain text/plain
text/xml; text/xml;
} }
} }

View File

@@ -1,12 +1,15 @@
{ {
"name": "@odit/lfk-selfservice", "name": "@odit/lfk-selfservice",
"version": "0.9.0", "version": "0.11.3",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vite build", "build": "vite build",
"release": "release-it", "release": "release-it",
"postbuild": "node env_fix.js" "postbuild": "node env_fix.js"
}, },
"engines": {
"pnpm": "8.1.1"
},
"dependencies": { "dependencies": {
"bwip-js": "3.2.2", "bwip-js": "3.2.2",
"marked": "2.0.3", "marked": "2.0.3",

1008
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
<template> <template>
<footer class="text-gray-400 bg-gray-900 body-font"> <footer>
<div class="container px-5 py-8 mx-auto flex items-center sm:flex-row flex-col"> <div class="container px-5 py-8 mx-auto flex items-center sm:flex-row flex-col">
<p class="text-sm text-gray-400 sm:ml-4 sm:pl-4 sm:py-2 sm:mt-0 mt-4"> <p class="text-sm text-gray-400 sm:ml-4 sm:pl-4 sm:py-2 sm:mt-0 mt-4">
Lauf für Kaya! Selfservice - Copyright © 2023 + proudly powered by Lauf für Kaya! Selfservice - Copyright © 2023 + proudly powered by

View File

@@ -5,7 +5,7 @@
"apartment_suite_etc": "Addresszeile 2", "apartment_suite_etc": "Addresszeile 2",
"cancel_keep_my_data": "Abbrechen, meine Daten behalten", "cancel_keep_my_data": "Abbrechen, meine Daten behalten",
"configuration_error": "Konfigurationsfehler", "configuration_error": "Konfigurationsfehler",
"confirm_delete_all_of_my_data": "Bestätigung, meine gesamten Daten löschen", "confirm_delete_all_of_my_data": "Bestätigen, meine Daten löschen",
"confirm_personal_data": "Hiermit bestätige ich die Vollständigkeit und Richtigkeit der oben genannten Angaben", "confirm_personal_data": "Hiermit bestätige ich die Vollständigkeit und Richtigkeit der oben genannten Angaben",
"current_total_amount_in_eur": "Aktueller Gesamtbetrag (in €)", "current_total_amount_in_eur": "Aktueller Gesamtbetrag (in €)",
"delete_all_of_my_data": "Meine gesamten Daten löschen", "delete_all_of_my_data": "Meine gesamten Daten löschen",

View File

@@ -9,15 +9,18 @@
<div class="mx-auto prose" v-html="content"></div> <div class="mx-auto prose" v-html="content"></div>
</div> </div>
</section> </section>
<Footer></Footer>
</template> </template>
<style src="../simple.css"> <style src="../simple.css">
</style> </style>
<script> <script>
import marked from "marked"; import marked from "marked";
import Footer from "@/components/Footer.vue";
export default { export default {
components: {Footer},
data() { data() {
return { return {
content: "" content: "",
} }
}, },
async beforeMount() { async beforeMount() {

View File

@@ -9,12 +9,15 @@
<div class="mx-auto prose" v-html="content"></div> <div class="mx-auto prose" v-html="content"></div>
</div> </div>
</section> </section>
<Footer></Footer>
</template> </template>
<style src="../simple.css"> <style src="../simple.css">
</style> </style>
<script> <script>
import marked from "marked"; import marked from "marked";
import Footer from "@/components/Footer.vue";
export default { export default {
components: {Footer},
data() { data() {
return { return {
content: "" content: ""

View File

@@ -150,6 +150,10 @@
py-2.5 py-2.5
px-5 px-5
rounded-md rounded-md
mb-1
md:mb-auto
w-full
md:w-auto
bg-blue-500 bg-blue-500
hover:bg-blue-600 hover:shadow-lg hover:bg-blue-600 hover:shadow-lg
" "
@@ -188,9 +192,11 @@
py-2.5 py-2.5
px-5 px-5
rounded-md rounded-md
w-full
md:w-auto
bg-red-600 bg-red-600
hover:bg-red-700 hover:shadow-lg hover:bg-red-700 hover:shadow-lg
ml-1 md:ml-1
" "
@click="delete_me" @click="delete_me"
> >
@@ -220,7 +226,7 @@
</div> </div>
</section> </section>
<div class="flex flex-wrap"> <div class="flex flex-wrap">
<div class="w-full p-4"> <div class="w-full">
<div class="flex flex-wrap flex-col w-full tabs"> <div class="flex flex-wrap flex-col w-full tabs">
<div class="flex lg:flex-wrap flex-row lg:space-x-2"> <div class="flex lg:flex-wrap flex-row lg:space-x-2">
<div class="flex-none"> <div class="flex-none">
@@ -282,7 +288,11 @@
<div class="w-full"> <div class="w-full">
<div class="form-element"> <div class="form-element">
<div class="text-lg">{{ $t("registrierungscode") }}</div> <div class="text-lg">{{ $t("registrierungscode") }}</div>
<img alt="Registrierungscode" :src="state.barcode" /> <img
class="w-full md:w-auto mb-2 bg-white p-2"
alt="Registrierungscode"
:src="state.barcode"
/>
<div class="text-lg">{{ $t("vorname") }}</div> <div class="text-lg">{{ $t("vorname") }}</div>
<p <p
class=" class="
@@ -301,7 +311,7 @@
duration-200 duration-200
ease-in-out ease-in-out
" "
v-text="state.firstname" v-text="state.firstname || '---'"
/> />
</div> </div>
<div class="form-element"> <div class="form-element">
@@ -323,7 +333,7 @@
duration-200 duration-200
ease-in-out ease-in-out
" "
v-text="state.middlename" v-text="state.middlename || '---'"
/> />
</div> </div>
<div class="form-element"> <div class="form-element">
@@ -345,7 +355,7 @@
duration-200 duration-200
ease-in-out ease-in-out
" "
v-text="state.lastname" v-text="state.lastname || '---'"
/> />
</div> </div>
<div class="form-element"> <div class="form-element">
@@ -367,7 +377,7 @@
duration-200 duration-200
ease-in-out ease-in-out
" "
v-text="state.email" v-text="state.email || '---'"
/> />
</div> </div>
<div class="form-element"> <div class="form-element">
@@ -389,7 +399,7 @@
duration-200 duration-200
ease-in-out ease-in-out
" "
v-text="state.phone" v-text="state.phone || '---'"
/> />
</div> </div>
</div> </div>
@@ -628,6 +638,8 @@
</div> </div>
</div> </div>
</div> </div>
<!-- -->
<Footer></Footer>
</div> </div>
</template> </template>
@@ -636,6 +648,7 @@ import { reactive } from "vue";
import { TYPE, useToast } from "vue-toastification"; import { TYPE, useToast } from "vue-toastification";
import axios from "redaxios"; import axios from "redaxios";
import bwipjs from "bwip-js"; import bwipjs from "bwip-js";
import Footer from "@/components/Footer.vue";
function textToBase64Barcode(text) { function textToBase64Barcode(text) {
const canvas = document.createElement("canvas"); const canvas = document.createElement("canvas");
@@ -647,7 +660,11 @@ function textToBase64Barcode(text) {
textxalign: "center", textxalign: "center",
backgroundcolor: "ffffff", backgroundcolor: "ffffff",
}; };
if (codeconfig.bcid === "code39" || codeconfig.bcid === "code128"|| codeconfig.bcid === "ean13") { if (
codeconfig.bcid === "code39" ||
codeconfig.bcid === "code128" ||
codeconfig.bcid === "ean13"
) {
codeconfig.height = 10; codeconfig.height = 10;
} }
bwipjs.toCanvas(canvas, codeconfig); bwipjs.toCanvas(canvas, codeconfig);

View File

@@ -68,6 +68,7 @@
</div> </div>
</div> </div>
</div> </div>
<Footer></Footer>
</template> </template>
<script setup> <script setup>
@@ -77,6 +78,7 @@ import isEmail from 'validator/es/lib/isEmail';
import isMobilePhone from 'validator/es/lib/isMobilePhone'; import isMobilePhone from 'validator/es/lib/isMobilePhone';
import isPostalCode from 'validator/es/lib/isPostalCode'; import isPostalCode from 'validator/es/lib/isPostalCode';
import { TYPE, useToast } from "vue-toastification"; import { TYPE, useToast } from "vue-toastification";
import Footer from "@/components/Footer.vue";
let user_email = ref(""); let user_email = ref("");
// //

View File

@@ -389,13 +389,13 @@
for="agb_accepted" for="agb_accepted"
class="font-medium text-gray-400 select-none" class="font-medium text-gray-400 select-none"
> >
{{ $t("i_accept", { tos: $t("tos") }) }} {{ $t("i_accept", { tos: $t("privacy_policy") }) }}
<a <a
target="_blank" target="_blank"
rel="noreferrer,noopener" rel="noreferrer,noopener"
href="https://lauf-fuer-kaya.de/datenschutz/" href="https://lauf-fuer-kaya.de/datenschutz/"
class="underline" class="underline"
>{{ $t("tos") }}</a >{{ $t("privacy_policy") }}</a
> >
{{ $t("i_accept_end") }} {{ $t("i_accept_end") }}
<span class="font-bold">*</span> <span class="font-bold">*</span>
@@ -453,6 +453,7 @@
</div> </div>
</div> </div>
</div> </div>
<Footer></Footer>
</template> </template>
<script setup> <script setup>
@@ -462,6 +463,7 @@ import isEmail from "validator/es/lib/isEmail";
import isMobilePhone from "validator/es/lib/isMobilePhone"; import isMobilePhone from "validator/es/lib/isMobilePhone";
import isPostalCode from "validator/es/lib/isPostalCode"; import isPostalCode from "validator/es/lib/isPostalCode";
import { TYPE, useToast } from "vue-toastification"; import { TYPE, useToast } from "vue-toastification";
import Footer from "@/components/Footer.vue";
const props = defineProps({ const props = defineProps({
token: String, token: String,

View File

@@ -11,9 +11,11 @@
</p> </p>
</div> </div>
</div> </div>
<Footer></Footer>
</template> </template>
<script setup> <script setup>
import Footer from "@/components/Footer.vue";
const props = defineProps({ const props = defineProps({
mail: String, mail: String,
}); });