branch bow-v2-go updated (a4eecce -> 16e7009)
This is an automated email from the git hooks/post-receive script. New change to branch bow-v2-go in repository bow. See https://gitlab.nuiton.org/chorem/bow.git from a4eecce debug d'ajout de la recherche/suggestion dans la barre du navigateur new 16e7009 opensearch avec bow-token car les cookies ne sont pas envoyes debut page preference (bookmarklet add) correction suppression cookie au logout (probleme dans le header logout/login :() The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 16e7009aea27a5cf220026dfa9f648ffd304a00f Author: Benjamin <poussin@codelutin.com> Date: Thu Apr 23 03:02:12 2020 +0200 opensearch avec bow-token car les cookies ne sont pas envoyes debut page preference (bookmarklet add) correction suppression cookie au logout (probleme dans le header logout/login :() Summary of changes: pkg/http/userResource.go | 6 ++-- web/public/index.html | 15 +++++++-- web/src/App.vue | 29 ++++++++++++++--- web/src/components/layout/Header.vue | 61 +++++++++++++++++++----------------- web/src/main.js | 1 + web/src/router/index.js | 6 ++++ web/src/utils/Store.js | 2 +- web/src/views/Home.vue | 4 +-- web/src/views/Preferences.vue | 31 ++++++++++++++++++ 9 files changed, 114 insertions(+), 41 deletions(-) create mode 100644 web/src/views/Preferences.vue -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch bow-v2-go in repository bow. See https://gitlab.nuiton.org/chorem/bow.git commit 16e7009aea27a5cf220026dfa9f648ffd304a00f Author: Benjamin <poussin@codelutin.com> Date: Thu Apr 23 03:02:12 2020 +0200 opensearch avec bow-token car les cookies ne sont pas envoyes debut page preference (bookmarklet add) correction suppression cookie au logout (probleme dans le header logout/login :() --- pkg/http/userResource.go | 6 ++-- web/public/index.html | 15 +++++++-- web/src/App.vue | 29 ++++++++++++++--- web/src/components/layout/Header.vue | 61 +++++++++++++++++++----------------- web/src/main.js | 1 + web/src/router/index.js | 6 ++++ web/src/utils/Store.js | 2 +- web/src/views/Home.vue | 4 +-- web/src/views/Preferences.vue | 31 ++++++++++++++++++ 9 files changed, 114 insertions(+), 41 deletions(-) diff --git a/pkg/http/userResource.go b/pkg/http/userResource.go index 33399ef..c123e79 100644 --- a/pkg/http/userResource.go +++ b/pkg/http/userResource.go @@ -20,7 +20,7 @@ import ( deleteAuth remove cookie authentication */ func deleteAuth(w http.ResponseWriter, r *http.Request) { - cookie := http.Cookie{Name: constant.Token, Value: "", HttpOnly: true, MaxAge: 0} + cookie := http.Cookie{Name: constant.Token, Value: "", Path: "/", HttpOnly: false, Expires: time.Unix(0, 0)} http.SetCookie(w, &cookie) } @@ -47,7 +47,7 @@ func createAuth(w http.ResponseWriter, r *http.Request) { utils.Throw(w, utils.NewHTTPError500(err, pseudoUser)) return } - +log.Println(userJSON) var user model.BowUser err = json.Unmarshal([]byte(userJSON), &user) if err != nil { @@ -63,7 +63,7 @@ func createAuth(w http.ResponseWriter, r *http.Request) { w.Header().Add(constant.TokenHeader, token) expiration := time.Now().AddDate(10, 0, 0) // le cookie est valide 10ans :) - cookieToken := http.Cookie{Name: constant.Token, Value: token, Path: "/", Expires: expiration, HttpOnly: true} + cookieToken := http.Cookie{Name: constant.Token, Value: token, Path: "/", Expires: expiration, HttpOnly: false} http.SetCookie(w, &cookieToken) cookieUser := http.Cookie{Name: constant.User, Value: url.PathEscape(userJSON), Path: "/", Expires: expiration, HttpOnly: false} http.SetCookie(w, &cookieUser) diff --git a/web/public/index.html b/web/public/index.html index f3fd181..a2ba798 100644 --- a/web/public/index.html +++ b/web/public/index.html @@ -4,9 +4,20 @@ <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> - <link rel="icon" href="<%= BASE_URL %>favicon.png"> - <link title="bow" type="application/opensearchdescription+xml" rel="search" href="<%= VUE_APP_BOW_PUBLIC_URL %>/api/v1/opensearch"> <title>Bow - <%= htmlWebpackPlugin.options.title %></title> + <!-- + Allows control over where resources are loaded from. + Place as early in the <head> as possible, as the tag + only applies to resources that are declared after it. + --> + <!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self'"> --> + <link rel="icon" href="<%= BASE_URL %>favicon.png"> + <!-- Completely opt out of DNS prefetching by setting to "off" --> + <meta http-equiv="x-dns-prefetch-control" content="off"> + <!-- Allows control over how referrer information is passed --> + <meta name="referrer" content="no-referrer"> + <!-- Name of web application (only should be used if the website is used as an app) --> + <meta name="application-name" content="Bow"> </head> <body> <noscript> diff --git a/web/src/App.vue b/web/src/App.vue index 74518cc..5d209a4 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -13,16 +13,35 @@ <script> import { Component, Vue } from 'vue-property-decorator' -import Footer from './components/layout/Footer.vue'; -import Header from './components/layout/Header.vue'; -import Sidebar from './components/layout/Sidebar.vue'; +import Footer from './components/layout/Footer.vue' +import Header from './components/layout/Header.vue' +import Sidebar from './components/layout/Sidebar.vue' @Component({ name: 'App', components: { Header, Footer, Sidebar } }) -class App extends Vue {} -export default App; +class App extends Vue { + insertOpenSearch() { + let token = this.$store.getCookie('bow-token') + if (token) { + // <link title="bow" type="application/opensearchdescription+xml" rel="search" href="<%= VUE_APP_BOW_PUBLIC_API_URL %>/api/v1/opensearch"> + let link = document.createElement('link') + link.id = 'opensearch' + link.title = 'bow' + link.type = 'application/opensearchdescription+xml' + link.rel = 'search' + link.href = `${location.protocol}//${location.hostname}:8000/api/v1/opensearch?bow-token=${token}` + document.head.appendChild(link) + } + } + + beforeMount() { + console.log('beforeMounted App') + this.insertOpenSearch() + } +} +export default App </script> <style lang="less"> diff --git a/web/src/components/layout/Header.vue b/web/src/components/layout/Header.vue index a23d5a7..1f1fb89 100644 --- a/web/src/components/layout/Header.vue +++ b/web/src/components/layout/Header.vue @@ -1,14 +1,16 @@ <template> <header> <router-link to="/" class="header-logo"> - <img alt="Bow logo" src="../../assets/img/logos/bow-text.svg"> + <img alt="Bow logo" src="../../assets/img/logos/bow-text.svg" /> </router-link> <SearchInput></SearchInput> <div id="header-user-infos"> - <span v-if="user"> - {{ this.user.login }} (bow user since {{ new Date(this.user.creationdate).getFullYear() }}) + <span v-if="token"> + <router-link to="/preferences"> + {{ this.user.login }} (bow user since {{ new Date(this.user.creationdate).getFullYear() }}) + </router-link> <button @click="logout">Logout</button> </span> <span v-else> @@ -29,25 +31,28 @@ import SearchInput from '@/components/SearchInput' @Component({ name: 'Header', - components: {SearchInput} + components: { SearchInput } }) class Header extends Vue { user = {} + token = '' logout() { - this.$fetch.delete(`/users/${this.user.id}/auth`).then( - () => this.$router.push({ name: 'Login'}) - ) + this.$fetch + .delete(`/users/${this.user.id}/auth`) + .then(() => this.$router.push({ name: 'Login' })) } beforeMount() { console.log('beforeMounted Header') this.user = this.$store.get('bow-user') + this.token = this.$store.getCookie('bow-token') } // beforeUpdate() { // console.log('beforeUpdate Header') // this.user = this.$store.get('bow-user') + // this.token = this.$store.getCookie('bow-token') // } } @@ -55,32 +60,32 @@ export default Header </script> <style scoped lang="less"> - header { - display: flex; - flex-direction: row; - align-items: center; +header { + display: flex; + flex-direction: row; + align-items: center; - height: var(--header-height); + height: var(--header-height); - border-bottom: 1px solid #EEE; + border-bottom: 1px solid #eee; - & > a, - & > div { - flex: 1; - height: 100%; + & > a, + & > div { + flex: 1; + height: 100%; - padding: var(--margin--medium); - } + padding: var(--margin--medium); } +} - .header-logo { - text-align: left; - } +.header-logo { + text-align: left; +} - #header-user-infos { - display: flex; - flex-direction: row; - align-items: center; - justify-content: right; - } +#header-user-infos { + display: flex; + flex-direction: row; + align-items: center; + justify-content: right; +} </style> diff --git a/web/src/main.js b/web/src/main.js index bd62384..c8d3090 100644 --- a/web/src/main.js +++ b/web/src/main.js @@ -13,6 +13,7 @@ Component.registerHooks([ ]) window.BACKEND_URL = 'http://localhost:8000/api/v1' +window.FRONTEND_URL = process.env.BASE_URL // register utilities function on window, Vue and Vue instance if (typeof window !== 'undefined') { diff --git a/web/src/router/index.js b/web/src/router/index.js index 6357cd7..90152d6 100644 --- a/web/src/router/index.js +++ b/web/src/router/index.js @@ -1,6 +1,7 @@ import Vue from 'vue' import VueRouter from 'vue-router' import Login from '../views/Login.vue' +import Preferences from '../views/Preferences.vue' import Home from '../views/Home.vue' import BookmarkEdit from '../views/BookmarkEdit.vue' @@ -12,6 +13,11 @@ const routes = [ name: 'Login', component: Login }, + { + path: '/preferences', + name: 'Preferences', + component: Preferences + }, { path: '/', name: 'Home', diff --git a/web/src/utils/Store.js b/web/src/utils/Store.js index 4c7af18..ee3ea5d 100644 --- a/web/src/utils/Store.js +++ b/web/src/utils/Store.js @@ -5,7 +5,7 @@ If data not found on localStorage, looking for value in cookie let StoreHelper = { get(key) { let value = localStorage.getItem(key) || this.getCookie(key) - return JSON.parse(value) + return value === undefined ? undefined : JSON.parse(value) }, set(key, value) { diff --git a/web/src/views/Home.vue b/web/src/views/Home.vue index 3cd7e0d..96c2bbd 100644 --- a/web/src/views/Home.vue +++ b/web/src/views/Home.vue @@ -18,7 +18,7 @@ import Bookmark from '@/components/Bookmark' @Component({ name: 'Home', - props: ['id', 'tags', 'fulltext', 'query', 'orderby','orderdesc','first'], + props: ['id', 'tags', 'fulltext', 'query', 'orderby', 'orderdesc', 'first'], components: { Bookmark } }) class Home extends Vue { @@ -90,4 +90,4 @@ export default Home padding-left: var(--margin--medium); padding-right: var(--margin--medium); } -</style> \ No newline at end of file +</style> diff --git a/web/src/views/Preferences.vue b/web/src/views/Preferences.vue new file mode 100644 index 0000000..8710f4a --- /dev/null +++ b/web/src/views/Preferences.vue @@ -0,0 +1,31 @@ +<template> + <div class="preferences"> + <div>{{ errorMsg }}</div> + <a :href="bookmarkletAdd">bookmarklet add</a> + </div> +</template> + +<script> +// @ is an alias to /src +import { Component, Vue } from 'vue-property-decorator' + +@Component({ + name: 'Preferences' +}) +class Preferences extends Vue { + + errorMsg = '' + user = {} + bookmarkletAdd=`javascript:document.location='${location.protocol + '//' + location.host}/edit/new?uri='+encodeURIComponent(location.href)+'&description='+encodeURIComponent(document.title + '\\n' + (document.getSelection() || ''))` + + beforeMount() { + console.log('beforeMounted preference') + } + +} + +export default Preferences +</script> + +<style lang="less"> +</style> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm