From 9a89459bcf54afc9bcea807b0cbbbdcf8a585f52 Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 17 Mar 2019 18:41:27 +0100 Subject: [PATCH] Inplement about user property; Add "me" page Hide error element if empty --- src/router/routes.js | 13 +++++ src/scss/components/_general.scss | 4 ++ src/store/modules/auth.js | 23 +++++---- src/store/modules/users.js | 4 +- src/vue/App.vue | 1 - src/vue/Header.vue | 8 ++- src/vue/pages/me/Me.vue | 79 +++++++++++++++++++++++++++++ src/vue/pages/settings/Settings.vue | 8 +-- src/vue/pages/viewpost/ViewPost.vue | 23 ++------- src/vue/ui/TextAreaInputField.vue | 3 +- 10 files changed, 127 insertions(+), 39 deletions(-) create mode 100644 src/vue/pages/me/Me.vue diff --git a/src/router/routes.js b/src/router/routes.js index 6320692..9da3f60 100644 --- a/src/router/routes.js +++ b/src/router/routes.js @@ -12,6 +12,7 @@ import PasswordReset from '../vue/pages/forgotpassword/ForgotPassword'; import ViewPost from '../vue/pages/viewpost/ViewPost'; import ViewUser from '../vue/pages/viewuser/ViewUser'; import Search from '../vue/pages/search/Search'; +import Me from '../vue/pages/me/Me'; /** * Responsible for trying to authenticate the user via a existing api-key. @@ -154,6 +155,18 @@ export default [ path: '/search', component: Search }, + { + path: '/me', + component: Me, + beforeEnter(to, from, next) { + setTitle('Me'); + + /** + * Check if user is logged in. + */ + authenticate().then(() => next()).catch(() => next('/login')); + } + }, // 404 catcher {path: '*', redirect: '/'} diff --git a/src/scss/components/_general.scss b/src/scss/components/_general.scss index b8c1288..3109494 100644 --- a/src/scss/components/_general.scss +++ b/src/scss/components/_general.scss @@ -9,4 +9,8 @@ &:not(:empty){ margin-bottom: 0.75em; } + + &:empty { + display: none; + } } diff --git a/src/store/modules/auth.js b/src/store/modules/auth.js index 6a12461..a8aa855 100644 --- a/src/store/modules/auth.js +++ b/src/store/modules/auth.js @@ -39,7 +39,7 @@ export const auth = { query: { operation: 'login', vars: {username, password}, - fields: ['apikey', 'email', 'permissions', 'id', 'fullname'] + fields: ['apikey', 'email', 'permissions', 'id', 'fullname', 'about'] } }).then(({errors, data}) => { @@ -47,7 +47,7 @@ export const auth = { if (errors && errors.length) { throw errors[0].message; } else { - const {apikey, id, email, fullname, permissions} = data.login; + const {apikey, id, email, fullname, permissions, about} = data.login; state.apikey = apikey; state.user = { @@ -55,7 +55,8 @@ export const auth = { id, permissions, username, - fullname + fullname, + about }; // Save apikey and return loaded user @@ -81,7 +82,7 @@ export const auth = { query: { operation: 'login', vars: {apikey}, - fields: ['email', 'permissions', 'id', 'fullname', 'username'] + fields: ['email', 'permissions', 'id', 'fullname', 'username', 'about'] } }).then(({errors, data}) => { @@ -94,13 +95,14 @@ export const auth = { } else { // Save to current state - const {id, email, fullname, username, permissions} = data.login; + const {id, email, fullname, username, permissions, about} = data.login; state.user = { email, id, permissions, username, - fullname + fullname, + about }; return state.user; @@ -142,16 +144,16 @@ export const auth = { * @param fullname New Fullname * @param password New Password */ - async updateCredentials({state}, {email, fullname, password}) { + async updateProfileData({state}, {about, email, fullname, password}) { return this.dispatch('graphql', { query: { operation: 'updateUser', vars: { - email, fullname, password, + email, fullname, password, about, id: state.user.id, apikey: state.apikey }, - fields: ['email', 'fullname', 'permissions'] + fields: ['email', 'fullname', 'permissions', 'about'] } }).then(({errors, data}) => { @@ -161,9 +163,10 @@ export const auth = { } else { // Update changes in current state - const {email, fullname, permissions} = data.updateUser; + const {email, fullname, permissions, about} = data.updateUser; state.user = { ...state.user, + about, email, fullname, permissions diff --git a/src/store/modules/users.js b/src/store/modules/users.js index 7ee0759..5bdbbe6 100644 --- a/src/store/modules/users.js +++ b/src/store/modules/users.js @@ -18,7 +18,7 @@ export const users = { query: { operation: 'getAllUsers', vars: {apikey}, - fields: ['id', 'username', 'fullname', 'permissions', 'deactivated', 'email'] + fields: ['id', 'username', 'fullname', 'permissions', 'deactivated', 'email', 'about'] } }).then(({errors, data: {getAllUsers}}) => { @@ -50,7 +50,7 @@ export const users = { query: { operation: 'user', vars: {id, apikey}, - fields: ['id', 'username', 'fullname', 'permissions', 'deactivated', 'email'] + fields: ['id', 'username', 'fullname', 'permissions', 'deactivated', 'email', 'about'] } }).then(({errors, data: {user}}) => { diff --git a/src/vue/App.vue b/src/vue/App.vue index 68aa94f..4d8e4da 100644 --- a/src/vue/App.vue +++ b/src/vue/App.vue @@ -56,7 +56,6 @@ textarea, input, [contenteditable] { - font-family: $font-family; outline: none; border: none; background: transparent; diff --git a/src/vue/Header.vue b/src/vue/Header.vue index 3c1d098..8922bed 100644 --- a/src/vue/Header.vue +++ b/src/vue/Header.vue @@ -1,5 +1,5 @@