Compare commits

..

5 Commits

Author SHA1 Message Date
83924a9416 🚀Bumped version to v0.2.0
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-27 19:44:28 +01:00
bd29d99120 Added image to docker-compose
All checks were successful
continuous-integration/drone/push Build is passing
ref #17
2021-03-27 19:38:36 +01:00
323ddc1c3d Now building latest from main [ci-skip]
All checks were successful
continuous-integration/drone/push Build is passing
ref #17
2021-03-27 19:34:03 +01:00
a174df19dd Added ci to build dev and tags
All checks were successful
continuous-integration/drone/push Build is passing
ref #17
2021-03-27 19:32:32 +01:00
eec6a358d8 Added releaseit config
ref #17
2021-03-27 19:29:47 +01:00
17 changed files with 264 additions and 143 deletions

109
.drone.yml Normal file
View File

@@ -0,0 +1,109 @@
---
kind: secret
name: docker_username
get:
path: odit-registry-builder
name: username
---
kind: secret
name: docker_password
get:
path: odit-registry-builder
name: password
---
kind: secret
name: git_ssh
get:
path: odit-git-bot
name: sshkey
---
kind: pipeline
type: kubernetes
name: build:dev
steps:
# - name: run full license export
# depends_on: ["clone"]
# image: node:alpine
# commands:
# - yarn
# - yarn licenses:export
# - name: push new licenses file to repo
# depends_on: ["run full license export"]
# image: appleboy/drone-git-push
# settings:
# branch: dev
# commit: true
# commit_message: new license file version [CI SKIP]
# author_email: bot@odit.services
# remote: git@git.odit.services:lfk/selfservice.git
# ssh_key:
# from_secret: git_ssh
- name: build dev
image: plugins/docker
depends_on: [clone]
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: registry.odit.services/lfk/selfservice
tags:
- dev
registry: registry.odit.services
mtu: 1000
trigger:
branch:
- dev
event:
- push
---
kind: pipeline
type: kubernetes
name: build:latest
steps:
- name: build latest
image: plugins/docker
depends_on: [clone]
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: registry.odit.services/lfk/selfservice
tags:
- latest
registry: registry.odit.services
mtu: 1000
trigger:
branch:
- main
event:
- push
---
kind: pipeline
type: kubernetes
name: build:tags
steps:
- name: build $DRONE_TAG
image: plugins/docker
depends_on: [clone]
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: registry.odit.services/lfk/selfservice
tags:
- '${DRONE_TAG}'
registry: registry.odit.services
mtu: 1000
trigger:
event:
- tag

View File

