From d1cd8fe7242693874a1cb1fdac5e05073b71250b Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 24 Aug 2021 17:17:23 +0200 Subject: [PATCH 01/31] login response is JWT as string --- backend/src/graphql/resolvers/UserResolver.ts | 22 +++++++---------- backend/src/index.ts | 1 - backend/src/jwt/decode.ts | 24 +++++++++++++++++++ backend/src/jwt/encode.ts | 18 ++++++++++++++ 4 files changed, 51 insertions(+), 14 deletions(-) create mode 100644 backend/src/jwt/decode.ts create mode 100644 backend/src/jwt/encode.ts diff --git a/backend/src/graphql/resolvers/UserResolver.ts b/backend/src/graphql/resolvers/UserResolver.ts index cad1642f1..8e3dbf841 100644 --- a/backend/src/graphql/resolvers/UserResolver.ts +++ b/backend/src/graphql/resolvers/UserResolver.ts @@ -2,7 +2,7 @@ import { Resolver, Query, Args, Arg } from 'type-graphql' import CONFIG from '../../config' import { CheckUsernameResponse } from '../models/CheckUsernameResponse' -import { LoginResponse } from '../models/LoginResponse' +import { User } from '../models/User' import { LoginViaVerificationCode } from '../models/LoginViaVerificationCode' import { SendPasswordResetEmailResponse } from '../models/SendPasswordResetEmailResponse' import { UpdateUserInfosResponse } from '../models/UpdateUserInfosResponse' @@ -14,11 +14,12 @@ import { UpdateUserInfosArgs, } from '../inputs/LoginUserInput' import { apiPost, apiGet } from '../../apis/loginAPI' +import encode from '../../jwt/encode' @Resolver() export class UserResolver { - @Query(() => LoginResponse) - async login(@Args() { email, password }: UnsecureLoginArgs): Promise { + @Query(() => String) + async login(@Args() { email, password }: UnsecureLoginArgs): Promise { email = email.trim().toLowerCase() const result = await apiPost(CONFIG.LOGIN_API_URL + 'unsecureLogin', { email, password }) @@ -28,20 +29,15 @@ export class UserResolver { } // temporary solution until we have JWT implemented - return new LoginResponse(result.data) + // return new LoginResponse(result.data) // create and return the json web token // The expire doesn't help us here. The client needs to track when the token expires on its own, // since every action prolongs the time the session is valid. - /* - return jwt.sign( - { result, role: 'todo' }, - CONFIG.JWT_SECRET, // * , { expiresIn: CONFIG.JWT_EXPIRES_IN } , - ) - */ - // return (await apiPost(CONFIG.LOGIN_API_URL + 'unsecureLogin', login)).result.data - // const loginResult: LoginResult = await loginAPI.login(data) - // return loginResult.user ? loginResult.user : new User() + const data = result.data + const sessionId = data.session_id + delete data.session_id + return encode({ sessionId, user: new User(data.user) }) } @Query(() => LoginViaVerificationCode) diff --git a/backend/src/index.ts b/backend/src/index.ts index 981731c67..6cac3279d 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -8,7 +8,6 @@ import connection from './database/connection' import CONFIG from './config' // TODO move to extern -// import { BookResolver } from './graphql/resolvers/BookResolver' import { UserResolver } from './graphql/resolvers/UserResolver' import { BalanceResolver } from './graphql/resolvers/BalanceResolver' import { GdtResolver } from './graphql/resolvers/GdtResolver' diff --git a/backend/src/jwt/decode.ts b/backend/src/jwt/decode.ts new file mode 100644 index 000000000..3c0b33dbe --- /dev/null +++ b/backend/src/jwt/decode.ts @@ -0,0 +1,24 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + +import jwt from 'jsonwebtoken' +import '../config' + +export default async (authorizationHeader: string): any => { + if (!authorizationHeader) return null + const token = authorizationHeader.replace('Bearer ', '') + let sessionId = null + let email = null + try { + const decoded = await jwt.verify(token, CONFIG.JWT_SECRET) + sessionId = decoded.sub + email = decoded.email + } catch (err) { + return null + } + return { + token, + sessionId, + email, + } +} diff --git a/backend/src/jwt/encode.ts b/backend/src/jwt/encode.ts new file mode 100644 index 000000000..477644dc7 --- /dev/null +++ b/backend/src/jwt/encode.ts @@ -0,0 +1,18 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + +import jwt from 'jsonwebtoken' +import CONFIG from '../config/' + +// Generate an Access Token +export default function encode(data: any): string { + const { user, sessionId } = data + const { email, language, firstName, lastName } = user + const token = jwt.sign({ email, language, firstName, lastName, sessionId }, CONFIG.JWT_SECRET, { + expiresIn: CONFIG.JWT_EXPIRES_IN, + // issuer: CONFIG.GRAPHQL_URI, + // audience: CONFIG.CLIENT_URI, + subject: sessionId.toString(), + }) + return token +} From 088f61c6ac70ddab8c51cb878e4beabd1cdbaced Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 24 Aug 2021 17:18:19 +0200 Subject: [PATCH 02/31] remove model for LoginResponse --- backend/src/graphql/models/LoginResponse.ts | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 backend/src/graphql/models/LoginResponse.ts diff --git a/backend/src/graphql/models/LoginResponse.ts b/backend/src/graphql/models/LoginResponse.ts deleted file mode 100644 index 258784b75..000000000 --- a/backend/src/graphql/models/LoginResponse.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -import { ObjectType, Field } from 'type-graphql' -import { User } from './User' - -// temporaray solution until we have JWT implemented - -@ObjectType() -export class LoginResponse { - constructor(json: any) { - this.sessionId = json.session_id - this.user = new User(json.user) - } - - @Field(() => Number) - sessionId: number - - @Field(() => User) - user: User -} From 7610ad08b64b43a27bc364cd54c3be63b0bbba9b Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 24 Aug 2021 21:45:06 +0200 Subject: [PATCH 03/31] login expects JWT --- frontend/package.json | 1 + frontend/src/graphql/queries.js | 12 +--------- frontend/src/store/store.js | 23 ++++++++++++------- .../src/views/Layout/DashboardLayout_gdd.vue | 3 +++ frontend/yarn.lock | 12 ++++++++++ 5 files changed, 32 insertions(+), 19 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 4bc621916..59b34cc9d 100755 --- a/frontend/package.json +++ b/frontend/package.json @@ -72,6 +72,7 @@ "vue-good-table": "^2.21.3", "vue-i18n": "^8.22.4", "vue-jest": "^3.0.7", + "vue-jwt-decode": "^0.1.0", "vue-loading-overlay": "^3.4.2", "vue-moment": "^4.1.0", "vue-qrcode": "^0.3.5", diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index 3afe807f4..c025584f0 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -2,17 +2,7 @@ import gql from 'graphql-tag' export const login = gql` query($email: String!, $password: String!) { - login(email: $email, password: $password) { - sessionId - user { - email - firstName - lastName - language - username - description - } - } + login(email: $email, password: $password) } ` diff --git a/frontend/src/store/store.js b/frontend/src/store/store.js index 03be5e75c..de3589521 100644 --- a/frontend/src/store/store.js +++ b/frontend/src/store/store.js @@ -1,6 +1,8 @@ import Vue from 'vue' import Vuex from 'vuex' import createPersistedState from 'vuex-persistedstate' +import VueJwtDecode from 'vue-jwt-decode' + Vue.use(Vuex) export const mutations = { @@ -25,17 +27,22 @@ export const mutations = { description: (state, description) => { state.description = description }, + token: (state, token) => { + state.token = token + }, } export const actions = { - login: ({ dispatch, commit }, data) => { - commit('sessionId', data.sessionId) - commit('email', data.user.email) - commit('language', data.user.language) - commit('username', data.user.username) - commit('firstName', data.user.firstName) - commit('lastName', data.user.lastName) - commit('description', data.user.description) + login: ({ dispatch, commit }, token) => { + const decoded = VueJwtDecode.decode(token) + commit('sessionId', decoded.sessionId) + commit('email', decoded.email) + commit('language', decoded.language) + commit('username', decoded.username) + commit('firstName', decoded.firstName) + commit('lastName', decoded.lastName) + commit('description', decoded.description) + commit('token', token) }, logout: ({ commit, state }) => { commit('sessionId', null) diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.vue b/frontend/src/views/Layout/DashboardLayout_gdd.vue index 4081f4ceb..d12f3447c 100755 --- a/frontend/src/views/Layout/DashboardLayout_gdd.vue +++ b/frontend/src/views/Layout/DashboardLayout_gdd.vue @@ -107,6 +107,7 @@ export default { }, async updateTransactions(pagination) { this.pending = true + console.log('Session ID', this.$store.state.sessionId) this.$apollo .query({ query: transactionsQuery, @@ -118,9 +119,11 @@ export default { fetchPolicy: 'network-only', }) .then((result) => { + console.log(result) const { data: { transactionList }, } = result + console.log(transactionList) this.GdtBalance = Number(transactionList.gdtSum) this.transactions = transactionList.transactions this.balance = Number(transactionList.decay) diff --git a/frontend/yarn.lock b/frontend/yarn.lock index eff78ada1..c910ea9de 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -13576,6 +13576,13 @@ vue-jest@^3.0.5, vue-jest@^3.0.7: tsconfig "^7.0.0" vue-template-es2015-compiler "^1.6.0" +vue-jwt-decode@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/vue-jwt-decode/-/vue-jwt-decode-0.1.0.tgz#f9caf7b9030d5459cc567b1c3117d9d1f291458f" + integrity sha512-4iP0NzYHkAF7G13tYPc/nudk4oNpB8GCVZupc7lekxXok1XKEgefNaGTpDT14g7RKe5H9GaMphPduDj4UVfZwQ== + dependencies: + vue "^2.3.3" + vue-loader@^15.7.0: version "15.9.6" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.6.tgz#f4bb9ae20c3a8370af3ecf09b8126d38ffdb6b8b" @@ -13655,6 +13662,11 @@ vue@^2.2.6, vue@^2.5.17, vue@^2.6.11: resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123" integrity sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg== +vue@^2.3.3: + version "2.6.14" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" + integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== + vuex-persistedstate@^4.0.0-beta.3: version "4.0.0-beta.3" resolved "https://registry.yarnpkg.com/vuex-persistedstate/-/vuex-persistedstate-4.0.0-beta.3.tgz#89dd712de72d28e85cc95467d066002c1405f277" From 8ec55b0a43c44c197f95d0973be6a725085aff8b Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 26 Aug 2021 21:41:29 +0200 Subject: [PATCH 04/31] Authorization Bearer in Header --- frontend/src/main.js | 16 +++++++++++++++- frontend/src/store/store.js | 6 ++++-- .../src/views/Layout/DashboardLayout_gdd.vue | 3 --- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/frontend/src/main.js b/frontend/src/main.js index 31ccd8de7..e534743c3 100755 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -3,7 +3,7 @@ import DashboardPlugin from './plugins/dashboard-plugin' import App from './App.vue' import i18n from './i18n.js' import { loadAllRules } from './validation-rules' -import ApolloClient from 'apollo-boost' +import { ApolloClient, ApolloLink, InMemoryCache, HttpLink } from 'apollo-boost' import VueApollo from 'vue-apollo' import CONFIG from './config' @@ -11,7 +11,21 @@ import { store } from './store/store' import router from './routes/router' +const httpLink = new HttpLink({ uri: CONFIG.GRAPHQL_URI }) + +const authLink = new ApolloLink((operation, forward) => { + const token = store.state.token + operation.setContext({ + headers: { + Authorization: token && token.length > 0 ? `Bearer ${token}` : '', + }, + }) + return forward(operation) +}) + const apolloClient = new ApolloClient({ + link: authLink.concat(httpLink), + cache: new InMemoryCache(), uri: CONFIG.GRAPHQL_URI, }) diff --git a/frontend/src/store/store.js b/frontend/src/store/store.js index de3589521..8e7f5ff1b 100644 --- a/frontend/src/store/store.js +++ b/frontend/src/store/store.js @@ -51,14 +51,15 @@ export const actions = { commit('firstName', '') commit('lastName', '') commit('description', '') - sessionStorage.clear() + commit('token', null) + localStorage.clear() }, } export const store = new Vuex.Store({ plugins: [ createPersistedState({ - storage: window.sessionStorage, + storage: window.localStorage, }), ], state: { @@ -69,6 +70,7 @@ export const store = new Vuex.Store({ lastName: '', username: '', description: '', + token: null, }, getters: {}, // Syncronous mutation of the state diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.vue b/frontend/src/views/Layout/DashboardLayout_gdd.vue index d12f3447c..4081f4ceb 100755 --- a/frontend/src/views/Layout/DashboardLayout_gdd.vue +++ b/frontend/src/views/Layout/DashboardLayout_gdd.vue @@ -107,7 +107,6 @@ export default { }, async updateTransactions(pagination) { this.pending = true - console.log('Session ID', this.$store.state.sessionId) this.$apollo .query({ query: transactionsQuery, @@ -119,11 +118,9 @@ export default { fetchPolicy: 'network-only', }) .then((result) => { - console.log(result) const { data: { transactionList }, } = result - console.log(transactionList) this.GdtBalance = Number(transactionList.gdtSum) this.transactions = transactionList.transactions this.balance = Number(transactionList.decay) From 7eec6faaceac2a957c8f9ce29f0b1e0737a397c2 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 26 Aug 2021 22:49:33 +0200 Subject: [PATCH 05/31] authorization with JWT seems to work --- backend/src/auth/auth.ts | 13 +++++++++++++ .../graphql/resolvers/TransactionResolver.ts | 4 +++- backend/src/index.ts | 19 ++++++++++++++++++- backend/src/jwt/decode.ts | 13 ++++++------- 4 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 backend/src/auth/auth.ts diff --git a/backend/src/auth/auth.ts b/backend/src/auth/auth.ts new file mode 100644 index 000000000..12ab24feb --- /dev/null +++ b/backend/src/auth/auth.ts @@ -0,0 +1,13 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import { AuthChecker } from 'type-graphql' +import decode from '../jwt/decode' + +/* eslint-disable-next-line @typescript-eslint/no-unused-vars */ +export const isAuthorized: AuthChecker = ({ root, args, context, info }, roles) => { + if (context.token) { + const decoded = decode(context.token) + if (decoded.sessionId && decoded.sessionId !== 0) return true + } + return false +} diff --git a/backend/src/graphql/resolvers/TransactionResolver.ts b/backend/src/graphql/resolvers/TransactionResolver.ts index 607b09691..305cf44d7 100644 --- a/backend/src/graphql/resolvers/TransactionResolver.ts +++ b/backend/src/graphql/resolvers/TransactionResolver.ts @@ -1,4 +1,4 @@ -import { Resolver, Query, Args } from 'type-graphql' +import { Resolver, Query, Args, Authorized } from 'type-graphql' import CONFIG from '../../config' import { TransactionList } from '../models/Transaction' import { TransactionListInput, TransactionSendArgs } from '../inputs/TransactionInput' @@ -6,6 +6,7 @@ import { apiGet, apiPost } from '../../apis/loginAPI' @Resolver() export class TransactionResolver { + @Authorized() @Query(() => TransactionList) async transactionList( @Args() { sessionId, firstPage = 1, items = 25, order = 'DESC' }: TransactionListInput, @@ -17,6 +18,7 @@ export class TransactionResolver { return new TransactionList(result.data) } + @Authorized() @Query(() => String) async sendCoins( @Args() { sessionId, email, amount, memo }: TransactionSendArgs, diff --git a/backend/src/index.ts b/backend/src/index.ts index 865506b2f..067403508 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,3 +1,5 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + import 'reflect-metadata' import express from 'express' import { buildSchema } from 'type-graphql' @@ -13,11 +15,25 @@ import { BalanceResolver } from './graphql/resolvers/BalanceResolver' import { GdtResolver } from './graphql/resolvers/GdtResolver' import { TransactionResolver } from './graphql/resolvers/TransactionResolver' +import { isAuthorized } from './auth/auth' + // TODO implement // import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity"; const DB_VERSION = '0001-init_db' +const context = (req: any) => { + const authorization = req.req.headers.authorization + let token = null + if (authorization) { + token = req.req.headers.authorization.replace(/^Bearer /, '') + } + const context = { + token, + } + return context +} + async function main() { // check for correct database version const con = await connection() @@ -33,6 +49,7 @@ async function main() { // const connection = await createConnection() const schema = await buildSchema({ resolvers: [UserResolver, BalanceResolver, TransactionResolver, GdtResolver], + authChecker: isAuthorized, }) // Graphiql interface @@ -45,7 +62,7 @@ async function main() { const server = express() // Apollo Server - const apollo = new ApolloServer({ schema, playground }) + const apollo = new ApolloServer({ schema, playground, context }) apollo.applyMiddleware({ app: server }) // Start Server diff --git a/backend/src/jwt/decode.ts b/backend/src/jwt/decode.ts index 3c0b33dbe..40c3575e8 100644 --- a/backend/src/jwt/decode.ts +++ b/backend/src/jwt/decode.ts @@ -2,17 +2,16 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import jwt from 'jsonwebtoken' -import '../config' +import CONFIG from '../config/' -export default async (authorizationHeader: string): any => { - if (!authorizationHeader) return null - const token = authorizationHeader.replace('Bearer ', '') +export default (token: string): any => { + if (!token) return null let sessionId = null - let email = null + const email = null try { - const decoded = await jwt.verify(token, CONFIG.JWT_SECRET) + const decoded = jwt.verify(token, CONFIG.JWT_SECRET) sessionId = decoded.sub - email = decoded.email + // email = decoded.email } catch (err) { return null } From ad790ae875adab67bf17eef18994607f7ccdb0c4 Mon Sep 17 00:00:00 2001 From: ogerly Date: Mon, 30 Aug 2021 09:31:00 +0200 Subject: [PATCH 06/31] select language during registration --- frontend/src/locales/de.json | 1 + frontend/src/locales/en.json | 1 + frontend/src/views/Pages/Register.spec.js | 4 ++++ frontend/src/views/Pages/Register.vue | 29 ++++++++++++++++++++++- 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 5db4bc337..ae1822396 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -18,6 +18,7 @@ "de": "Deutsch", "en": "English" }, + "select_language": "Bitte wähle eine Sprache für die App und Newsletter", "decay": { "decay": "Vergänglichkeit", "decay_since_last_transaction":"Vergänglichkeit seit der letzten Transaktion", diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 323f96b4d..4bd04116d 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -18,6 +18,7 @@ "de": "Deutsch", "en": "English" }, + "select_language": "Please choose a language for the app and newsletter", "decay": { "decay": "Decay", "decay_since_last_transaction":"Decay since the last transaction", diff --git a/frontend/src/views/Pages/Register.spec.js b/frontend/src/views/Pages/Register.spec.js index 34a7390c5..b275b1579 100644 --- a/frontend/src/views/Pages/Register.spec.js +++ b/frontend/src/views/Pages/Register.spec.js @@ -80,6 +80,9 @@ describe('Register', () => { it('has password repeat input fields', () => { expect(wrapper.find('input[name="form.passwordRepeat"]').exists()).toBeTruthy() }) + it('has Language selected field', () => { + expect(wrapper.find('#selectedLanguage').exists()).toBeTruthy() + }) it('has 1 checkbox input fields', () => { expect(wrapper.find('#registerCheckbox').exists()).toBeTruthy() @@ -214,6 +217,7 @@ describe('Register', () => { firstName: 'Max', lastName: 'Mustermann', password: 'Aa123456', + language: 'null', }, }), ) diff --git a/frontend/src/views/Pages/Register.vue b/frontend/src/views/Pages/Register.vue index 933cae028..58036db70 100755 --- a/frontend/src/views/Pages/Register.vue +++ b/frontend/src/views/Pages/Register.vue @@ -84,6 +84,18 @@ :register="register" > + + + {{ $t('language') }} + + + + -
+
{{ $t('form.reset') }} {{ $t('signup') }} @@ -147,6 +162,12 @@ export default { passwordRepeat: '', }, }, + selected: null, + options: [ + { value: null, text: this.$t('select_language') }, + { value: 'de', text: this.$t('languages.de') }, + { value: 'en', text: this.$t('languages.en') }, + ], submitted: false, showError: false, messageError: '', @@ -183,6 +204,7 @@ export default { firstName: this.form.firstname, lastName: this.form.lastname, password: this.form.password.password, + language: this.selected, }, }) .then(() => { @@ -191,6 +213,7 @@ export default { this.form.lastname = '' this.form.password.password = '' this.form.password.passwordRepeat = '' + this.selected = null this.$router.push('/thx/register') }) .catch((error) => { @@ -206,6 +229,7 @@ export default { this.form.lastname = '' this.form.password.password = '' this.form.password.passwordRepeat = '' + this.selected = null }, }, computed: { @@ -220,6 +244,9 @@ export default { emailFilled() { return this.form.email !== '' }, + languageFilled() { + return this.selected !== null + }, }, } From 27982f558b6278698b2bf0f7eebf6ea8b201dcf5 Mon Sep 17 00:00:00 2001 From: Einhornimmond Date: Mon, 30 Aug 2021 12:20:10 +0200 Subject: [PATCH 07/31] add roles and iota colored coins --- docu/Concepts/Snippets/1-Blockchain/Roles.md | 53 ++++++++++++++++++++ docu/Concepts/Snippets/Iota/ColoredCoins.md | 34 +++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 docu/Concepts/Snippets/1-Blockchain/Roles.md create mode 100644 docu/Concepts/Snippets/Iota/ColoredCoins.md diff --git a/docu/Concepts/Snippets/1-Blockchain/Roles.md b/docu/Concepts/Snippets/1-Blockchain/Roles.md new file mode 100644 index 000000000..d21b3814a --- /dev/null +++ b/docu/Concepts/Snippets/1-Blockchain/Roles.md @@ -0,0 +1,53 @@ +# Roles +User Roles also handled by blockchain and node servers + +My Goal is to save not only the gradido transactions in blockchain but also +who is allowed to create new gradidos, +who allow joining new user to the group, +who allow connect to another group and +how the community decide which one is allowed to do this things. + +## Why? +If this would be handled only by community-server everyone could be easly +overwrite this rules by using a modified client to send his transactions direct over +hedera or iota bypassing the community-server rules. +With hedera it is possible to only allow sending messages to a topic with the correct admin key, +but then is the admin the single point of failure. Also must the key saved on server to allow everyone +sending gradidos or the transactions will only be proccessed, when admin is logging in. +If we don't use blockchain technologie at all, we have a big single point of failure. +The Community-Server and everyone who has direct access to server and the admins of course. +But it would be much much simpler of course :) + +In summary it is to make sure that the community is in power and no one can take over. + +## How? +There is a special type of transactions with which users determine who can determine what. +This transaction control which signatures are neccessary for things like creation and so one. +For this I think different types are needed. +- *one*: The founder of group (or someone other choosen) decide everything, this is default from start +- *some*: a number of user must sign, set absolute count or relative count +- *most*: more than 1/2 or 3/4 must sign +- *all*: all member must sign, default for choose which mode will be used +- *one-council*: one member of council +- *some-council*: absolute or relative number of council members must sign +- *most-council*: more than 1/2 or 3/4 from council members must sign +- *all-council*: all members of council must sign + +this configuration can be done for different types of action, +so the voting-mode for creation may differ from voting mode for +add new members to community. Also the council members for different actions +may differ. +Also how to vote for council members is an extra type of action. + +## Veto +Especially for *some* and *some-council* maybe also for other types. +The users there could vote but haven't yet and not all need to vote, +can make a Veto with Explanation which reset all existing signs of current vote, +and is needed to sign by all which again vote for the case. + +## Summary +With that setup all community consense models should be possible except Democracy. +Democracy needs a secret ballot. The votes on blockchain are open (at least if someone knows which +public-key belongs to which user). A secret ballot on blockchain is really hard. By my last +recherche I haven't found on. But maybe this can do the trick: https://secure.vote/ + diff --git a/docu/Concepts/Snippets/Iota/ColoredCoins.md b/docu/Concepts/Snippets/Iota/ColoredCoins.md new file mode 100644 index 000000000..239c4c19b --- /dev/null +++ b/docu/Concepts/Snippets/Iota/ColoredCoins.md @@ -0,0 +1,34 @@ +# Wie Colored Coins in Iota funktionieren +## Schöpfung +- Colored Coins werden bei Iota mit einer speziellen Transaktion erzeugt +- Die Farbe des neuen Coins wird durch den Transaktionshash beschrieben +- Die einmal erzeugte Menge von Colored Coins ist fest +- Um die Menge zu erhöhen müssten neue Colored Coin erzeugt werden und die alten damit ausgetauscht werden (z.B. mittels SmartContract) + +## Geldmenge +- Colored Coins basierend auf den normalen Iota-Coins somit werden soviele Iota-Coins benötigt wie man Colored-Coins braucht +- 2.779.530.283.000.000 Iota maximale Coinmenge +- Weltbevölkerung 2021: 96.954.663 +- Pro Kopf Geldmenge Gradido: 53.476 +- Benötigte Iota Coins für Gradido mit 4 Nachkommastellen mit 25% Puffer: +- 96.954.663 * 53.476 * 1.25 = 6.480.934.448.000 +- Es sind genügend Iota Coins vorhanden im die ganze Welt mit Gradido auf Basis von Iota versorgen zu können + +## Kosten +- Kurs am 30.08.2021: 1 Miota = 0,84 +- Bei Verwendung von 4 Nachkommastellen braucht es 10 Miota für 1.000 Colored Coins (Gradido) also Miota im Wert von 8,40€ +- Aktuell (30.08.2021) geschöpfte Gradido Cent: 17.001.990.500 +- Notwendige Miota: 17.002.0, Wert: 14.286,73 € +- Solange die Benutzer Kontrolle über ihre Keys haben können sie mit einem regulärem Iota Wallet die Gradidos wieder in Iota umwandeln (um z.B. der Vergänglichkeit zu entgehen) +- Mit 2 Nachkommastellen wird die Vergänglichkeit schon bei 100 Gradido und 1 Stunde ungenau +- 1 Stunde, 100 Gradido, Vergänglichkeit: 0,00576, Gradidos nach einer Stunde: 99,99424 GDD +- 1 Minute, 100 Gradido, Vergänglichkeit: 0,000096, Gradidos nach einer Minute: 99,999904 GDD + +## Dust-Protection +- Iota erlaubt bei leeren Adressen nur Transaktionen von mindestens 1 Miota +- Nachdem 1 Miota da ist sind bis zu 10 Transaktione < 1 Miota erlaubt, bevor ein weitere Transaktion mit mindestens 1 Miota eingehen muss +- Bei Verwendung von 4 Nachkommastellen entspricht das 100 GDD, bei 2 Nachkommastellen 10.000 GDD + + + + From b2cdc69716f89c32c4e9f40d0889ac80a585f9c8 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 16:29:11 +0200 Subject: [PATCH 08/31] sessionId from JWT into context for resolver --- backend/src/auth/auth.ts | 5 ++++- backend/src/graphql/inputs/TransactionInput.ts | 3 --- backend/src/graphql/resolvers/TransactionResolver.ts | 10 +++++++--- frontend/src/graphql/queries.js | 4 ++-- frontend/src/views/Layout/DashboardLayout_gdd.vue | 1 - 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/backend/src/auth/auth.ts b/backend/src/auth/auth.ts index 12ab24feb..1103c0117 100644 --- a/backend/src/auth/auth.ts +++ b/backend/src/auth/auth.ts @@ -7,7 +7,10 @@ import decode from '../jwt/decode' export const isAuthorized: AuthChecker = ({ root, args, context, info }, roles) => { if (context.token) { const decoded = decode(context.token) - if (decoded.sessionId && decoded.sessionId !== 0) return true + if (decoded.sessionId && decoded.sessionId !== 0) { + context.sessionId = decoded.sessionId + return true + } } return false } diff --git a/backend/src/graphql/inputs/TransactionInput.ts b/backend/src/graphql/inputs/TransactionInput.ts index 7f83cd82d..5365ab030 100644 --- a/backend/src/graphql/inputs/TransactionInput.ts +++ b/backend/src/graphql/inputs/TransactionInput.ts @@ -2,9 +2,6 @@ import { ArgsType, Field, Int } from 'type-graphql' @ArgsType() export class TransactionListInput { - @Field(() => Number) - sessionId: number - @Field(() => Int) firstPage: number diff --git a/backend/src/graphql/resolvers/TransactionResolver.ts b/backend/src/graphql/resolvers/TransactionResolver.ts index 305cf44d7..31e46f13a 100644 --- a/backend/src/graphql/resolvers/TransactionResolver.ts +++ b/backend/src/graphql/resolvers/TransactionResolver.ts @@ -1,4 +1,7 @@ -import { Resolver, Query, Args, Authorized } from 'type-graphql' +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + +import { Resolver, Query, Args, Authorized, Ctx } from 'type-graphql' import CONFIG from '../../config' import { TransactionList } from '../models/Transaction' import { TransactionListInput, TransactionSendArgs } from '../inputs/TransactionInput' @@ -9,10 +12,11 @@ export class TransactionResolver { @Authorized() @Query(() => TransactionList) async transactionList( - @Args() { sessionId, firstPage = 1, items = 25, order = 'DESC' }: TransactionListInput, + @Args() { firstPage = 1, items = 25, order = 'DESC' }: TransactionListInput, + @Ctx() context: any, ): Promise { const result = await apiGet( - `${CONFIG.COMMUNITY_API_URL}listTransactions/${firstPage}/${items}/${order}/${sessionId}`, + `${CONFIG.COMMUNITY_API_URL}listTransactions/${firstPage}/${items}/${order}/${context.sessionId}`, ) if (!result.success) throw new Error(result.data) return new TransactionList(result.data) diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index c025584f0..579e07912 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -56,8 +56,8 @@ export const updateUserInfos = gql` ` export const transactionsQuery = gql` - query($sessionId: Float!, $firstPage: Int = 1, $items: Int = 25, $order: String = "DESC") { - transactionList(sessionId: $sessionId, firstPage: $firstPage, items: $items, order: $order) { + query($firstPage: Int = 1, $items: Int = 25, $order: String = "DESC") { + transactionList(firstPage: $firstPage, items: $items, order: $order) { gdtSum count balance diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.vue b/frontend/src/views/Layout/DashboardLayout_gdd.vue index 4081f4ceb..fdfea867d 100755 --- a/frontend/src/views/Layout/DashboardLayout_gdd.vue +++ b/frontend/src/views/Layout/DashboardLayout_gdd.vue @@ -111,7 +111,6 @@ export default { .query({ query: transactionsQuery, variables: { - sessionId: this.$store.state.sessionId, firstPage: pagination.firstPage, items: pagination.items, }, From 6ae5f6e23d361c856658c19117207b1960f89270 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 16:39:10 +0200 Subject: [PATCH 09/31] logout without sessionId --- backend/src/graphql/resolvers/UserResolver.ts | 17 +++++++---------- frontend/src/graphql/queries.js | 4 ++-- .../src/views/Layout/DashboardLayout_gdd.vue | 1 - 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/backend/src/graphql/resolvers/UserResolver.ts b/backend/src/graphql/resolvers/UserResolver.ts index 8e3dbf841..42a7be6da 100644 --- a/backend/src/graphql/resolvers/UserResolver.ts +++ b/backend/src/graphql/resolvers/UserResolver.ts @@ -1,5 +1,7 @@ -// import jwt from 'jsonwebtoken' -import { Resolver, Query, Args, Arg } from 'type-graphql' +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + +import { Resolver, Query, Args, Arg, Authorized, Ctx } from 'type-graphql' import CONFIG from '../../config' import { CheckUsernameResponse } from '../models/CheckUsernameResponse' import { User } from '../models/User' @@ -28,12 +30,6 @@ export class UserResolver { throw new Error(result.data) } - // temporary solution until we have JWT implemented - // return new LoginResponse(result.data) - - // create and return the json web token - // The expire doesn't help us here. The client needs to track when the token expires on its own, - // since every action prolongs the time the session is valid. const data = result.data const sessionId = data.session_id delete data.session_id @@ -55,9 +51,10 @@ export class UserResolver { return new LoginViaVerificationCode(result.data) } + @Authorized() @Query(() => String) - async logout(@Arg('sessionId') sessionId: number): Promise { - const payload = { session_id: sessionId } + async logout(@Ctx() context: any): Promise { + const payload = { session_id: context.sessionId } const result = await apiPost(CONFIG.LOGIN_API_URL + 'logout', payload) if (!result.success) { throw new Error(result.data) diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index 579e07912..ca5572493 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -7,8 +7,8 @@ export const login = gql` ` export const logout = gql` - query($sessionId: Float!) { - logout(sessionId: $sessionId) + query { + logout } ` diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.vue b/frontend/src/views/Layout/DashboardLayout_gdd.vue index fdfea867d..35e7bb8af 100755 --- a/frontend/src/views/Layout/DashboardLayout_gdd.vue +++ b/frontend/src/views/Layout/DashboardLayout_gdd.vue @@ -92,7 +92,6 @@ export default { this.$apollo .query({ query: logout, - variables: { sessionId: this.$store.state.sessionId }, }) .then(() => { this.$sidebar.displaySidebar(false) From 5ff9842c0bf7b2ca012ebdfb0b0b0cdd57165c0f Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 16:54:37 +0200 Subject: [PATCH 10/31] change user data without sessionId --- backend/src/graphql/inputs/LoginUserInput.ts | 3 --- backend/src/graphql/resolvers/UserResolver.ts | 5 +++-- frontend/src/components/LanguageSwitch.vue | 4 ++-- frontend/src/graphql/queries.js | 2 -- .../src/views/Pages/UserProfile/UserCard_FormUserData.vue | 2 -- .../src/views/Pages/UserProfile/UserCard_FormUserMail.vue | 1 - .../views/Pages/UserProfile/UserCard_FormUserPasswort.vue | 1 - .../src/views/Pages/UserProfile/UserCard_FormUsername.vue | 1 - 8 files changed, 5 insertions(+), 14 deletions(-) diff --git a/backend/src/graphql/inputs/LoginUserInput.ts b/backend/src/graphql/inputs/LoginUserInput.ts index 19326689e..f92cf5510 100644 --- a/backend/src/graphql/inputs/LoginUserInput.ts +++ b/backend/src/graphql/inputs/LoginUserInput.ts @@ -38,9 +38,6 @@ export class ChangePasswordArgs { @ArgsType() export class UpdateUserInfosArgs { - @Field(() => Number) - sessionId!: number - @Field(() => String) email!: string diff --git a/backend/src/graphql/resolvers/UserResolver.ts b/backend/src/graphql/resolvers/UserResolver.ts index 42a7be6da..dd8240e02 100644 --- a/backend/src/graphql/resolvers/UserResolver.ts +++ b/backend/src/graphql/resolvers/UserResolver.ts @@ -108,11 +108,11 @@ export class UserResolver { return 'sucess' } + @Authorized() @Query(() => UpdateUserInfosResponse) async updateUserInfos( @Args() { - sessionId, email, firstName, lastName, @@ -122,9 +122,10 @@ export class UserResolver { password, passwordNew, }: UpdateUserInfosArgs, + @Ctx() context: any, ): Promise { const payload = { - session_id: sessionId, + session_id: context.sessionId, email, update: { 'User.first_name': firstName || undefined, diff --git a/frontend/src/components/LanguageSwitch.vue b/frontend/src/components/LanguageSwitch.vue index e6f9c86c3..54c3728cc 100644 --- a/frontend/src/components/LanguageSwitch.vue +++ b/frontend/src/components/LanguageSwitch.vue @@ -32,13 +32,13 @@ export default { localeChanged(locale) }, async saveLocale(locale) { + if (this.$i18n.locale === locale) return this.setLocale(locale) - if (this.$store.state.sessionId && this.$store.state.email) { + if (this.$store.state.email) { this.$apollo .query({ query: updateUserInfos, variables: { - sessionId: this.$store.state.sessionId, email: this.$store.state.email, locale: locale, }, diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index ca5572493..035a73ee2 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -29,7 +29,6 @@ export const loginViaEmailVerificationCode = gql` export const updateUserInfos = gql` query( - $sessionId: Float! $email: String! $firstName: String $lastName: String @@ -40,7 +39,6 @@ export const updateUserInfos = gql` $locale: String ) { updateUserInfos( - sessionId: $sessionId email: $email firstName: $firstName lastName: $lastName diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserData.vue b/frontend/src/views/Pages/UserProfile/UserCard_FormUserData.vue index 369d30074..3726b5298 100644 --- a/frontend/src/views/Pages/UserProfile/UserCard_FormUserData.vue +++ b/frontend/src/views/Pages/UserProfile/UserCard_FormUserData.vue @@ -85,7 +85,6 @@ export default { data() { return { showUserData: true, - sessionId: this.$store.state.sessionId, form: { firstName: this.$store.state.firstName, lastName: this.$store.state.lastName, @@ -118,7 +117,6 @@ export default { .query({ query: updateUserInfos, variables: { - sessionId: this.$store.state.sessionId, email: this.$store.state.email, firstName: this.form.firstName, lastName: this.form.lastName, diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.vue b/frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.vue index b5c4f30bb..ed88425c7 100644 --- a/frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.vue +++ b/frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.vue @@ -48,7 +48,6 @@ export default { .query({ query: updateUserInfos, variables: { - sessionId: this.$store.state.sessionId, email: this.$store.state.email, newEmail: this.newEmail, }, diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.vue b/frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.vue index a9be983c1..4678defaf 100644 --- a/frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.vue +++ b/frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.vue @@ -81,7 +81,6 @@ export default { .query({ query: updateUserInfos, variables: { - sessionId: this.$store.state.sessionId, email: this.$store.state.email, password: this.form.password, passwordNew: this.form.newPassword.password, diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUsername.vue b/frontend/src/views/Pages/UserProfile/UserCard_FormUsername.vue index 1c269ba53..f6587b968 100644 --- a/frontend/src/views/Pages/UserProfile/UserCard_FormUsername.vue +++ b/frontend/src/views/Pages/UserProfile/UserCard_FormUsername.vue @@ -90,7 +90,6 @@ export default { .query({ query: updateUserInfos, variables: { - sessionId: this.$store.state.sessionId, email: this.$store.state.email, username: this.form.username, }, From a44938fc380bfe85f336b74084cd8f8a42c41681 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 16:57:04 +0200 Subject: [PATCH 11/31] token instead of sessionId needed fot authorization --- frontend/src/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/main.js b/frontend/src/main.js index e534743c3..823df516c 100755 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -40,7 +40,7 @@ Vue.config.productionTip = false loadAllRules(i18n) router.beforeEach((to, from, next) => { - if (to.meta.requiresAuth && !store.state.sessionId) { + if (to.meta.requiresAuth && !store.state.token) { next({ path: '/login' }) } else { next() From 60fa39c7e86fbd6115532e879e45e43c6b552cf7 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 17:20:24 +0200 Subject: [PATCH 12/31] send coins without sessionId --- backend/src/graphql/inputs/TransactionInput.ts | 3 --- backend/src/graphql/resolvers/TransactionResolver.ts | 5 +++-- frontend/src/graphql/queries.js | 4 ++-- frontend/src/views/Pages/AccountOverview.vue | 5 +---- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/backend/src/graphql/inputs/TransactionInput.ts b/backend/src/graphql/inputs/TransactionInput.ts index 5365ab030..a62d86a65 100644 --- a/backend/src/graphql/inputs/TransactionInput.ts +++ b/backend/src/graphql/inputs/TransactionInput.ts @@ -14,9 +14,6 @@ export class TransactionListInput { @ArgsType() export class TransactionSendArgs { - @Field(() => Number) - sessionId: number - @Field(() => String) email: string diff --git a/backend/src/graphql/resolvers/TransactionResolver.ts b/backend/src/graphql/resolvers/TransactionResolver.ts index 31e46f13a..2f1c2bf16 100644 --- a/backend/src/graphql/resolvers/TransactionResolver.ts +++ b/backend/src/graphql/resolvers/TransactionResolver.ts @@ -25,10 +25,11 @@ export class TransactionResolver { @Authorized() @Query(() => String) async sendCoins( - @Args() { sessionId, email, amount, memo }: TransactionSendArgs, + @Args() { email, amount, memo }: TransactionSendArgs, + @Ctx() context: any, ): Promise { const payload = { - session_id: sessionId, + session_id: context.sessionId, target_email: email, amount: amount * 10000, memo, diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index 035a73ee2..40a4be074 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -91,8 +91,8 @@ export const resgisterUserQuery = gql` ` export const sendCoins = gql` - query($sessionId: Float!, $email: String!, $amount: Float!, $memo: String!) { - sendCoins(sessionId: $sessionId, email: $email, amount: $amount, memo: $memo) + query($email: String!, $amount: Float!, $memo: String!) { + sendCoins(email: $email, amount: $amount, memo: $memo) } ` diff --git a/frontend/src/views/Pages/AccountOverview.vue b/frontend/src/views/Pages/AccountOverview.vue index b89955a6a..8e5362d8c 100644 --- a/frontend/src/views/Pages/AccountOverview.vue +++ b/frontend/src/views/Pages/AccountOverview.vue @@ -107,10 +107,7 @@ export default { this.$apollo .query({ query: sendCoins, - variables: { - sessionId: this.$store.state.sessionId, - ...this.transactionData, - }, + variables: this.transactionData, }) .then(() => { this.error = false From ce2826388ee54ac2cda9d9fabffee797a6210d26 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 17:41:26 +0200 Subject: [PATCH 13/31] adopt test without sessionId --- frontend/src/components/LanguageSwitch.spec.js | 3 --- frontend/src/components/LanguageSwitch.vue | 2 +- .../src/views/Layout/DashboardLayout_gdd.spec.js | 8 +------- frontend/src/views/Pages/AccountOverview.spec.js | 5 ++--- frontend/src/views/Pages/Login.spec.js | 12 ++---------- .../Pages/UserProfile/UserCard_FormUserData.spec.js | 3 --- .../Pages/UserProfile/UserCard_FormUserMail.spec.js | 3 --- .../UserProfile/UserCard_FormUserPasswort.spec.js | 2 -- .../Pages/UserProfile/UserCard_FormUsername.spec.js | 3 --- 9 files changed, 6 insertions(+), 35 deletions(-) diff --git a/frontend/src/components/LanguageSwitch.spec.js b/frontend/src/components/LanguageSwitch.spec.js index 72771bd37..afe98b357 100644 --- a/frontend/src/components/LanguageSwitch.spec.js +++ b/frontend/src/components/LanguageSwitch.spec.js @@ -15,7 +15,6 @@ describe('LanguageSwitch', () => { let wrapper const state = { - sessionId: 1234, email: 'he@ho.he', language: null, } @@ -123,7 +122,6 @@ describe('LanguageSwitch', () => { expect(updateUserInfosQueryMock).toBeCalledWith( expect.objectContaining({ variables: { - sessionId: 1234, email: 'he@ho.he', locale: 'en', }, @@ -136,7 +134,6 @@ describe('LanguageSwitch', () => { expect(updateUserInfosQueryMock).toBeCalledWith( expect.objectContaining({ variables: { - sessionId: 1234, email: 'he@ho.he', locale: 'de', }, diff --git a/frontend/src/components/LanguageSwitch.vue b/frontend/src/components/LanguageSwitch.vue index 54c3728cc..f0528a935 100644 --- a/frontend/src/components/LanguageSwitch.vue +++ b/frontend/src/components/LanguageSwitch.vue @@ -32,7 +32,7 @@ export default { localeChanged(locale) }, async saveLocale(locale) { - if (this.$i18n.locale === locale) return + // if (this.$i18n.locale === locale) return this.setLocale(locale) if (this.$store.state.email) { this.$apollo diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js b/frontend/src/views/Layout/DashboardLayout_gdd.spec.js index f0f08f6a2..12a788a4b 100644 --- a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js +++ b/frontend/src/views/Layout/DashboardLayout_gdd.spec.js @@ -41,7 +41,6 @@ describe('DashboardLayoutGdd', () => { }, $store: { state: { - sessionId: 1, email: 'user@example.org', }, dispatch: storeDispatchMock, @@ -133,11 +132,7 @@ describe('DashboardLayoutGdd', () => { }) it('calls the API', async () => { - expect(apolloMock).toBeCalledWith( - expect.objectContaining({ - variables: { sessionId: 1 }, - }), - ) + expect(apolloMock).toBeCalled() }) it('dispatches logout to store', () => { @@ -196,7 +191,6 @@ describe('DashboardLayoutGdd', () => { expect(apolloMock).toBeCalledWith( expect.objectContaining({ variables: { - sessionId: 1, firstPage: 2, items: 5, }, diff --git a/frontend/src/views/Pages/AccountOverview.spec.js b/frontend/src/views/Pages/AccountOverview.spec.js index b890f1471..df964ed2c 100644 --- a/frontend/src/views/Pages/AccountOverview.spec.js +++ b/frontend/src/views/Pages/AccountOverview.spec.js @@ -16,12 +16,12 @@ describe('AccountOverview', () => { const mocks = { $t: jest.fn((t) => t), + $n: jest.fn((n) => String(n)), $store: { state: { - sessionId: 1, + email: 'sender@example.org', }, }, - $n: jest.fn((n) => String(n)), $apollo: { query: sendMock, }, @@ -93,7 +93,6 @@ describe('AccountOverview', () => { expect(sendMock).toBeCalledWith( expect.objectContaining({ variables: { - sessionId: 1, email: 'user@example.org', amount: 23.45, memo: 'Make the best of it!', diff --git a/frontend/src/views/Pages/Login.spec.js b/frontend/src/views/Pages/Login.spec.js index 7cbe5f003..20eead7a3 100644 --- a/frontend/src/views/Pages/Login.spec.js +++ b/frontend/src/views/Pages/Login.spec.js @@ -6,12 +6,7 @@ const localVue = global.localVue const loginQueryMock = jest.fn().mockResolvedValue({ data: { - login: { - sessionId: 1, - user: { - name: 'Peter Lustig', - }, - }, + login: 'token', }, }) @@ -159,10 +154,7 @@ describe('Login', () => { describe('login success', () => { it('dispatches server response to store', () => { - expect(mockStoreDispach).toBeCalledWith('login', { - sessionId: 1, - user: { name: 'Peter Lustig' }, - }) + expect(mockStoreDispach).toBeCalledWith('login', 'token') }) it('redirects to overview page', () => { diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserData.spec.js b/frontend/src/views/Pages/UserProfile/UserCard_FormUserData.spec.js index 847185741..b3e014e57 100644 --- a/frontend/src/views/Pages/UserProfile/UserCard_FormUserData.spec.js +++ b/frontend/src/views/Pages/UserProfile/UserCard_FormUserData.spec.js @@ -17,7 +17,6 @@ describe('UserCard_FormUserData', () => { $t: jest.fn((t) => t), $store: { state: { - sessionId: 1, email: 'user@example.org', firstName: 'Peter', lastName: 'Lustig', @@ -118,7 +117,6 @@ describe('UserCard_FormUserData', () => { expect(mockAPIcall).toBeCalledWith( expect.objectContaining({ variables: { - sessionId: 1, email: 'user@example.org', firstName: 'Petra', lastName: 'Lustiger', @@ -167,7 +165,6 @@ describe('UserCard_FormUserData', () => { expect(mockAPIcall).toBeCalledWith( expect.objectContaining({ variables: { - sessionId: 1, email: 'user@example.org', firstName: 'Petra', lastName: 'Lustiger', diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.spec.js b/frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.spec.js index 93477bdfa..06f26877a 100644 --- a/frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.spec.js +++ b/frontend/src/views/Pages/UserProfile/UserCard_FormUserMail.spec.js @@ -14,7 +14,6 @@ describe('UserCard_FormUserMail', () => { $t: jest.fn((t) => t), $store: { state: { - sessionId: 1, email: 'user@example.org', firstName: 'Peter', lastName: 'Lustig', @@ -76,7 +75,6 @@ describe('UserCard_FormUserMail', () => { expect(mockAPIcall).toHaveBeenCalledWith( expect.objectContaining({ variables: { - sessionId: 1, email: 'user@example.org', newEmail: 'test@example.org', }, @@ -106,7 +104,6 @@ describe('UserCard_FormUserMail', () => { expect(mockAPIcall).toHaveBeenCalledWith( expect.objectContaining({ variables: { - sessionId: 1, email: 'user@example.org', newEmail: 'test@example.org', }, diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.spec.js b/frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.spec.js index c44f7d300..fa4aceb0c 100644 --- a/frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.spec.js +++ b/frontend/src/views/Pages/UserProfile/UserCard_FormUserPasswort.spec.js @@ -17,7 +17,6 @@ describe('UserCard_FormUserPasswort', () => { $t: jest.fn((t) => t), $store: { state: { - sessionId: 1, email: 'user@example.org', }, }, @@ -175,7 +174,6 @@ describe('UserCard_FormUserPasswort', () => { expect(changePasswordProfileMock).toHaveBeenCalledWith( expect.objectContaining({ variables: { - sessionId: 1, email: 'user@example.org', password: '1234', passwordNew: 'Aa123456', diff --git a/frontend/src/views/Pages/UserProfile/UserCard_FormUsername.spec.js b/frontend/src/views/Pages/UserProfile/UserCard_FormUsername.spec.js index b6ab05902..8a69ee7eb 100644 --- a/frontend/src/views/Pages/UserProfile/UserCard_FormUsername.spec.js +++ b/frontend/src/views/Pages/UserProfile/UserCard_FormUsername.spec.js @@ -25,7 +25,6 @@ describe('UserCard_FormUsername', () => { $t: jest.fn((t) => t), $store: { state: { - sessionId: 1, email: 'user@example.org', username: '', }, @@ -111,7 +110,6 @@ describe('UserCard_FormUsername', () => { expect.objectContaining({ variables: { email: 'user@example.org', - sessionId: 1, username: 'username', }, }), @@ -151,7 +149,6 @@ describe('UserCard_FormUsername', () => { expect.objectContaining({ variables: { email: 'user@example.org', - sessionId: 1, username: 'username', }, }), From 02a70c5acf2cca781714892d6d8fcbd149f0e8e3 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 17:47:59 +0200 Subject: [PATCH 14/31] Gdt List without session ID --- backend/src/graphql/inputs/GdtInputs.ts | 3 --- backend/src/graphql/resolvers/GdtResolver.ts | 12 ++++++++---- frontend/src/graphql/queries.js | 4 ++-- .../Pages/AccountOverview/GdtTransactionList.spec.js | 6 ------ .../Pages/AccountOverview/GdtTransactionList.vue | 1 - 5 files changed, 10 insertions(+), 16 deletions(-) diff --git a/backend/src/graphql/inputs/GdtInputs.ts b/backend/src/graphql/inputs/GdtInputs.ts index 1404fbf14..e11ce24c1 100644 --- a/backend/src/graphql/inputs/GdtInputs.ts +++ b/backend/src/graphql/inputs/GdtInputs.ts @@ -17,9 +17,6 @@ export class GdtTransactionInput { @ArgsType() export class GdtTransactionSessionIdInput { - @Field(() => Number) - sessionId: number - @Field(() => Int, { nullable: true }) currentPage?: number diff --git a/backend/src/graphql/resolvers/GdtResolver.ts b/backend/src/graphql/resolvers/GdtResolver.ts index 0ff187bd1..b69f6ad7e 100644 --- a/backend/src/graphql/resolvers/GdtResolver.ts +++ b/backend/src/graphql/resolvers/GdtResolver.ts @@ -1,5 +1,7 @@ -// import jwt from 'jsonwebtoken' -import { Resolver, Query, /* Mutation, */ Args } from 'type-graphql' +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + +import { Resolver, Query, Args, Ctx, Authorized } from 'type-graphql' import CONFIG from '../../config' import { GdtEntryList } from '../models/GdtEntryList' import { GdtTransactionSessionIdInput } from '../inputs/GdtInputs' @@ -7,14 +9,16 @@ import { apiGet } from '../../apis/loginAPI' @Resolver() export class GdtResolver { + @Authorized() @Query(() => GdtEntryList) // eslint-disable-next-line @typescript-eslint/no-explicit-any async listGDTEntries( @Args() - { currentPage = 1, pageSize = 5, order = 'DESC', sessionId }: GdtTransactionSessionIdInput, + { currentPage = 1, pageSize = 5, order = 'DESC' }: GdtTransactionSessionIdInput, + @Ctx() context: any, ): Promise { const result = await apiGet( - `${CONFIG.COMMUNITY_API_URL}listGDTTransactions/${currentPage}/${pageSize}/${order}/${sessionId}`, + `${CONFIG.COMMUNITY_API_URL}listGDTTransactions/${currentPage}/${pageSize}/${order}/${context.sessionId}`, ) if (!result.success) { throw new Error(result.data) diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index 40a4be074..64e7c4994 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -113,8 +113,8 @@ export const checkUsername = gql` ` export const listGDTEntriesQuery = gql` - query($currentPage: Int!, $pageSize: Int!, $sessionId: Float!) { - listGDTEntries(currentPage: $currentPage, pageSize: $pageSize, sessionId: $sessionId) { + query($currentPage: Int!, $pageSize: Int!) { + listGDTEntries(currentPage: $currentPage, pageSize: $pageSize) { count gdtEntries { amount diff --git a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.spec.js b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.spec.js index 5ad12be97..a3c737d10 100644 --- a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.spec.js +++ b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.spec.js @@ -57,11 +57,6 @@ describe('GdtTransactionList', () => { $t: jest.fn((t) => t), $n: jest.fn((n) => n), $d: jest.fn((d) => d), - $store: { - state: { - sessionId: 1, - }, - }, $toasted: { error: toastErrorMock, }, @@ -89,7 +84,6 @@ describe('GdtTransactionList', () => { expect(apolloMock).toBeCalledWith( expect.objectContaining({ variables: { - sessionId: 1, currentPage: 1, pageSize: 25, }, diff --git a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue index 8193717cf..cc42399b7 100644 --- a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue +++ b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue @@ -199,7 +199,6 @@ export default { .query({ query: listGDTEntriesQuery, variables: { - sessionId: this.$store.state.sessionId, currentPage: this.currentPage, pageSize: this.pageSize, }, From 235eefad3a06d9c462b0cb41bf82a55e9ae33a9e Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 18:06:45 +0200 Subject: [PATCH 15/31] store without session ID --- frontend/src/store/store.js | 10 ++----- frontend/src/store/store.test.js | 51 ++++++++++++++++---------------- 2 files changed, 28 insertions(+), 33 deletions(-) diff --git a/frontend/src/store/store.js b/frontend/src/store/store.js index 8e7f5ff1b..77c7096ad 100644 --- a/frontend/src/store/store.js +++ b/frontend/src/store/store.js @@ -12,9 +12,6 @@ export const mutations = { email: (state, email) => { state.email = email }, - sessionId: (state, sessionId) => { - state.sessionId = sessionId - }, username: (state, username) => { state.username = username }, @@ -35,23 +32,21 @@ export const mutations = { export const actions = { login: ({ dispatch, commit }, token) => { const decoded = VueJwtDecode.decode(token) - commit('sessionId', decoded.sessionId) + commit('token', token) commit('email', decoded.email) commit('language', decoded.language) commit('username', decoded.username) commit('firstName', decoded.firstName) commit('lastName', decoded.lastName) commit('description', decoded.description) - commit('token', token) }, logout: ({ commit, state }) => { - commit('sessionId', null) + commit('token', null) commit('email', null) commit('username', '') commit('firstName', '') commit('lastName', '') commit('description', '') - commit('token', null) localStorage.clear() }, } @@ -63,7 +58,6 @@ export const store = new Vuex.Store({ }), ], state: { - sessionId: null, email: '', language: null, firstName: '', diff --git a/frontend/src/store/store.test.js b/frontend/src/store/store.test.js index a67dff5ce..99a37451e 100644 --- a/frontend/src/store/store.test.js +++ b/frontend/src/store/store.test.js @@ -1,6 +1,17 @@ import { mutations, actions } from './store' +import VueJwtDecode from 'vue-jwt-decode' -const { language, email, sessionId, username, firstName, lastName, description } = mutations +jest.mock('vue-jwt-decode') +VueJwtDecode.decode.mockReturnValue({ + email: 'user@example.org', + language: 'de', + username: 'peter', + firstName: 'Peter', + lastName: 'Lustig', + description: 'Nickelbrille', +}) + +const { language, email, token, username, firstName, lastName, description } = mutations const { login, logout } = actions describe('Vuex store', () => { @@ -21,11 +32,11 @@ describe('Vuex store', () => { }) }) - describe('sessionId', () => { - it('sets the state of sessionId', () => { - const state = { sessionId: null } - sessionId(state, '1234') - expect(state.sessionId).toEqual('1234') + describe('token', () => { + it('sets the state of token', () => { + const state = { token: null } + token(state, '1234') + expect(state.token).toEqual('1234') }) }) @@ -66,41 +77,31 @@ describe('Vuex store', () => { describe('login', () => { const commit = jest.fn() const state = {} - const commitedData = { - sessionId: 1234, - user: { - email: 'someone@there.is', - language: 'en', - username: 'user', - firstName: 'Peter', - lastName: 'Lustig', - description: 'Nickelbrille', - }, - } + const commitedData = 'token' it('calls seven commits', () => { login({ commit, state }, commitedData) expect(commit).toHaveBeenCalledTimes(7) }) - it('commits sessionId', () => { + it('commits token', () => { login({ commit, state }, commitedData) - expect(commit).toHaveBeenNthCalledWith(1, 'sessionId', 1234) + expect(commit).toHaveBeenNthCalledWith(1, 'token', 'token') }) it('commits email', () => { login({ commit, state }, commitedData) - expect(commit).toHaveBeenNthCalledWith(2, 'email', 'someone@there.is') + expect(commit).toHaveBeenNthCalledWith(2, 'email', 'user@example.org') }) it('commits language', () => { login({ commit, state }, commitedData) - expect(commit).toHaveBeenNthCalledWith(3, 'language', 'en') + expect(commit).toHaveBeenNthCalledWith(3, 'language', 'de') }) it('commits username', () => { login({ commit, state }, commitedData) - expect(commit).toHaveBeenNthCalledWith(4, 'username', 'user') + expect(commit).toHaveBeenNthCalledWith(4, 'username', 'peter') }) it('commits firstName', () => { @@ -128,9 +129,9 @@ describe('Vuex store', () => { expect(commit).toHaveBeenCalledTimes(6) }) - it('commits sessionId', () => { + it('commits token', () => { logout({ commit, state }) - expect(commit).toHaveBeenNthCalledWith(1, 'sessionId', null) + expect(commit).toHaveBeenNthCalledWith(1, 'token', null) }) it('commits email', () => { @@ -159,7 +160,7 @@ describe('Vuex store', () => { }) // how to get this working? - it.skip('calls sessionStorage.clear()', () => { + it.skip('calls localStorage.clear()', () => { const clearStorageMock = jest.fn() global.sessionStorage = jest.fn(() => { return { From cc12591b38fe27106a04ded7c38f86031bfa2126 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 18:30:52 +0200 Subject: [PATCH 16/31] remove last fragments of session ID --- frontend/src/views/Pages/AccountOverview/GddSend.spec.js | 5 ----- frontend/src/views/Pages/UserProfileTransactionList.spec.js | 5 ----- 2 files changed, 10 deletions(-) diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.spec.js b/frontend/src/views/Pages/AccountOverview/GddSend.spec.js index c7005ddf5..15beac511 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend.spec.js +++ b/frontend/src/views/Pages/AccountOverview/GddSend.spec.js @@ -8,11 +8,6 @@ describe('GddSend', () => { const mocks = { $t: jest.fn((t) => t), - $store: { - state: { - sessionId: 1234, - }, - }, $i18n: { locale: jest.fn(() => 'en'), }, diff --git a/frontend/src/views/Pages/UserProfileTransactionList.spec.js b/frontend/src/views/Pages/UserProfileTransactionList.spec.js index 484dd10f1..8e4235fbe 100644 --- a/frontend/src/views/Pages/UserProfileTransactionList.spec.js +++ b/frontend/src/views/Pages/UserProfileTransactionList.spec.js @@ -13,11 +13,6 @@ describe('UserProfileTransactionList', () => { $i18n: { locale: jest.fn(() => 'en'), }, - $store: { - state: { - sessionId: 1, - }, - }, } const stubs = { From 73aaada658e49d4d9887404eafb6c34d88252de9 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 18:40:28 +0200 Subject: [PATCH 17/31] validation of sessionID via API call to login server --- backend/src/auth/auth.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/src/auth/auth.ts b/backend/src/auth/auth.ts index 1103c0117..0d9014b15 100644 --- a/backend/src/auth/auth.ts +++ b/backend/src/auth/auth.ts @@ -2,14 +2,19 @@ import { AuthChecker } from 'type-graphql' import decode from '../jwt/decode' +import { apiGet } from '../apis/loginAPI' +import CONFIG from '../config' /* eslint-disable-next-line @typescript-eslint/no-unused-vars */ -export const isAuthorized: AuthChecker = ({ root, args, context, info }, roles) => { +export const isAuthorized: AuthChecker = async ({ root, args, context, info }, roles) => { if (context.token) { const decoded = decode(context.token) if (decoded.sessionId && decoded.sessionId !== 0) { + const result = await apiGet( + `${CONFIG.LOGIN_API_URL}checkSessionState?session_id=${decoded.sessionId}`, + ) context.sessionId = decoded.sessionId - return true + return result.success } } return false From 277ce515f9d72584067b6595c89384647f0b8839 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 18:46:03 +0200 Subject: [PATCH 18/31] balance query without sessionID --- backend/src/graphql/resolvers/BalanceResolver.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/src/graphql/resolvers/BalanceResolver.ts b/backend/src/graphql/resolvers/BalanceResolver.ts index c483ad5c9..27e0d4890 100644 --- a/backend/src/graphql/resolvers/BalanceResolver.ts +++ b/backend/src/graphql/resolvers/BalanceResolver.ts @@ -1,13 +1,17 @@ -import { Resolver, Query, /* Mutation, */ Arg } from 'type-graphql' +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ + +import { Resolver, Query, Ctx, Authorized } from 'type-graphql' import CONFIG from '../../config' import { Balance } from '../models/Balance' import { apiGet } from '../../apis/loginAPI' @Resolver() export class BalanceResolver { + @Authorized() @Query(() => Balance) - async balance(@Arg('sessionId') sessionId: number): Promise { - const result = await apiGet(CONFIG.COMMUNITY_API_URL + 'getBalance/' + sessionId) + async balance(@Ctx() context: any): Promise { + const result = await apiGet(CONFIG.COMMUNITY_API_URL + 'getBalance/' + context.sessionId) if (!result.success) throw new Error(result.data) return new Balance(result.data) } From 0146da98d536f946d35d065dc6e23e5ec238e294 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 30 Aug 2021 18:48:46 +0200 Subject: [PATCH 19/31] return in try block on success --- backend/src/jwt/decode.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/jwt/decode.ts b/backend/src/jwt/decode.ts index 40c3575e8..a414e0c41 100644 --- a/backend/src/jwt/decode.ts +++ b/backend/src/jwt/decode.ts @@ -12,12 +12,12 @@ export default (token: string): any => { const decoded = jwt.verify(token, CONFIG.JWT_SECRET) sessionId = decoded.sub // email = decoded.email + return { + token, + sessionId, + email, + } } catch (err) { return null } - return { - token, - sessionId, - email, - } } From 407d2bb36fc33e7c98b55990da4898d42701ee47 Mon Sep 17 00:00:00 2001 From: Einhornimmond Date: Tue, 31 Aug 2021 11:23:02 +0200 Subject: [PATCH 20/31] fix errors --- docu/Concepts/Snippets/Iota/ColoredCoins.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docu/Concepts/Snippets/Iota/ColoredCoins.md b/docu/Concepts/Snippets/Iota/ColoredCoins.md index 239c4c19b..33d3a891e 100644 --- a/docu/Concepts/Snippets/Iota/ColoredCoins.md +++ b/docu/Concepts/Snippets/Iota/ColoredCoins.md @@ -8,11 +8,12 @@ ## Geldmenge - Colored Coins basierend auf den normalen Iota-Coins somit werden soviele Iota-Coins benötigt wie man Colored-Coins braucht - 2.779.530.283.000.000 Iota maximale Coinmenge -- Weltbevölkerung 2021: 96.954.663 +- Weltbevölkerung 2021: 7.915.559.780 - Pro Kopf Geldmenge Gradido: 53.476 - Benötigte Iota Coins für Gradido mit 4 Nachkommastellen mit 25% Puffer: -- 96.954.663 * 53.476 * 1.25 = 6.480.934.448.000 -- Es sind genügend Iota Coins vorhanden im die ganze Welt mit Gradido auf Basis von Iota versorgen zu können +- 7.915.559.780 * 534.760.000 * 1.25 = 5.291.155.935.000.000.000 +- Vorhandene Iota coins: 2.779.530.283.000.000 +- Es sind nicht genügend Iota Coins vorhanden im die ganze Welt mit Gradido auf Basis von Iota versorgen zu können ## Kosten - Kurs am 30.08.2021: 1 Miota = 0,84 @@ -29,6 +30,13 @@ - Nachdem 1 Miota da ist sind bis zu 10 Transaktione < 1 Miota erlaubt, bevor ein weitere Transaktion mit mindestens 1 Miota eingehen muss - Bei Verwendung von 4 Nachkommastellen entspricht das 100 GDD, bei 2 Nachkommastellen 10.000 GDD - +## Lösung +Wir können nur 3 Nachkommastellen verwenden. +### Kosten +- 0,84 € für 1.000 GDD +- 1.428 Euro für alle bisherigen geschöpften Gradidos +### Dust-Protection +- 1.000 GDD entspricht 1 Miota, die erste Schöpfung muss also zwangsläufig 1k Gradido betragen +- Jeder kann nur maximal 10 Transaktionen < 1k GDD empfangen bevor er die GDD weitergesendet haben muss um neue erhalten zu können oder eine neue Schöpfung von 1k GDD bekommen hat From 9b2afaafe594999bab8dbc281ad96ab55d7840b6 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 31 Aug 2021 12:11:17 +0200 Subject: [PATCH 21/31] add id to gdt entry --- backend/src/graphql/models/GdtEntry.ts | 4 ++++ frontend/src/graphql/queries.js | 1 + 2 files changed, 5 insertions(+) diff --git a/backend/src/graphql/models/GdtEntry.ts b/backend/src/graphql/models/GdtEntry.ts index 09ee35a70..7935d4181 100644 --- a/backend/src/graphql/models/GdtEntry.ts +++ b/backend/src/graphql/models/GdtEntry.ts @@ -15,6 +15,7 @@ export enum GdtEntryType { @ObjectType() export class GdtEntry { constructor(json: any) { + this.id = json.id this.amount = json.amount this.date = json.date this.email = json.email @@ -27,6 +28,9 @@ export class GdtEntry { this.gdt = json.gdt } + @Field(() => Number) + id: number + @Field(() => Number) amount: number diff --git a/frontend/src/graphql/queries.js b/frontend/src/graphql/queries.js index 3afe807f4..bc5c5f285 100644 --- a/frontend/src/graphql/queries.js +++ b/frontend/src/graphql/queries.js @@ -129,6 +129,7 @@ export const listGDTEntriesQuery = gql` listGDTEntries(currentPage: $currentPage, pageSize: $pageSize, sessionId: $sessionId) { count gdtEntries { + id amount date comment From 143a07bb57919c09e7f81e3d1e156562f42145ba Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 31 Aug 2021 12:11:37 +0200 Subject: [PATCH 22/31] fix problems with icons in fronten --- .../Pages/AccountOverview/GdtTransactionList.vue | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue index 8193717cf..02c902f6b 100644 --- a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue +++ b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue @@ -169,6 +169,19 @@ const iconsByType = { 7: { icon: 'gift', classes: 'gradido-global-color-accent' }, } +function iconByType(typeId) +{ + switch(typeId) { + case 1: + case 2: + case 3: + case 5: + case 6: return { icon: 'heart', classes: 'gradido-global-color-accent' } + case 4: return { icon: 'person-check', classes: 'gradido-global-color-accent' } + case 7: return { icon: 'gift', classes: 'gradido-global-color-accent' } + } +} + export default { name: 'gdt-transaction-list', components: { @@ -216,7 +229,7 @@ export default { }) }, getIcon(givenType) { - const type = iconsByType[givenType] + const type = iconByType(givenType) if (type) return { icon: type.icon, From 0d144324acc5267376b7658aafa6c126783adee8 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 31 Aug 2021 12:24:42 +0200 Subject: [PATCH 23/31] fix linting --- .../AccountOverview/GdtTransactionList.vue | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue index 02c902f6b..368cb5779 100644 --- a/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue +++ b/frontend/src/views/Pages/AccountOverview/GdtTransactionList.vue @@ -163,23 +163,19 @@ import { listGDTEntriesQuery } from '../../../graphql/queries' import PaginationButtons from '../../../components/PaginationButtons' -const iconsByType = { - 1: { icon: 'heart', classes: 'gradido-global-color-accent' }, - 4: { icon: 'person-check', classes: 'gradido-global-color-accent' }, - 7: { icon: 'gift', classes: 'gradido-global-color-accent' }, -} - -function iconByType(typeId) -{ - switch(typeId) { - case 1: - case 2: - case 3: - case 5: - case 6: return { icon: 'heart', classes: 'gradido-global-color-accent' } - case 4: return { icon: 'person-check', classes: 'gradido-global-color-accent' } - case 7: return { icon: 'gift', classes: 'gradido-global-color-accent' } - } +function iconByType(typeId) { + switch (typeId) { + case 1: + case 2: + case 3: + case 5: + case 6: + return { icon: 'heart', classes: 'gradido-global-color-accent' } + case 4: + return { icon: 'person-check', classes: 'gradido-global-color-accent' } + case 7: + return { icon: 'gift', classes: 'gradido-global-color-accent' } + } } export default { From 1b0f08898c3b3bf3755ce71e98310e342c157132 Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 1 Sep 2021 12:30:54 +0200 Subject: [PATCH 24/31] fix test --- frontend/src/views/Pages/Register.spec.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/Pages/Register.spec.js b/frontend/src/views/Pages/Register.spec.js index b275b1579..459b1278b 100644 --- a/frontend/src/views/Pages/Register.spec.js +++ b/frontend/src/views/Pages/Register.spec.js @@ -83,6 +83,10 @@ describe('Register', () => { it('has Language selected field', () => { expect(wrapper.find('#selectedLanguage').exists()).toBeTruthy() }) + it('selected Language value de', async () => { + wrapper.find('#selectedLanguage').findAll('option').at(1).setSelected() + expect(wrapper.find('#selectedLanguage').element.value).toBe('de') + }) it('has 1 checkbox input fields', () => { expect(wrapper.find('#registerCheckbox').exists()).toBeTruthy() @@ -124,9 +128,16 @@ describe('Register', () => { wrapper.find('#Email-input-field').setValue('max.mustermann@gradido.net') wrapper.find('input[name="form.password"]').setValue('Aa123456') wrapper.find('input[name="form.passwordRepeat"]').setValue('Aa123456') + wrapper.find('#selectedLanguage').findAll('option').at(1).setSelected() wrapper.find('input[name="site.signup.agree"]').setChecked(true) }) + it('reset selected value', async () => { + await wrapper.find('button.ml-2').trigger('click') + await flushPromises() + expect(wrapper.find('#selectedLanguage').element.value).toBe('de') + }) + it('resets the firstName field after clicking the reset button', async () => { await wrapper.find('button.ml-2').trigger('click') await flushPromises() @@ -171,6 +182,7 @@ describe('Register', () => { wrapper.find('#Email-input-field').setValue('max.mustermann@gradido.net') wrapper.find('input[name="form.password"]').setValue('Aa123456') wrapper.find('input[name="form.passwordRepeat"]').setValue('Aa123456') + wrapper.find('#selectedLanguage').findAll('option').at(1).setSelected() }) describe('server sends back error', () => { @@ -217,7 +229,7 @@ describe('Register', () => { firstName: 'Max', lastName: 'Mustermann', password: 'Aa123456', - language: 'null', + language: 'de', }, }), ) From a885f99f0cc165225e4bf826eeb96f91f3a2e871 Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 1 Sep 2021 13:39:20 +0200 Subject: [PATCH 25/31] fix change test reset language --- frontend/src/views/Pages/Register.spec.js | 4 ++-- frontend/src/views/Pages/Register.vue | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/views/Pages/Register.spec.js b/frontend/src/views/Pages/Register.spec.js index 459b1278b..72042477c 100644 --- a/frontend/src/views/Pages/Register.spec.js +++ b/frontend/src/views/Pages/Register.spec.js @@ -132,10 +132,10 @@ describe('Register', () => { wrapper.find('input[name="site.signup.agree"]').setChecked(true) }) - it('reset selected value', async () => { + it('reset selected value language', async () => { await wrapper.find('button.ml-2').trigger('click') await flushPromises() - expect(wrapper.find('#selectedLanguage').element.value).toBe('de') + expect(wrapper.find('#selectedLanguage').element.value).toBe('') }) it('resets the firstName field after clicking the reset button', async () => { diff --git a/frontend/src/views/Pages/Register.vue b/frontend/src/views/Pages/Register.vue index 58036db70..7d35798ca 100755 --- a/frontend/src/views/Pages/Register.vue +++ b/frontend/src/views/Pages/Register.vue @@ -188,9 +188,9 @@ export default { passwordRepeat: '', }, agree: false, - } - this.form.password.password = '' - this.form.password.passwordRepeat = '' + }, + this.selected = null, + this.$nextTick(() => { this.$refs.observer.reset() }) From 1e8b1c35f29edc40e08922e119b131067ffdfc1d Mon Sep 17 00:00:00 2001 From: Einhornimmond Date: Wed, 1 Sep 2021 13:46:14 +0200 Subject: [PATCH 26/31] add images --- docu/Concepts/Snippets/images/classes.drawio | 1 + docu/Concepts/Snippets/images/classes.png | Bin 0 -> 167414 bytes .../Snippets/images/example_blockchain.drawio | 1 + .../Snippets/images/example_blockchain.png | Bin 0 -> 152930 bytes docu/Concepts/Snippets/images/iota.drawio | 1 + docu/Concepts/Snippets/images/iota.png | Bin 0 -> 48376 bytes 6 files changed, 3 insertions(+) create mode 100644 docu/Concepts/Snippets/images/classes.drawio create mode 100644 docu/Concepts/Snippets/images/classes.png create mode 100644 docu/Concepts/Snippets/images/example_blockchain.drawio create mode 100644 docu/Concepts/Snippets/images/example_blockchain.png create mode 100644 docu/Concepts/Snippets/images/iota.drawio create mode 100644 docu/Concepts/Snippets/images/iota.png diff --git a/docu/Concepts/Snippets/images/classes.drawio b/docu/Concepts/Snippets/images/classes.drawio new file mode 100644 index 000000000..ad4f88aa2 --- /dev/null +++ b/docu/Concepts/Snippets/images/classes.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docu/Concepts/Snippets/images/classes.png b/docu/Concepts/Snippets/images/classes.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf30c437095c7275febd37c265bfa5e5579345c GIT binary patch literal 167414 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

&h%l9ds*L?F@ZvOh0P5RPjZ19jbY}IPgIgle1lf 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%0AkIidvm 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 HZ9@Ma-A7I& literal 0 HcmV?d00001 diff --git a/docu/Concepts/Snippets/images/example_blockchain.drawio b/docu/Concepts/Snippets/images/example_blockchain.drawio new file mode 100644 index 000000000..ac043b21b --- /dev/null +++ b/docu/Concepts/Snippets/images/example_blockchain.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docu/Concepts/Snippets/images/example_blockchain.png b/docu/Concepts/Snippets/images/example_blockchain.png new file mode 100644 index 0000000000000000000000000000000000000000..f2771b3887a47e61f052edf039f37ac3c3c80db3 GIT binary patch literal 152930 zcmeEv2|QJ6_rIx}3?U_wnIz*e%aEDMP)R5mjwu|S{MVM@ra5zncG;o@`$PO zh>Bw2Umh_vc-PX_+{VS+0p7N?{Q91&$L>82S}GDEy0+3vcu^}AQ%_subWssUa|f%h z=j?!63I28y2QLj5bEgB^cuOmLIM34S>sitwl3y>h^!|E4N__qrQ4t##^wS6q=-K)# z+#W0P^*S4OTg%^lWl<3~Jl@{T)`{>rL`5v{j*eCqZeKrS;g04mE_l!1pJt7>UwFoa za}bOC?jq!Xo`t#n;-dz(mTm_Y9!pf}>(@ih*0i#mLR#N8cI}YaP$qP^7dcfQg z@A>um`9t%@cfsS~QnmR(Qn9i}Y=_$A>vih?;@xlG-^I#t;luy`7r^i#Bj{mn@4oPC z8uoacIea2=*wxJ&ePsBePRJP+-uAYRmR2r2V#=NeY~8H%oXjnd$ z!k;+2JDg~#h5L5E+``Vr1v#qg?gn>3E<;X4jrQAjUU&=-D;GDb1)rHev|thqE4+i1 zn~OJm!-aRn7tFcfPofJiJ%1Y<$%R7)2*yQv;h6b?JJ@`?FFgE$iQx|iulX@pdOXAy z8&DOV>c7i;qB8$6`z=fv0tZ}VyLp$fLT0GQ|Lk=?z?sk}v*1ivvBlnmMO}x`ov^6e z{TY8+2owbNfDmeFYl&C3$6MHe$8SU;ffAN)k(pqsz?3JPfv#>YcsnZa{|@P>n}r6m#wmYnjxAD+L+{^%GH+W$wG zAHDBl`|ox!cXTzkaI?ib{<@|Yl@gNp`gExCODy61sF8lS@zJ>deKyhnA9GT&wET4q zFZF!@7DWewAcx5;jLi?X`(hM;(x%?e*#a5eg~+&Jv^a7mdt_Zg?}aoV#U8c!r~zO&q;!RXas&* zAYKSGiwEGJkp(6GlSy!a8~@Js5RA309B@`H`c9VSZdQxp!!Hwv7c-HCp&$%AXmtMJ zk$5rqR#H_p)z?$o_3K((OyoQ0A-WXwKojJTHu+b@>30HzlRM7N3g9P#I-`Ums`TqTiZ}9K61}4;CHtg&Tc?J?M?T+F;R*=DU=>wMET; z$N#BuNqjNLSv2PVX}T%CL3-^&kU!(W=agzX@{sd`%Nrge|AEYoWIqA@$B#fOX{X&Q3e>3MK zmT39;+V4gHdl${ZUq@j;T^mgtOVQk)Rp*fSKhPyA`Hkc*jDQ5{=>)*xXTdIs#juOO z>wk5!x8QxK-O=g~q1}H{p-JLj%9<)JRsaKk=?+iSnNho=DUiVKXb}40!G5u%NhtFC zM~nRuXe9nC?64Smn>)a|2;esJO%EbS#E1W&fuCR*#;=q4zN1VMXg48&{jt~u3jD(z zaWT?|{?>(nL}2Z|_oA0?F1s+5Q9MRqLDZ=U4Tu{0&%ieHz67{=5lH*1$s?M$QEQ;j zNnnnpxg%<~KV^`AiDQ4?vid8RD*wm;pyv=e|fct zCb^i|ElRfkIq4iltAx_|!WaIVDCcPTVqx$kzK2AAKjj?V(ctgI0K`$@V!@2xLO)>$ zLTLeE2*RTF|1%T-%|!$jS+bV!D=*#tLnH9BV5ro;$tY`+x$`p2wVlR)Fgg6T!kp&&Fp8q)~_4|?oR#hu0M>(}pAlt7&uwfJAUYE5b} z@gfkiCCwd>t#BN1uE_s*L?!K!eK}m6%#o!mzp0Co&hE%AKgvh|5?t7V1Cf6hcHscm zKrR-UU+gUiS0n8($or0X7YAg69`t(n%Lcg*f^g9f!?~bG(Ie0f^7R{hJ^7D8;jh8+ zPc5ojG*IYNA($Fy+Wz4)}eA4u2{|E>Z7UYF8!ke^8sxk|Xf5;Gy(C8=8xv3dBM* zkVMf7K`_StENx7BF*N^98~fvh_y1CDY;l{9B+AwaMgWa8KN^NeF9zrYg!FGL6#oDi zA}Y1ueW>T7MkcWP&w?S+i%~jZP0$*)y8Cs3(|GlkL{!4?r*l!CKQR^>}W>FgS!>zx# z0sukn z7l>p0;l-Ee7!%GMbT<7>W)3=<=*&UW4myy3bmpKAfZpf(;>-`6IEyLylBHsae~=!v z)I`OiL;IuAn#^KKPDl-Z`E9^+PWj{ZQjC zk^0c_`O&BYE3%j#fJj835&iKl!BAAaT{QvQ$SPX&xX?l&Q%=fEy zWKicM7=fP_5wRkRff(NHfR&5s{34RCs_~M`A{Vzz{seD?$+A#JAT$Pg?1%d!$}|W- zk&`*>ZEb1l_S+Btn8I%_{fm;(zbl&CTUjGbTi^fEk{cfB8AH0gY#nX1=Fd?T|Lw@G zg&&ne4&mWiYy0^PnGV43Gg-k7+{!L^H*+_0-29KWAr#*U*`{dz*Uco9c_fr!S+NST zLz4t-a-;&UAsnHv;Sh4Vi<=7G5uU{y+1^M@)ymw}&C|*i`KCW$h!;CNR%EGFB4|GR z-5@VOr$3YXu-L`%*VPJsB+&BfkKFveaStmgDlIN1A%#Z8-#Yh17f*nHcliG%KeZ)> zT`=oH3c!k>8?q2iIuv*OZafxtLH={&u{a4hnmghbesV}u8Y?9#iCrkHEH?kYYx95N zloP{#pJT8hXrDac5ThjMcSHO`rrctsWl;$It2N^9S1E`}e=`z+O@5wAjQyiOaP%v$ z7XM>|@Y58)Zv=}V;S+N4UtI$Hezgce^_*Z1{5=RbHcVjt z|DY!L{cAF9Sn{06xf5)A<-A{^tNrVWZN?wMbt z4gS<_$@!nBKzk*HAO^tiQ~bGh$#2pgVZS80SI*z0Us3{{vyAm-t-uA3?2e$uBc}58$1PmUoepT@Ev@Xo9kjGHw{bCd`1abt%i0#H ze5u_}4L2tuVkg?FsbgQ<#!|GXco(Xy?yk#qA^m0p0KAyzo ziBwGSp`xL*VaG&iQZ{W7T^&!wFo>FL`p;Kzx?GD~{U}}5bK=<*y`EC1PGw@cT9=8Tw|2tDg~w*!RL6XvU=SF; zpCRu%bU{1yi}D?}505VCq)%o>rfHoJdfircLU_)9prf3cGk3eH$L!QCPgnV=lQWdn;z3n9i}P(zsp1JgZ^1yRGVZowg!xX4Bg)7yOe1j6^eJT;GM`s-rIm z8Rc4r@52}CN3Y@E(41#;qCQ1z`$er3-0Z!8Qwn~2=h8O2Z+h2%PUGlZ7FcLn+Er&9Bkmuc#l5;|7h%6KNofD3_JFx! zfxY?fr-$CwHMY6b2~v9Yy^>H-y%$|`{Fr`yaFn7OCp>FUVP2CeI}bc-+^P||0ekMq z=DkwwhlcCm)($T(YNy8N%8%~8^WZrDz7YSuS2sm{M&8GC-8-^9VN1ZQH=N|RPc_NN zj+TD|Nt!7h?Y^?h z6fyqf_+VG|%@1MJZpJUJ@8i9`@0LR9X7`V8x6Dls%OAc*y;|m7434a3cq8i}k8}(- zJ=`RIMOqV^>+$4=aa+RvNOryLu&-ahd zs0GPY%BixyqGfM5=TOyb%6ZI%Y`jfVCfr1*Tq1a|pvBQwR3)4$#Nhhg<9ttvOJ}~c z=$e)sy8S7fn)#lpkLgQ)PP0|SL#^B=1!6F&s?@lPkgc2Yg{ zDG3}r>CTOLW3N5iZ-Z?{UY7VxIZ54&ao`{+fRA?IXz+845la3dViKmpq%IHV>w{XQ5cHO zNe&lnQiqu4-A%@>4=?Z=WW99Ms9D~9(k|aFqtCP^(4yQ#83ym^fm~r#b~$A5SkvTp z#^}fCpVy2NzU$fFR;UuOGJ{C$jLu<3ta3ONlc?R)mp*OzmaQI#G2FpK-j6;gkwq%z zAeRc@o}{;5OcpeS`IcQe_4%%x30v^qn+I78OAdLH(oNKU^0S(YR9ug^_KM$JJ7#G5 zMV0-FOe0f=_L3PpQu38m5^fnfukX0uogTc;Hm2Y|J)WBJd84cb*&BAn4A*V6#GJGO zU|O;m#^HVRd0~`mO`cxTJte!h!2ZL;&SYulvm>9H`dc7Kw0)R(lpCU2Mov7G))<7L z4Kkza@Z~bBN^U=y{4hnVrvzU*BWaorqB@w;=@Wx}twAsYio& zCR6Xy%1K*#d_!0L$~%as9IvcUrz1AtDjN&G7IEM2NFHBS)|dWvQxpFQtFbeFzKPeNY#!_-mGz5_tfc$Q(>6Q>1QyREmxCSGb4Qq^l1`ZTY~AenS%68*`mpr0Zu(}P%5dt0AX4%NCrthMAVMDg zKw52IMa|1>zZ{HB6)O;iQKd(wW#a+n_t)&IG8@tEY5R7I~l&f*f?j4>lkWuzcm zCBCiOd*f;A6xA{@WXh(Tq0-eb=C@A&+_lLNqdwhS=zK1N;ux34Nt@hdm`s*&xA zBx+~oBNKVW>RFsT%0gRp9(V2~(f4FTP~&3P_eN2Iou9GV#ECs{_J z2?>uIBA!d%&8B;kQ?0jMPqvTsC-CZiyh1TG)_($KjmjLmqvyTDOnX;WiOqH-U%%u2 zX&WTL;FJ8T^OVY~>)Vvr+0UtF_}Y{;({q{;!OWlvWYktuO-$B4VCLjfmL#~(vLQnr ztGqgRHRswn27|&q*Z1o0$u?op?Wm}XNm#vJiE1a6lJV8ue67N#-pD9nQ*jt0MN3ZF zd>9EX*VD}hIn8L1+XgdHtEm+wA4ya?3;&73$x?HfRc&N))T@c+YEW4&NEs^xZWNg{ zsN;<1v(}?BH(U0&W?4ABtM^LcbvzB!e6p%!%CTT2j)<50*6gScx0U0wt|Sw`=FChY zzRi)Dt{?(a$OfO(x-dA8hG~BSIPFw2r>Vd$bx!I}7dJQ(e)dONW>e0=oIl4&O6xo~AZD*$^h9*B{ z*WEk9%%go$eAh)SChyVb1{ZdoQ;)7cs}^$}0#v-v{>?LUfDBANmrObOZNRq`P2wT& zCEm1a+IDsK6>dO>yY9HzdVjv%(;cV58l^P$^uqR`p*rEZ(@G&D>G6PyEV* zMO`2<>3OHlilG*K>DIB&ub&$}OqV@@lYHwM%tK3@fZ?v&2&q;BZ~zZrz9e{-?XU7} ztsvh&y`sl!ROoaD@SR$9ub!^_1-2}MEaN!SfEoSCv3}up|EcTtFLRWt1>4rv48K2j z^ub`)eJl7Pd(}?}?LV(^l=YSFA*yzWh(q_7@ih?jH(G1QD%5e3)T)#{?>~aXrftVJ z@jz~D^xWCsR%`_rZ1VF~owLc>D-Yf{6}1sdiMNOJZPk>uKb}J+JUJsx-gghReukVk zF3N~eS}WJK@uF=TVBoq)IxcRz7nvjtz5LlloNWH%X8_x8%K#|+;l=gTcc~)g!RxAH z)(US6B3WknrYZ_zwEr0!$+z^eJgO`twW8bLqZ4>Dyp+Q(;a}bL%6}J=ySi%=a;+b( z^ByQCUn8H%Dq;In)qieg%<{}uY^uOZoc!vYxB|PTtW9#AkH$_Ms-%KQe3rEpMsX{I z=;yK_Il-Q7-Wt{RdDahi*H`3)SOuH|Cu_k^c%Vx}mSC@C5+i0z) z&~B(a!U2J{B7$%HHojfq?b*_9-TK(|GP^eDW(aIQA*8*d{;XUmFNbci&nPbXQu2|K z+FI7T3_+3Jcp|0uhaaX&)!Cf#OA=7zvrbsHuRFT=K3jnC5#}V)I9k0Xpc%<4%~#O1 z?dG*+s7o9eDEkzhZ&pt7p*io8zgoHBo4FgRfxC-++(+x*7#(uAs*P8hV_A-GEp#4w zDAm5B{^FsM8=>!2*bkh`w`pL#J@GE}cpYuB=IE!UCNFpHs_Ni`*(w2Ca}FnISNt&> z2CGD2Q$;o%zzPSqAIH8ZI~Xf)i;mv?_eO7Gclnnsl6z)yv~gzh z%gTgSRcxwp_w3y5ND8sQGRXWF97hy0Q}LVjWF~8+Z`PlyZ4!%Nc}!cbDH0r+u)oy5 zINFHJ&fxM6rGRTY&xJd3hba0FKa?8fr}S2s8PS{QPS8aLy~$A74au$~TFD;{nZ+_t4b9m0jr=vCHg(sCKM_d8x|V}$uVqu^^G%>*EV@E^pnVS@mqH`t8Lr`{9D2l zSd7JyN5`(ia#-ePeB7~^t z4{@}Wm@R?C^~d?wHl%1zq*<(Z5~i4YcoqBP>{P#gK8|PE{UMH7mP;x52c9U?jmX4UJ+RyNkw9#JCB@1;2h&7pOFHaDD>YmuM?Q?oRP}APA`>$f-&TIQ zx=6K5m?X;|&;E>#BkB=Tla8>H<=R*>D#<~FmkkbUBtkHHeba!1_nLgKQJy|oyhCDU z!RD0X2|cxBu}A5GUIO+kXQEq8f`GQ;)AiymwfAFn)x`n$(8(XNm!r!G24J+u>}cyY zz(nF6tMklBPChTB2HURZf&rpTq`u)XO~^PXRU#rkGyuWh!P~Pxjs;Q`bT_Bo40Uw!~jj6 zQ2dQ1*WJ3hljQUa1l8jWfo zhAak*Th4h8m~v)h;&r3EcfkoH`gPf;}tUoUb-SSZhLEL7mZaLekv zUEp0Q4d7Lz4RXVWZ6eIa2Ret!$=T{#3mjTPGWxh>)yY;V!Q+km_INkmKf>$R&r%lK z9PKEC34C5BeJ{+tkIU1}`CiN$E1(0Z;waH4UXr*7_Z+%C&67xl9>Q_dS(F$t!>IS-6CG2k&=$_LdbJML`Dy?cwdp@>pRXFDSW*cI*~vkZ$~0k1|_nyQ~>7B z+Lt9f+20gtls^L*ATt0A;|(lwd*d0E2urv7pSid+ViSe--!U!%l*7VV@tEXpW%;Z9 z(L~;#p9Y!dMFz$oh`&0dEBNB=ZS}J;_a)S#SEu+rlxS*|0O^7XIG;PQR+NaJ3=aSv;?7yfOM8am%kWuUf zl8WdpyCxwjCo+>|I-ADFyN+7D%rUA=eAaRvG|085d_G>umn^;sl2GE4a~h^;($2V7h+cOaG@n~)mdEe+thlQ| zrhEh@%E3@01-b!N;JRLTt%T?2G->lnSnPa1UB4yS0)u+)VexF` zxB^4KKolkK_V&S=iO+ZYyCEo^fO(Y;DxTG3MHpp6`)${r9?pt~`|r`&1gR>5BgxSH z=CSoE6I|N$lgg$&Fd+7a06N{xwXBVQTNOorJBC5<#HS!2uNjaWN6!L2?AlH@ z(WYY2kVPA$2`c8%(49EusKC3lFrfRp=!RaX<|ZGZeDv@))j8j`k)d!wb%yVCc&(7J zW8!I(4Qq>dRHmjFWH0alx6mL^#X7zi4Umj$awUgC| zBO!&gDpA>F-SWihW|cCPB5`U?Z^v~zlWeGoQ{^rt-<0gllwOT_$(_(S`?!YbZ*rFI zj`|E~XJwz!k37I)6G5ro`nmP?+aPk*W4GFTwnJ1%<2>CKFy}Wh(R1qUxuXhCb0OJn zkb3Q=mnkac@QRy8e&kqh>us?ocMiVDS~&u8oZXa&Mcvz2&gJ6GK)(n)Mm- zcc~af6e-pU2|#%v)eS^RwJy-zEY1W^Lv&lo$k)D=;!K*DjgDZG)G{t>h~#|UBTqDz z^&!f)+s9{HV_D@lLCT|!Ne=69e0Di5dI#oX>D=tTsnt>wTs^f3ycZ5Wzv=>1v(~`W zZw;6Apd6VWRCX>vULfvb?qhO@uNC=ntu$W4%lm%JF~vAqKJzellIOa z!EVn;&4}gWZ`jb#6=mdQ0l;_TU5~zafWlQHy@-Se5-5DmQG~s}DsbS3@Rx+JaS#(Z z={IN{o1K}e1GantQqm@Y;hqLzD2+81Ap~G9d&ikzD2{E&uwgK1hpNps;F{+_EEaWa zl^%66x$UCnGxk{!^pwVe-C4#)>W3LQ;9dPEeUV1f9zfI_hT-Nspn}|}63FOpxs_c& zK!#4{l!(iuj(NwSA6j>=zbv%6SEo3r&|*l&N_Z%iC)lbM>nvsydlzH4Hp=Yql9z+Ixvm;Dm_k`KE%#0-LzP3mEUMveg zFk}PW0{~MXkqPd)yn`dCOyv@MsS70TPtR}ND_>vd8@)#R(-!i2+2VprEPn3MJw4eJPCeLpE(X>p>Nn|jovp$J0L3P=yKW!Ox=(Gum}9yCx!9KaRomlc z)DCPjwDDYx4F??#*OsuBf@ zZ%-09i682&{b)1;)9;y{(S>bmg0Sj7A1<6A!=5d{=3(|HOW`wMmh2lAFw9ZR@cUx4 zCXcp&_H4tJxkL4MdEYOIP#CzHT-}c03*;SnWtXjwjk(}$ij5iSXm(NNPAkH!2-FM< zbbl35SOsM9N@Q4a7*RyeO|bLe226!8aOcZ7)>?!54KMmbtxs;jw&dID-3E=$;z-cV zly$^wTDTL;y>Kv{<6$n)YjsI%Sfqi9GR_JlNU8A%ZP0$@$((sU}2mb zuU@txCEjuW4jJUJhS+**>Q28qW+&hpko=y#EJF-&?#;tBICww=g{J?rV9^zOyZ>&*I^!}@eI)< zrY?Je0(g>~b$7R?TppCJqUc-)IyhgrfwnP-vmO-4P^l@0m}*fa@IYOhzG&i~9c4hX+F$#>cJ<+w@SK_0cG5S3i>@ynk*e!D_lXMs`{@uD8>)CJklhcb) z3X2y#be6yW!unbre*rw><0?^?ZXR!2FaNNc(lmol#T~n4`m#UBSY4M(mD3$aGqMj= zeo0i61G38{3a!X0i2eFqwj4u;^F2w7^QPMslfmCGzaYwInc%j*Xpo#Ga*tvhXf zEN0$ScM`a&44!CvXHKO>v=s)XsRMl13QR8p+-!9@4*u!@Jp1ASF4&RfZQ7*;C z;o721_l~OzEeni4!AB%acGL&v$`g(Ty}*r-AP1BOE^BA#)vsgRkron@z(PA~wu$2r zaJDV6o?R!e3>EKZqwcmBp9xv5c!zB%pQBzQ_PL4y=`Se7C?Kl9mI)H=S7gHUh_1l1=X5Vu0 z10d!9$s07$3&7jesLUgv2SF%)ANxz^UVL)ZHa)|vnqZvr9Fj9B zu4?}4y*6o}97yX7eA`^A1VzRmeQ%SV0fgbhb}+lu$?%|F25RRYaX zE+3!q%_lW)YmNh;xbg$KI|g}wJCqonaUB*#K&tMRnfw>ap2XO&9L;PjE5vz#?6Q}Y zOepK>{#?r_t*=U&@LFM$M5sj90Q^DK+$X$R6ib)_lp$q z(RxF_*yCJs8dd?Q5P51%y@@t@79t85^4h2hZ4VTbpu=Dly=ag}>^g~U;WTVQP=9!m zvpjO^GtZgPrfUOXjOrODCF~x&dzdQGpNzHG-BEEjdWhr2_QZ{6lo>xjb5jBo4X^G9 zUwa4e=f}6|8<(kK=RLnhq@0aLYQ&8#hJ#yTJjPBcdtWnAKn z#pQ$(^Z^m2WX?wHt&i{NzWpI8B@ID<+_*1E`y6+c?+@%*s}6P~BKmpc$DRW;6Wugz26j44xYkLl!sDo7Zq}RUT~vbgAs5;awF9 z&>%v;UU~JSG#NeUpj$o6tja-lJpoLD(TgJU?O#e&Rx%jqe}#g z3wOw0(u72>zZ3e3yl%r+IDg>D*^lleFbEbOL&g{~o*`Q9+;zhnxV>#4uZerq@KLr| zg_@oI99q>oG2C+#U$$z+jB*O?gMsx^b_OmR4sy#`Bxr>XVmYmA)m)wo6lv{2*i!D~ zsT!5;iPDVUyN4=!mG!3=*Vkxcuo(TwIvC9`I+sADV_)`4#~2iz0w?FN3me7&wSAYzG=I9(h;pqM#~PWe*hrcNw4EQDYUAHxdl%&LX)SL(Lcu}PQrQsql59b*9s{M zdl^=v0iRBHk;t4%OYtDaynO_GmuI6j9eq^E#Jh$>z6773!80A%`#Vp)>%8&=;>y@# zWJ=7PO6@+|$+S)td2HI^l^glJKXX~zx{{t0%X(-zANB^KXMs_DTr;AL;18iovbYxp z2g>Owg}IVyI-{y`H&^jj*#mjkSH(@RtYCcsdTZ6HJi~&B`wVljWV(VMo#pZ(Rl>|Q zdezSZt1|I(o%_|_FAL>!^6Cs* zdme=6lgl_rHqx9~u6If2I5bslRu`|7rNUp^(jYMTt~-Jkux00J+QQX&S#SMzQH$Za zYpP$eom~088@H>mp|@Z1NLq6Sqwo>AF}l3`+xL153@P)Gm}%t244-^$FoQOh);v|x z;pv4rCmTgOx)$=QQ8r8jG4RT!4aYWd>fytyt!xX?KpD)sJX$Z}7fk#*7 ziPZq1t7G@gu=E&eJ(_&sp|;ECLZJ}tj0n|wl1`vpm%YMzR+%W*(T|`eA;KV{nB~b%z>|V}yZ{CsH#kLEr%Q&O7x`)GL`IAq9x$!;zRRRuMVho0H?jT7?)i$b!{DGNZcFzg13gUS%^&7DK5jH`mL-Ew{_zABa!q^9F0Nx`Y($@T0AawYDb+wLsi;3wN_ z{iutv0m##bl-|NVnrY9cfMJezAwYw5>_c~@%om*sS#v0FA(*DoV!Z^USD9-2XIgph z-(LpntG^soUwP|c=X5tT?_MnYbg{Y@fXbz{5gnPf#t9$?MfM}fE}m!mc_&?4tUVT{0PsldL{BIk(I!^2G9;PtF=QxVEpnn=*{F!I7Q7C|$m%UAS2R z+HQQp4k=F*;M;}Z?_NNe_u*KP6|8J zhVQoeI}_L9GS03R;f~Y*R1|5wJpQ?a`btg-fU!ROELD7tnU(HO4KpG{swAE)qhxp% z5TaS_vVU%NMnABkkyr_uHI3IC)4Qm(6H9r9*`R)NlUCQeEs<)8onBf_^sH3WtE#va zs5mS^`rNmsY<5+~@S41miO10IbLaiTLu`izl3X zBxTZgNB3kO^WfU@$cRAX;c_**|~olS25V{k)R>*+h$3?qRq z1JLfWebj@oWosG+A{FajT;8doCi3*?mf6cq%9Zr%4C-+cY!kaK=?L~ToNBVmrke`q zzY#&j#CdJc^nCf^Lod<6 zDW~I-dS)1K&>(l|0pqOB+xP^oxZxF1&Cp4;4S@8BU!0`FE70SbYPyO;^trgBo6C3| zm1P`;i2 zLpjDB+mw^bprv6qQ3Y2FwZ5j|ow1n!a(a#PlhLh+Qs$+WOe|M9j`!O6C`0~Q#pYv) zjO{t`VlLg9uW5sGS)A85iQRR4y?J!JYE4Jbvj(}j`3cXut7)M1mPK661i&ZR{-Sf& zWDO-;;_(Vz4ln_(^$Xi$E+lI=j}+7nN3PC`8-Jdhn0(>VMk{WY43IU%{!Ey0(8&r|1DW$;*J_9xHYVj1Thk!L%)_DxwBTYC*S{?hlx299ya9 zgn5}?ig?oCH7p-Cru_pSMXdCSw*^}-Cf-umvjPHx;NJYl+QzgO5VhM%)=La}4|fwx9KZHm|pN4GIZR&)~PFXV6*e^)AK6?aJdp zB8$pBIoLb|*d?2$xpmlg2Ve4rX@>2jUr}A3#HXi@G^ars;7GV!eX5kMg|+i0WvI$a z2r=T2ZrwY?%T`oOJ(BG|++1kw<*&N?t1h;`(zQKSjT3p`$cXzCbZxpTqKw)V?vK{T zx0LI;r^+4G#4<;jf`}*}uU1aK;RY{g6ZX2Tu9h@O&CVWNawiA0-mKqaKQtu&kcjy% zJ4K#V-Nm!?b4Tcj082CMNG6WGA8dASxu`uur8Lf#7JFTDJTOe@V0%fiBb7?ZjpCYJj^hQ(w=zPLBMj!wp0MxW&&XEyv^zHb7z^i-RYQ95A(7V77)51j|E4g|Tje_{#=Q3G# zL+o}(@-5H5O_@phyph$*bQzcv*bWijKfK;DqROIKyziD9dSLV=}aW`(jFu? z*}h(l{OH9iBOoMPwpnw6SwxMM1W}*{xT1SX(s_Hdb;D|ep|rxatA4p?_w+$3GM@go zH$Y=Jpq?1F51?Ge!|1{%%#MXh!g3o;ON!_;bF_|Hl;(V(GAGuGiwH!DOVg2WZsU7u zy&Ls7hU)TaT^pi}{3X;CutreebESQeFmzFgyFr`l!B8fLSwc_7n!Fe432XMLfp|>inWp|oFeGjoMO785`nu&X*UQ zhUAzc?>xB}-!o@y6T9zW0`@$gKR0J}CO(^k0=h5-0fZkWU;a4~mO!{iD{b3KTo@&= zpa%)Q13f4SYIE;Tb#q4=C60pl^`VPd$}v&)bD;`@fFV27d8i9DqniWIK(rp^{$bOLB2c2vpuOMbOrtSfVo+h z!8dArJ5C3-4Q4?1E0d^Yr22$GJ#iDLc6%~9n@x&+YN7Ip$m^S=JHyiDeG3u=jCMgV z=LM$gcG$)P8j7F7S~3R%=-jm&dH-Zrk=G!I69)BX+n`Lg9hzs(L;HzOAMeM&ny{WP zNE`GZt`rzQNamWgaaWSh5JBDb~*2B5kP zYb#|blyx4;TGunK@fpZEJN^2uCsGC3jp2F?4bZtBeS6nDpphF01i-9Yeim`3J^%*4k(LhSubbEAKD%xhXf^5t8da<8vG8ayMzlJuzJn zW-kwhZY+joTKy3)xxShmpq3G%P$qVPbN(}v*t6@U0SWVM)Wx&o`<%Lw$TZ_x9LLqP z>fK%-2_xqwK%q;5mamWG+@XE25L2AHhToXdx&+EetoHh? zwsm3$2ihtUd|-9T$I>-?bDm~Wp?pJ9H$?_Qdw0O_ z%p7P{wE#=9DhBR+%1VIynl2Nn5|TW{qHxHtTC`#{`(X~Uol>DWc<7HSU9~z-#2%wR z@bDC$-iA?ZGo5A`xQDC-6+Q5ned{TO;-r{4jo<;b6pSk@J-o~A#JYmj zJd{VVUfHWsjG80niy}J>qX>Hk)=5vDhUsCXh)eh0Ls{ih(F3f9Xg9BDods=9yy`xT zYWNsPJ|eGIatnL2o{>Bbts>N+9mG9bHRrV%P^~UmmC?trG)Ed##^Nvrm^+9xL)!5~ zwUs%PuY$tFt8mCNN&WPb~f5li=QU}a^<#|E(&#(lh7$att&l}Xt* z&P4Tw;;d~Rp1hD@6lv>ay;G>DQB$~N{H%}D6CI3Cw_319Ap}G0B_?TU&LX0Wcd#mI zx!iKc2k$w~G0{O>i)oMuW#D*LJ6QilKJYllp|UsoJJw_^tMpxRgt&REI~~FzQxV

c-%Td&_W7PT4RFUIQ^E0p!_hgXQlo!zx?5={{qK)!b)UgcIoRuHnTgA6BGDR%_ z5rqc}50FY;;P7DdQQvOl-W*-MT+;wl0s<~#)Ikwb1 zr#Hm0^+P?xVYk+>?)Q>_GQedHawyavr{hvTz=V+x^klfi%r2}d@F4i5YMOwgcZWD> zq!wAUMUPZb4peSqWF8XXm^f&WqTge3MrHewZ35HfV`)Z2DH3*j1lh3Jw3)Oy7+EJB zF)yfhxHqm_Rl$`LMeU%$8mc3`{mgsbfddE<42*f!4MXM(LpBwV#UaVU&-U{03YwLY zK_JU2OW}ON?8=L{K$9}N!=ecZD%b&*IQmAnbbD9fi72}r%H@JM0%<8Q_Fl4({LsYP6YENu zYim{16V!#`dC#6I@Qt!7r#eb_UFci5Zi^XQcRx)coR*k|NqgOG+DG&ZEGA?~+eBGh z&qX>b?-#T=wXV@dc9oB!Re}(;=`#%gHbtW}`T4Whcuf6 zl>>Hv`}mAXJfNat4ys#+tRAHq@v1@XqPyo*zzgQ8X&$*@SS$6R_*2k^*0L}cXFbNJ z!ll!k!o?%;hk&-bysKv_rlvA@?(w;``SwcD$7l5tY3{qN5jHV)F1v0yyQ}rf)Vu8~ zS@{l*l+r-6M%0(7L?td8#vKecG{i_@JhJ$MF1w^kKhJxp`^hI~XBNS%j%rBoYGDFCv{g>^eASPS(`BMQ7TvI=PXG+-7a z!Ehre5LvHc5-{Ul+Gh*RV$k5Kj#M@U8^-4HENeNli-w{L+<{nroPk{c?6iuJ(iNxy zYHi*4RPE9Zo|XA-jVON7Sm`BffR1y0ps#WLJeyQE9Mw#8v%k8$b~?z*3gSNOH)L1~V(O&9Q2|42$wS8FBbx&*AlZ)>=1Y2%b|v zvdf>n$_92X5H+tLdrPW7k&ZN8?`OfLn{}7z4dg&E4_gh}Ld*<7w_*)!qOhOCI(;@` zU;Ud9E@Zi&lA|b8GdGwIo=@g!AU(y|?cHI>b6gCj2H0K*G{^+0HZK)t*u21B;Ajs?Zn8Go!a)@wCwqiK3i=kqVWV9HPkk!OJKg zK*Ja=s(GK|Z8f!5+t<7A0JJp**%G`f*SnWxX|o-$Dw?;!R2g3zcI$Gh4{=lON!^{s%M{GTa3 zGuJ0O%gpA8EEj=oDe9myB?uto`E!Ot-AHGWNAF7x&sOJ%B+3S4(cO9Agm>aYCd+Ix zYuL}Q0ovZ(KalR(cIBFomqu0Jmhq%y8-|%GjUhm~7jWzS%6&=tH0^n++Yj!9rpM8c zbAXT^*c9DeRl)JnRvY_iEp{kP&fxC04DzWxQR!Q*RttnOAMS>7=j!9oSb5Fag^cwu z?cubp6bFD=6q_T>xEaZcrp-k-tUF&j`&T~Yqk_Fw{4TQYW-J8B@#9nWS(bn)p{a7c zWrO4@QEo%sTSxuR`q8Gw#zCd>cv93eSo&7lw{=_nS!y80c}XG1mgTcSVdqiBzCMBS z3U(+IraryCPl`IdY*%I;S(JjZrAmDTtqRe2QdAD9k9C6f4qYZ04EG^2Z{|$tam2Cr=ovKl}Oszd|O*ft`|*5k9N-Z5_O| z7pZ|>c~9OSH{D58LY}bE`kcyqT{}|IAY5MUW^x!YG*1<6DcPRJ7zTY0wE$r)pefb? zc4Ii#ww>Ec$ZWcUCFsUAXp@Ro;7&V6q(q@B_@)K+Kw*cKZaX?D%hv)=wfEXXo7a=t zQCsaAn;b^|u~B!+bAf^SNjn;{O`+VXM5~f^)9od~u5@0REk?C&)nU=ldpDa*u3?YF z_N*-}|3qa$buMZLiI*|bz1h&olurq!+Sjo{%=vyH-z#kh{mz!1Cc*_V^|Z@JOMJs z&Em_HH^vO($|FR_m(fVHv3ZqBUz5gkDK#I+!_VzBVTZtJI6%9ie+@?aS;!30?4DiI z*BK_FjUxR5q`{QDm!l9T7Xl~eZ3yv6ZP{oXO9uP{Cj+Nr(DwwQqVV;-6jo<)n~p#rPRxuOKrK^TH1IYIVk* z144}VbFJzQ%80lO#Gdx=*3hf~hLv3xQG#P|7-?b^psv^+N=xB&BPSo4oL@3xDLIH} z7((U9utSQ6&R#csF{(}54hv{6eCY#CXooWq7qvO@x#idx4^ql}ASx1@dUvu_+vgg6 z9W-ITCjn_N@(+*+cH-(Y}Q80*TDQ7$1qT?LL5RSEKqcsHc%va zppZR-f$vNsmDypAmmRgCgNp0fs6>nYA9?Q?71i2p4OWqJ&bi1rN6Cl;K|oN6Vv!0^ zM1p}N7EmO~L4qKHqM)LHpn`&uV<8}jpePv>kSK}-?X@}geeb<}zwWQc=rQ_F|2e~P zMge>8dY)&`HP@VTWl2(EP>PX?XQ}w{T#&mH&!am`Ng9`T2o!{F+d{6KP~W;@+L&8{ z=`JWV913igjqbcP#6JC;(&Fh_PYbr?RrFdSrC@|j@8N5cS{)s{3AQ0Gu|EQwNE_Tn zQPTxN$^(pkE{7uojCEU>1Ky!`Xa@0K$FigT#-j=A(SsU|GKU^Wtzzze0}eivqB)Kc zGm&D?WnFkbiV2yWu7UvU z<#oIwi77GqQ9?$0kp8qg^HEYpiJmy2Scl6Ew_XP`M9`lgP9J9U!dgwoun9IXC9M(f zM0m%xzKBS0Ec?5CrEOk#8Qn>K$QN|3P86DyN=d(%6peJZ6-{;5I7BRkOKz~OjZU1+ zsLX4ptkdVqoOT2RndvajlDDdvY}Q*5=U~{BGbZ@3Ru>Jw;Z9RdD^tX^sGM1 z*%yES%98myXdaO{q%;XqnMRnk98O@AX)E)npRgxtDb;NA3m#?iAC-+gNv4x@FRZXX z`8SGA}oO`4$tsh9nzGif|*X?XS!|VjY!v~;Ov?XO>nJf!9JtxC#5BL8cdR~ z5`LgeLoBA)O}NN6+~&mKPQA&+OWq47_!Ddm9419R3o@kIYYkk9hq}lom$c8c=r1p? zby3zrRHnG$r`7i06;H4k2r

JW&`{AgnetjOMvca3e1HpetRNU{W8iQJ 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

v!dUNetz+#zYp&dH+U55{?}OZ@$Ub&~ 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 Iv}^+Y2Ln4ip8x;= literal 0 HcmV?d00001 diff --git a/docu/Concepts/Snippets/images/iota.drawio b/docu/Concepts/Snippets/images/iota.drawio new file mode 100644 index 000000000..5e491aefa --- /dev/null +++ b/docu/Concepts/Snippets/images/iota.drawio @@ -0,0 +1 @@ +zVlLc+MoEP41Os6U9bRz9GMym9qaSmqTqp3sjUjYYoOEF6HYmV+/DQJLCHnieJRkLjK0oNV099cP7IXLYv+Vo23+jWWYesEk23vhyguCaRLAUxKeNWEaN4QNJ1lD8lvCLfmBNXGiqTXJcGUtFIxRQbY2MWVliVNh0RDnbGcvWzNqf3WLNtgh3KaIutS/SSbyhjoLpi39D0w2ufmyn1w0bwpkFuuTVDnK2K5DCr944ZIzJppRsV9iKnVn9NLsuzzy9iAYx6U4aYNW/BOitT7c1fXdXAsnns2JYRcoFyYLkHgriSllNTBZ7HIi8O0WpZK4A3MDLRcFhZkPQ1cgLeMT5gLvOyQt4FfMCiz4MyzRb8MLrSztLWa6a1XvG33mHbXPNA1pa28OnFuFwEDr5Ih+Ekc/4NIZydgdR2WFUkFY6WiLs7rMsGQxeRcNzWwF+ZMTNZSMoaGpoyHXe8psLmGn3AZVFUltFeA9Ed8743upuc+xnq32WpFq8mwmJQj6XS0EI+m53hibebtVzay9N5gTOC3mmnjUDhWreYptfxCIb7BZpjGEMytquNbqmCMesIahcUyRIE92rBkykf7CDSMg8TFnCKKekZvj6E3d0NDj44c9r7roMWp04DBSDnM49Wk+NHNR9td8dbW6/uwFCSokYihoaYEoga8b0kYczNZxNsCMsN2L44r8QA9qgbT0VoqsDhEvvHgl+daCVU2a8ZvPbEoYU7yWrCQQCUT/uSYLJr9eAaJJubmTk9WnaBwkB7OoB+WZC2V/wHmCEaBseHTMQEklcKnyKzxeYZREvXrgMFIUi5FeWj5U8qcgFFeClZDRg0tI2WvCCwiefbuaxLPlLMVV9XJgfUDp40aF4utaUFIa646RknrYCEI34gZDZhoj4poA+ysR97Rg91sHtrCf308NbFEQfp5Mkwswmnr6w6YcP8wFoWO4GzCUDCJtMVEddXwQAPMS0VvBuCpQPxAA8cv+7ydvVJMF0Xv5/0CyNzb8TTDhJOnpudm+Xza8IQzcnsPki9w3+eKfGlY8Um8ZevOIy8zRrADm7SJD3BrCn6woVJbJCIbnN8gTgJRKfkyW6ZMrJpDsHykmaQ6DEqmfDBfS9GoPYKAC78FSN7uaZ4odQEgeAJhzxYsfNh2SlxcsFZEfOD3Ai0Z+QTaSXY7kkzVrHo2ozWJUK0kKpBplpAQLLzun3raHfrHgqQRnj3jJKJPFbSmlCxdrQmmPpEsYIMROQRMca10YaGhNFbRykkn9QIVlNTxjxJfIdsckdPPrJHZh5ffd9qwA45ajxhCgo9LSfvJfLXv1RlOfqkZVc+lajCtjmgXGfGvpEouldIF/cSZNrxtKGFk95WSHaZpj5XfSl1tHcz1LOWrHWRoxj/jLGd2pY7gB8x4vluLYTtzRicnCH6OoDd2i9tXZwvSnbU9633kz3J8OpokXU445sZVyZh+ZYXqZPj67nZzYjKK3aydNRfczk787CCIbBLE/AILZgBnH6BjCETqGzn3L4Xrl3uvergzftZyJg5mLg/BDK60eDpJ+bDoXB3G/YhsRB0P9BmSlkqm8s8w5K0kqHeByxKLCXJ6kuFSXa871SQFVAz3WvgxVEr8EvCjqV8ixC7zJT/zmFcCDaXt13xis/f8j/PI/ \ No newline at end of file diff --git a/docu/Concepts/Snippets/images/iota.png b/docu/Concepts/Snippets/images/iota.png new file mode 100644 index 0000000000000000000000000000000000000000..b8f7fb7e5b1655a5404c8381bb8e4f46e99835f1 GIT binary patch literal 48376 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 literal 0 HcmV?d00001 From 70c564e2e30310adf8a47aab3f5e73a6baa74083 Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 1 Sep 2021 13:52:15 +0200 Subject: [PATCH 27/31] fix: lint --- frontend/src/views/Pages/Register.vue | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/frontend/src/views/Pages/Register.vue b/frontend/src/views/Pages/Register.vue index 7d35798ca..f8e7eefd0 100755 --- a/frontend/src/views/Pages/Register.vue +++ b/frontend/src/views/Pages/Register.vue @@ -188,9 +188,8 @@ export default { passwordRepeat: '', }, agree: false, - }, - this.selected = null, - + } + this.selected = null this.$nextTick(() => { this.$refs.observer.reset() }) From 602bd451f7694888e5d08a1916843e84d96c6b77 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Wed, 1 Sep 2021 11:57:34 +0000 Subject: [PATCH 28/31] multiplicate gdt entry with 100 to get expected gdt in cent --- .../src/Template/StateBalances/overview_gdt.ctp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/community_server/src/Template/StateBalances/overview_gdt.ctp b/community_server/src/Template/StateBalances/overview_gdt.ctp index eb67626b0..f076e26c8 100644 --- a/community_server/src/Template/StateBalances/overview_gdt.ctp +++ b/community_server/src/Template/StateBalances/overview_gdt.ctp @@ -21,7 +21,7 @@ $this->assign('title', __('GDT Kontoübersicht')); $header = '

' . __('Zur Verfügung: ') . '

'; if($gdtSum > 0){ - $header .= '

'.$this->element('printGDT', ['number' => $gdtSum]).'

'; + $header .= '

'.$this->element('printGDT', ['number' => $gdtSum*100.0]).'

'; } if($moreEntrysAsShown) { $header .= ''. __('Nur die letzten 100 Einträge werden angezeigt!') . ''; @@ -56,7 +56,7 @@ $this->assign('header', $header); Number->format($entry['factor2']) ?>

-
element('printGDT', ['number' => $entry['gdt']]) ?>
+
element('printGDT', ['number' => $entry['gdt']*100.0]) ?>
@@ -98,7 +98,7 @@ $this->assign('header', $header); Number->format($gdtEntry['factor2']) ?> -
element('printGDT', ['number' => $gdtEntry['gdt']]) ?>
+
element('printGDT', ['number' => $gdtEntry['gdt'] * 100.0]) ?>
From aed082754926ad7acaaf2d539922d7375ba7a349 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 2 Sep 2021 07:51:56 +0200 Subject: [PATCH 29/31] fix: Flaky Test for Logout --- frontend/src/views/Layout/DashboardLayout_gdd.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js b/frontend/src/views/Layout/DashboardLayout_gdd.spec.js index 12a788a4b..b10e0fc91 100644 --- a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js +++ b/frontend/src/views/Layout/DashboardLayout_gdd.spec.js @@ -131,7 +131,7 @@ describe('DashboardLayoutGdd', () => { await flushPromises() }) - it('calls the API', async () => { + it('calls the API', () => { expect(apolloMock).toBeCalled() }) From 4bed49a97e9af1b0d1a4afefe61800d193600d3d Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 2 Sep 2021 08:06:04 +0200 Subject: [PATCH 30/31] mock in before each block --- frontend/src/views/Layout/DashboardLayout_gdd.spec.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js b/frontend/src/views/Layout/DashboardLayout_gdd.spec.js index b10e0fc91..bf866492e 100644 --- a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js +++ b/frontend/src/views/Layout/DashboardLayout_gdd.spec.js @@ -127,6 +127,11 @@ describe('DashboardLayoutGdd', () => { describe('logout', () => { beforeEach(async () => { + await apolloMock.mockResolvedValue({ + data: { + logout: 'success', + }, + }) await wrapper.findComponent({ name: 'sidebar' }).vm.$emit('logout') await flushPromises() }) From fc2af656db90180fdac14ae20a0b33443a3e8962 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 2 Sep 2021 08:29:13 +0200 Subject: [PATCH 31/31] try async call --- frontend/src/views/Layout/DashboardLayout_gdd.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js b/frontend/src/views/Layout/DashboardLayout_gdd.spec.js index bf866492e..614ddf9c4 100644 --- a/frontend/src/views/Layout/DashboardLayout_gdd.spec.js +++ b/frontend/src/views/Layout/DashboardLayout_gdd.spec.js @@ -136,8 +136,8 @@ describe('DashboardLayoutGdd', () => { await flushPromises() }) - it('calls the API', () => { - expect(apolloMock).toBeCalled() + it('calls the API', async () => { + await expect(apolloMock).toBeCalled() }) it('dispatches logout to store', () => {