RELEASE 0.3.0 #25

Merged
niggl merged 11 commits from dev into main 2021-03-30 16:20:05 +00:00
17 changed files with 281 additions and 138 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,32 @@
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.3.0](https://git.odit.services/lfk/selfservice/compare/0.2.0...0.3.0)
- Merge branch 'bugfix/23-broken-build' into dev [`#23`](https://git.odit.services/lfk/selfservice/issues/23)
- migrate to Tailwind JIT + views + router/ build fix [`15b60f6`](https://git.odit.services/lfk/selfservice/commit/15b60f60b5d4f3c4035460f25807c5f5f2f19578)
- 🐞 fix release config [`ae44d7e`](https://git.odit.services/lfk/selfservice/commit/ae44d7e2e86b9bee74d453301846d02b29c632f2)
- 🚀Bumped version to v0.1.2 [`5253fb1`](https://git.odit.services/lfk/selfservice/commit/5253fb18325ce9069e84180b30110ae97752ef20)
#### [0.2.0](https://git.odit.services/lfk/selfservice/compare/0.1.1...0.2.0)
> 27 March 2021
- 🚀Bumped version to v0.2.0 [`83924a9`](https://git.odit.services/lfk/selfservice/commit/83924a9416dc966a417b32fa19b5fb725181e5ee)
- 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,44 +1,50 @@
{ {
"name": "@odit/lfk-selfservice", "name": "@odit/lfk-selfservice",
"version": "0.1.1", "version": "0.3.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": {
"got": "^11.8.2", "marked": "2.0.1",
"marked": "^2.0.1", "redaxios": "0.4.1",
"redaxios": "^0.4.1", "toastify-js": "1.10.0",
"toastify-js": "^1.9.3", "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-phone-number-input": "^1.1.10", "vue-router": "4.0.5"
"vue-router": "4", },
"vue-toastification": "^2.0.0-rc.1" "devDependencies": {
}, "@tailwindcss/jit": "0.1.17",
"devDependencies": { "@tailwindcss/aspect-ratio": "0.2.0",
"@vitejs/plugin-vue": "^1.1.5", "@tailwindcss/forms": "0.3.2",
"@vue/compiler-sfc": "^3.0.7", "@tailwindcss/line-clamp": "0.2.0",
"autoprefixer": "^10.2.5", "@tailwindcss/typography": "0.4.0",
"postcss": "^8.2.8", "@vitejs/plugin-vue": "1.2.0",
"release-it": "^14.5.0", "@vue/compiler-sfc": "3.0.9",
"tailwindcss": "^2.0.4", "autoprefixer": "10.2.5",
"vite": "^2.1.2", "tailwindcss": "2.0.4",
"vite-plugin-windicss": "^0.9.11" "release-it": "14.5.0",
}, "vite": "2.1.3"
"release-it": { },
"git": { "release-it": {
"commit": true, "git": {
"requireCleanWorkingDir": false, "commit": true,
"commitMessage": "🚀Bumped version to v${version}", "requireCleanWorkingDir": false,
"requireBranch": "dev", "commitMessage": "🚀Bumped version to v${version}",
"push": false, "requireBranch": "dev",
"tag": false "push": false,
}, "tag": true,
"npm": { "tagName": null,
"publish": false "tagAnnotation": "v${version}"
} },
} "npm": {
} "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,8 +1,9 @@
<template> <template>
<router-view></router-view> <main>
<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

@ -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,10 +1,21 @@
import { createApp } from 'vue'; import { createApp } from 'vue';
import App from './App.vue'; import './tailwind.css';
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 { router } from './router'; import App from './App.vue';
import { routes } from './routes.js';
import { createRouter, createWebHistory } from 'vue-router';
import { i18n } from './language'; import { i18n } from './language';
import Toast from 'vue-toastification';
createApp(App).use(Toast).use(i18n).use(router).mount('#app'); const app = createApp(App);
const router = createRouter({
history: createWebHistory(),
routes
});
app.use(router);
app.use(i18n);
app.use(Toast);
app.mount('#app');

View File

@ -1,26 +0,0 @@
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
});

16
src/routes.js Normal file
View File

@ -0,0 +1,16 @@
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 }
];

3
src/tailwind.css Normal file
View File

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

View File

@ -25,6 +25,5 @@
</template> </template>
<script setup> <script setup>
import LoginForm from "./LoginForm.vue"; import Footer from "@/components/Footer.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,13 +165,10 @@
</template> </template>
<script setup> <script setup>
import { ref, reactive } from "vue"; import { 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: "",
@ -187,7 +184,7 @@ const props = defineProps({
token: String token: String
}) })
const accesstoken = atob(props.token); const accesstoken = atob(props.token);
axios.get(`${config.baseurl}api/runners/me/${accesstoken}`) axios.get(`${config.baseurl_selfservice}/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,9 +1,12 @@
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue'; import vue from '@vitejs/plugin-vue';
import WindiCSS from 'vite-plugin-windicss'; import path from 'path';
/** export default defineConfig({
* @type {import('vite').UserConfig} plugins: [ vue() ],
*/ resolve: {
export default { alias: {
plugins: [ vue(), WindiCSS() ] '@': path.resolve(__dirname, '/src')
}; }
}
});