@@ -2,11 +2,22 @@
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.2.0](https://git.odit.services/lfk/selfservice/compare/0.1.1...0.2.0)
- Added ci to build dev and tags [`a174df1`](https://git.odit.services/lfk/selfservice/commit/a174df19ddbf65b0229af38947a9416b1bcd0703)
- Now building latest from main [ci-skip] [`323ddc1`](https://git.odit.services/lfk/selfservice/commit/323ddc1c3d91ffa74200ed9250b891d2fe4da78d)
- Added releaseit config [`eec6a35`](https://git.odit.services/lfk/selfservice/commit/eec6a358d899a40eb6bac92bb3af37b2d37a5d91)
- package dependency cleanup [`00f8d80`](https://git.odit.services/lfk/selfservice/commit/00f8d8023e3ca47eb650c8b1c5c550112ed0d503)
- Added image to docker-compose [`bd29d99`](https://git.odit.services/lfk/selfservice/commit/bd29d9912023539b26cdac36997d7cb29ec0d538)
#### [0.1.1](https://git.odit.services/lfk/selfservice/compare/0.1.0...0.1.1) #### [0.1.1](https://git.odit.services/lfk/selfservice/compare/0.1.0...0.1.1)
> 26 March 2021
- org registration - add team select [`#18`](https://git.odit.services/lfk/selfservice/issues/18) - org registration - add team select [`#18`](https://git.odit.services/lfk/selfservice/issues/18)
- added baseurl_selfservice config [`#22`](https://git.odit.services/lfk/selfservice/issues/22) - added baseurl_selfservice config [`#22`](https://git.odit.services/lfk/selfservice/issues/22)
- [tmp] vue i18n error [`7b0bc22`](https://git.odit.services/lfk/selfservice/commit/7b0bc22a7157ee4551ab69dd5be856abed90b60c) - [tmp] vue i18n error [`7b0bc22`](https://git.odit.services/lfk/selfservice/commit/7b0bc22a7157ee4551ab69dd5be856abed90b60c)
- ⏫ v0.1.1 changelog [`e2be86c`](https://git.odit.services/lfk/selfservice/commit/e2be86c5589f9ca9053d5bcdc61be3a642b94791)
- ⏫ version bump to 0.1.1 [`4d57812`](https://git.odit.services/lfk/selfservice/commit/4d57812c043e9078656818a33d241df220127a92) - ⏫ version bump to 0.1.1 [`4d57812`](https://git.odit.services/lfk/selfservice/commit/4d57812c043e9078656818a33d241df220127a92)
- Merge tag '0.1.0' into dev [`88996f8`](https://git.odit.services/lfk/selfservice/commit/88996f81d8990969048f00a7c175d2a30da2588b) - Merge tag '0.1.0' into dev [`88996f8`](https://git.odit.services/lfk/selfservice/commit/88996f81d8990969048f00a7c175d2a30da2588b)

View File

@@ -2,5 +2,8 @@ version: "3"
services: services:
httpd: httpd:
build: . build: .
#image: registry.odit.services/lfk/selfservice:dev
volumes:
- ./public/env.sample.js:/usr/share/nginx/html/env.js
ports: ports:
- 4050:80 - 4050:80

View File

@@ -1,45 +1,47 @@
{ {
"name": "@odit/lfk-selfservice", "name": "@odit/lfk-selfservice",
"version": "0.1.2", "version": "0.2.0",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vite build", "build": "vite build",
"release": "release-it --only-version" "release": "release-it --only-version"
}, },
"dependencies": { "dependencies": {
"marked": "2.0.1", "marked": "^2.0.1",
"redaxios": "0.4.1", "redaxios": "^0.4.1",
"toastify-js": "1.10.0", "toastify-js": "^1.10.0",
"validator": "13.5.2", "validator": "^13.5.2",
"vue-i18n": "9.0.0", "vue": "^3.0.5",
"vue-toastification": "2.0.0-rc.1", "vue-i18n": "^9.0.0",
"vue": "3.0.9", "vue-router": "4",
"vue-router": "4.0.5" "vue-toastification": "^2.0.0-rc.1"
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/jit": "0.1.17", "@vitejs/plugin-vue": "^1.1.5",
"@tailwindcss/aspect-ratio": "0.2.0", "@vue/compiler-sfc": "^3.0.7",
"@tailwindcss/forms": "0.3.2", "autoprefixer": "^10.2.5",
"@tailwindcss/line-clamp": "0.2.0", "postcss": "^8.2.8",
"@tailwindcss/typography": "0.4.0", "release-it": "^14.5.0",
"@vitejs/plugin-vue": "1.2.0", "tailwindcss": "^2.0.4",
"@vue/compiler-sfc": "3.0.9", "vite": "^2.1.3",
"autoprefixer": "10.2.5", "vite-plugin-windicss": "^0.10.2"
"tailwindcss": "2.0.4", },
"release-it": "14.5.0", "release-it": {
"vite": "2.1.3" "git": {
}, "commit": true,
"release-it": { "requireCleanWorkingDir": false,
"git": { "commitMessage": "🚀Bumped version to v${version}",
"commit": true, "requireBranch": "dev",
"requireCleanWorkingDir": false, "push": false,
"commitMessage": "🚀Bumped version to v${version}", "tag": true,
"requireBranch": "dev", "tagName": null,
"push": false, "tagAnnotation": "v${version}"
"tag": false },
}, "npm": {
"npm": { "publish": false
"publish": false },
} "hooks": {
} "after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node order_i18n.js && git add src/locales"
}
}
} }

View File

@@ -1,9 +1,8 @@
<template> <template>
<main> <router-view></router-view>
<router-view></router-view>
</main>
</template> </template>
<script setup> <script setup>
console.log(config.baseurl_selfservice);
config.baseurl_selfservice = (config.baseurl_selfservice || "/selfservice"); config.baseurl_selfservice = (config.baseurl_selfservice || "/selfservice");
</script> </script>

View File

@@ -25,5 +25,6 @@
</template> </template>
<script setup> <script setup>
import Footer from "@/components/Footer.vue"; import LoginForm from "./LoginForm.vue";
import Footer from "./Footer.vue";
</script> </script>

View File

@@ -10,7 +10,7 @@
</div> </div>
</section> </section>
</template> </template>
<style src="../simple.css"> <style src="./simple.css">
</style> </style>
<script> <script>
import marked from "marked"; import marked from "marked";

View File

@@ -10,7 +10,7 @@
</div> </div>
</section> </section>
</template> </template>
<style src="../simple.css"> <style src="./simple.css">
</style> </style>
<script> <script>
import marked from "marked"; import marked from "marked";

View File

@@ -165,10 +165,13 @@
</template> </template>
<script setup> <script setup>
import { reactive } from "vue"; import { ref, reactive } from "vue";
import { useToast } from "vue-toastification"; import { useToast } from "vue-toastification";
import axios from "redaxios"; import axios from "redaxios";
// import isEmail from 'validator/es/lib/isEmail';
// import isMobilePhone from 'validator/es/lib/isMobilePhone';
// import isPostalCode from 'validator/es/lib/isPostalCode';
//
const state = reactive({ const state = reactive({
phone: "", phone: "",
email: "", email: "",
@@ -184,7 +187,7 @@ const props = defineProps({
token: String token: String
}) })
const accesstoken = atob(props.token); const accesstoken = atob(props.token);
axios.get(`${config.baseurl_selfservice}/api/runners/me/${accesstoken}`) axios.get(`${config.baseurl}api/runners/me/${accesstoken}`)
.then(({ data }) => { .then(({ data }) => {
state.phone = data.phone; state.phone = data.phone;
state.email = data.email; state.email = data.email;

View File

@@ -261,7 +261,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 { useToast } from "vue-toastification"; import { useToast } from "vue-toastification";
// import { router } from '../router'; import { router } from '../router';
import { i18n } from '../language'; import { i18n } from '../language';
const props = defineProps({ const props = defineProps({
@@ -328,7 +328,7 @@ function login() {
axios.post(url, postdata) axios.post(url, postdata)
.then(({ data }) => { .then(({ data }) => {
const token = btoa(data.token); const token = btoa(data.token);
// router.push(`${config.baseurl_selfservice}/profile/${token}`); router.push(`${config.baseurl_selfservice}/profile/${token}`);
}) })
.catch((error) => { .catch((error) => {
console.log(error); console.log(error);

View File

@@ -1,43 +1,43 @@
{ {
"already_have_an_account": "Already have an account?", "already_have_an_account": "Already have an account?",
"apartment_suite_etc": "Apartment, suite, etc.", "apartment_suite_etc": "Apartment, suite, etc.",
"configuration_error": "Configuration error", "configuration_error": "Configuration error",
"confirm_personal_data": "I hereby confirm that the above information is complete and correct", "confirm_personal_data": "I hereby confirm that the above information is complete and correct",
"distance": "Distance", "distance": "Distance",
"download_certificate": "Download certificate", "download_certificate": "Download certificate",
"e_mail_adress": "mail address", "e_mail_adress": "mail address",
"go_to_login": "Go To Login", "go_to_login": "Go To Login",
"i_accept": "I have read and accepted the ", "i_accept": "I have read and accepted the ",
"i_accept_end": "", "i_accept_end": "",
"if_you_are_the_system_administrator_please_refer_to_the_official_product_documentation_readme_for_configuration_guidance": "If you are the system administrator, please refer to the official product documentation/ README for configuration guidance.", "if_you_are_the_system_administrator_please_refer_to_the_official_product_documentation_readme_for_configuration_guidance": "If you are the system administrator, please refer to the official product documentation/ README for configuration guidance.",
"imprint": "Imprint", "imprint": "Imprint",
"lap_time": "Lap time", "lap_time": "Lap time",
"lap_times": "Lap times", "lap_times": "Lap times",
"main_page_text": "Here you can register for the Lauf Für Kaya! or manage your runner profile.", "main_page_text": "Here you can register for the Lauf Für Kaya! or manage your runner profile.",
"mittelname": "Middlename", "mittelname": "Middlename",
"nachname": "Lastname", "nachname": "Lastname",
"no_laps_scans_were_recorded_yet": "No laps/ scans were recorded yet...", "no_laps_scans_were_recorded_yet": "No laps/ scans were recorded yet...",
"ort": "City", "organization": "Organization",
"phone_number": "Phone Number", "ort": "City",
"please_provide_a_valid_zipcode": "Please provide a valid zipcode...", "phone_number": "Phone Number",
"please_provide_valid_mail": "Please provide a valid mail address.", "please_provide_a_valid_zipcode": "Please provide a valid zipcode...",
"plz": "zipcode", "please_provide_valid_mail": "Please provide a valid mail address.",
"privacy_policy": "Privacy Policy", "plz": "zipcode",
"profile": "Profile", "privacy_policy": "Privacy Policy",
"provide_address": "Provide a postal address?", "profile": "Profile",
"register": { "provide_address": "Provide a postal address?",
"register_now": "Register now for Lauf für Kaya! 2021." "register": {
}, "register_now": "Register now for Lauf für Kaya! 2021."
"register_now": "Register now!", },
"registrieren": "Register Now", "register_now": "Register now!",
"save_changes": "Save changes", "registrieren": "Register Now",
"sponsoring": "Sponsoring", "save_changes": "Save changes",
"strasse": "Street/ Block", "sponsoring": "Sponsoring",
"the_system_is_not_properly_configured_please_contact_the_system_administrator_for_help": "The system is not properly configured. Please contact the system administrator for help.", "strasse": "Street/ Block",
"this_is_not_a_valid_international_phone_number": "This is not a valid international phone number", "the_system_is_not_properly_configured_please_contact_the_system_administrator_for_help": "The system is not properly configured. Please contact the system administrator for help.",
"tos": "Terms of Service", "this_is_not_a_valid_international_phone_number": "This is not a valid international phone number",
"view_my_data": "View my data", "tos": "Terms of Service",
"vorname": "Firstname", "view_my_data": "View my data",
"organization": "Organization", "vorname": "Firstname",
"you_have_been_registered": "You have been registered!" "you_have_been_registered": "You have been registered!"
} }

View File

@@ -1,21 +1,10 @@
import { createApp } from 'vue'; import { createApp } from 'vue';
import './tailwind.css'; import App from './App.vue';
import Toast from 'vue-toastification';
import 'windi.css';
import 'toastify-js/src/toastify.css'; import 'toastify-js/src/toastify.css';
import 'vue-toastification/dist/index.css'; import 'vue-toastification/dist/index.css';
import App from './App.vue'; import { router } from './router';
import { routes } from './routes.js';
import { createRouter, createWebHistory } from 'vue-router';
import { i18n } from './language'; import { i18n } from './language';
import Toast from 'vue-toastification';
const app = createApp(App); createApp(App).use(Toast).use(i18n).use(router).mount('#app');
const router = createRouter({
history: createWebHistory(),
routes
});
app.use(router);
app.use(i18n);
app.use(Toast);
app.mount('#app');

26
src/router.js Normal file
View File

@@ -0,0 +1,26 @@
import { createWebHistory, createRouter } from 'vue-router';
// ------------
const EnvError = import('./components/EnvError.vue');
const Home = import('./components/Home.vue');
const Imprint = import('./components/Imprint.vue');
const Privacy = import('./components/Privacy.vue');
const Register = () => import('./components/Register.vue');
const Profile = () => import('./components/Profile.vue');
//
let routes = [ { path: '/:pathMatch(.*)*', component: EnvError } ];
if (typeof config !== 'undefined') {
if (config.baseurl && config.documentserver_key) {
routes = [
{ path: '/', component: Home },
{ path: '/imprint', component: Imprint },
{ path: '/privacy', component: Privacy },
{ path: '/register', component: Register },
{ path: '/register/:token', component: Register, props: true },
{ path: '/profile/:token', component: Profile, props: true }
];
}
}
export const router = createRouter({
history: createWebHistory(),
routes
});

View File

@@ -1,16 +0,0 @@
import EnvError from './components/EnvError.vue';
import Home from './views/Home.vue';
import Imprint from './views/Imprint.vue';
import Privacy from './views/Privacy.vue';
import Register from './views/Register.vue';
import Profile from './views/Profile.vue';
/** @type {import('vue-router').RouterOptions['routes']} */
export const routes = [
{ path: '/', component: Home },
{ path: '/imprint', component: Imprint },
{ path: '/privacy', component: Privacy },
{ path: '/register', component: Register },
{ path: '/register/:token', component: Register, props: true },
{ path: '/profile/:token', component: Profile, props: true }
];

View File

@@ -1,3 +0,0 @@
@import 'tailwindcss/base';
@import 'tailwindcss/components';
@import 'tailwindcss/utilities';

View File

@@ -1,12 +1,9 @@
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue'; import vue from '@vitejs/plugin-vue';
import path from 'path'; import WindiCSS from 'vite-plugin-windicss';
export default defineConfig({ /**
plugins: [ vue() ], * @type {import('vite').UserConfig}
resolve: { */
alias: { export default {
'@': path.resolve(__dirname, '/src') plugins: [ vue(), WindiCSS() ]
} };
}
});